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 }