using framework_business;
using framework_library;
using System;
using System.Collections;
using System.Configuration;
using System.IO;
using System.Reflection;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class controls_admin_releases : System.Web.UI.UserControl
{
#region methods
///
/// Method to Bind Release Data
///
private void BindReleaseData()
{
try
{
ArrayList releaseList = xData.GetTypedByCriteriaSpecific("recId", typeof(oRelease), "", "", "versionNo DESC");
rptReleases.DataSource = releaseList;
rptReleases.DataBind();
}
catch (Exception ex)
{
exception.HandleException("Releases:", MethodBase.GetCurrentMethod().Name, ex, Session["release"]);
Response.Redirect("/error", false);
}
}
///
/// Populate Form Values
///
///
private void PopulatePageFormValues(ref oRelease _Release)
{
try
{
chkAvailable.Checked = _Release.isAvailable;
edReleaseNotes.Content = _Release.ReleaseNotes;
txtVersionNo.Value = _Release.versionNo;
}
catch (Exception ex)
{
exception.HandleException("Releases:", MethodBase.GetCurrentMethod().Name, ex, 0);
Response.Redirect("/error", false);
}
}
///
/// Save Form Values
///
///
private void SavePageFormValues(ref oRelease _Release)
{
try
{
_Release.isAvailable = chkAvailable.Checked;
_Release.ReleaseNotes = edReleaseNotes.Content.Replace("src=\"/upload/image/", "src=\"" + ConfigurationManager.AppSettings["WebAddy"] + "/upload/image/").Replace("href=\"/upload/file/", "href=\"" + ConfigurationManager.AppSettings["WebAddy"] + "/upload/file/");
_Release.versionNo = txtVersionNo.Value;
_Release.dateUpdated = DateTime.Now;
}
catch (Exception ex)
{
exception.HandleException("Releases:", MethodBase.GetCurrentMethod().Name, ex, 0);
Response.Redirect("/error", false);
}
}
///
/// Method to Toggle Panels
///
///
private void TogglePanels(string panelName)
{
switch (panelName)
{
case "pnlReleasePage":
pnlReleasePage.Visible = true;
pnlReleaseList.Visible = false;
break;
case "pnlReleaseList":
pnlReleasePage.Visible = false;
pnlReleaseList.Visible = true;
break;
}
//clear result
pnlResult.Visible = false;
}
///
/// Upload the release files to cloud service
///
private bool UploadReleaseFiles()
{
bool result = false;
Stream fs;
byte[] releaseData = null;
try
{
DirectoryInfo dir = new DirectoryInfo(Server.MapPath("~/upload/release/" + txtVersionNo.Value + "/"));
if (dir.Exists)
{
foreach (FileInfo file in dir.GetFiles("*.zip"))
{
//Create File Stream
fs = new FileStream(file.FullName, FileMode.Open, FileAccess.Read);
//Create Byte
releaseData = new Byte[fs.Length];
//Read the File from the Memory Stream
fs.Read(releaseData, 0, releaseData.Length);
//Close File Stream
fs.Close();
//save version to cloud
if (xData.SaveVersion(releaseData, txtVersionNo.Value, file.Name))
{ result = true; }
}
}
}
catch (Exception ex)
{
exception.HandleException("Releases:", MethodBase.GetCurrentMethod().Name, ex, Session["release"]);
Response.Redirect("/error", false);
}
finally
{
releaseData = null;
}
return result;
}
#endregion
#region events
///
/// Page Load Event
///
///
///
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (!Page.IsPostBack)
{
BindReleaseData();
if (utils.verifySession("release"))
{
oRelease release = (oRelease)Session["release"];
}
}
}
catch (Exception ex)
{
exception.HandleException("Releases:", MethodBase.GetCurrentMethod().Name, ex, Session["release"]);
Response.Redirect("/error", false);
}
}
///
/// New Release Click
///
///
///
protected void btnNewRelease_Click(object sender, EventArgs e)
{
try
{
//show Content Specific
TogglePanels("pnlReleasePage");
Session["ReleaseId"] = 0;
utils.disposeSession("Release");
oRelease Release = new oRelease();
PopulatePageFormValues(ref Release);
}
catch (Exception ex)
{
exception.HandleException("Releases:", MethodBase.GetCurrentMethod().Name, ex, Session["release"]);
Response.Redirect("/error", false);
}
}
///
/// Edit the Release page
///
///
///
protected void lnkEdit_Click(object sender, EventArgs e)
{
oRelease _Release = new oRelease();
ArrayList catList = new ArrayList();
try
{
if (sender.GetType() == typeof(LinkButton))
{
//
int recId = int.Parse(((LinkButton)sender).CommandArgument);
if (recId > 0)
{
Session["ReleaseId"] = recId;
//get cat
catList = xData.GetTypedByCriteriaSpecific("recId", typeof(oRelease), "recId", recId.ToString(), "", "pal_", true);
//enumerate list
foreach (oRelease cat in catList)
{
//assign object
_Release = cat;
//populate page form
PopulatePageFormValues(ref _Release);
Session["Release"] = _Release;
break;
}
//show Release Form
TogglePanels("pnlReleasePage");
}
}
}
catch (Exception ex)
{
exception.HandleException("Releases:", MethodBase.GetCurrentMethod().Name, ex, Session["release"]);
Response.Redirect("/error", false);
}
}
///
/// Remove the Release
///
///
///
protected void lnkRemove_Click(object sender, EventArgs e)
{
try
{
if (sender.GetType() == typeof(LinkButton))
{
//
int recId = int.Parse(((LinkButton)sender).CommandArgument);
//Delete cat
if (xData.DeleteTyped("recId", recId.ToString(), typeof(oRelease), "pal_", true))
{
//rebind pages grid
BindReleaseData();
pnlResult.Visible = true;
//display successful result
lblResult.Text = "the selected Release was deleted successfully.";
}
}
}
catch (Exception ex)
{
exception.HandleException("Releases:", MethodBase.GetCurrentMethod().Name, ex, Session["release"]);
Response.Redirect("/error", false);
}
}
///
/// Cancel
///
///
///
protected void btnCancel_Click(object sender, EventArgs e)
{
try
{
Session["ReleaseId"] = 0;
utils.disposeSession("Release");
BindReleaseData();
//show list
TogglePanels("pnlReleaseList");
}
catch (Exception ex)
{
exception.HandleException("Releases:", MethodBase.GetCurrentMethod().Name, ex, Session["release"]);
Response.Redirect("/error", false);
}
}
///
/// Save Click
///
///
///
protected void btnSave_Click(object sender, EventArgs e)
{
oRelease Release = new oRelease();
try
{
if (utils.verifySession("Release"))//update mode
{
Release = (oRelease)Session["Release"];
//save form values
SavePageFormValues(ref Release);
if (xData.UpdateTyped("recId", Release.recId.ToString(), typeof(oRelease), Release, "pal_", true))
{
Session["ReleaseId"] = Release.recId;
Session["Release"] = Release;
UploadReleaseFiles();
BindReleaseData();
pnlResult.Visible = true;
lblResult.Text = "your changes were updated successfully.";
}
}
else
{
if (!xData.VerifyExists("recId", typeof(oRelease), "versionNo", txtVersionNo.Value))
{
//save form values
SavePageFormValues(ref Release);
//setup initial values for release
Release.dateSaved = DateTime.Now;
Release.versionDate = DateTime.Now;
Release.recId = xData.SaveTyped("recId", typeof(oRelease), Release, "pal_", true);
if (Release.recId > 0)
{
Session["ReleaseId"] = Release.recId;
Session["Release"] = Release;
UploadReleaseFiles();
BindReleaseData();
PopulatePageFormValues(ref Release);
pnlResult.Visible = true;
lblResult.Text = "the Release was created successfully.";
}
}
else
{
pnlResult.Visible = true;
lblResult.Text = "A release with this version number already exists on the system";
}
}
}
catch (Exception ex)
{
exception.HandleException("Releases:", MethodBase.GetCurrentMethod().Name, ex, Session["release"]);
Response.Redirect("/error", false);
}
}
///
/// File Uploaded event
///
///
///
protected void radReleaseFileUpload_FileUploaded(object sender, Telerik.Web.UI.FileUploadedEventArgs e)
{
try
{
if (txtVersionNo.Value != String.Empty)
{
string uploadPath = Server.MapPath("~/upload/release/" + txtVersionNo.Value + "/");
//validate the folder
utils.validateFolder(uploadPath);
if (File.Exists(uploadPath + e.File.FileName))
File.Delete(uploadPath + e.File.FileName);
//upload file
e.File.SaveAs(uploadPath + e.File.FileName, true);
}
}
catch (Exception ex)
{
exception.HandleException("Releases:", MethodBase.GetCurrentMethod().Name, ex, Session["release"]);
Response.Redirect("/error", false);
}
}
#endregion
}