Default.aspx.cs
上传用户:zhuzg88
上传日期:2018-04-24
资源大小:868k
文件大小:29k
源码类别:

SilverLight

开发平台:

C#

  1. // SilverlightDesktop.Net - http://www.SilverlightDesktop.net
  2. // Copyright (c) 2008
  3. // by SilverlightDesktop.Net
  4. //
  5. // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated 
  6. // documentation files (the "Software"), to deal in the Software without restriction, including without limitation 
  7. // the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and 
  8. // to permit persons to whom the Software is furnished to do so, subject to the following conditions:
  9. //
  10. // The above copyright notice and this permission notice shall be included in all copies or substantial portions 
  11. // of the Software.
  12. //
  13. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 
  14. // TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
  15. //
  16. // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
  17. // DEALINGS IN THE SOFTWARE.
  18. using System;
  19. using System.Collections;
  20. using System.Configuration;
  21. using System.Data;
  22. using System.Linq;
  23. using System.Web;
  24. using System.Web.Security;
  25. using System.Web.UI;
  26. using System.Web.UI.HtmlControls;
  27. using System.Web.UI.WebControls;
  28. using System.Web.UI.WebControls.WebParts;
  29. using System.Xml.Linq;
  30. using System.Net.Mail;
  31. using System.Text;
  32. using System.IO;
  33. using ICSharpCode.SharpZipLib.Zip;
  34. using System.Collections.Generic;
  35. using System.Threading;
  36. using SilverlightDesktopCore.DAL;
  37. public partial class Administration_Default : System.Web.UI.Page
  38. {
  39.     protected void Page_Load(object sender, EventArgs e)
  40.     {
  41.         // Must be a logged in Administrator             
  42.         if (User.Identity.IsAuthenticated)
  43.         {
  44.             FormsIdentity id = (FormsIdentity)User.Identity;
  45.             FormsAuthenticationTicket ticket = id.Ticket;
  46.             if (!(ticket.UserData.ToString() == "Administrators"))
  47.             {
  48.                 Response.Redirect("../Default.aspx");
  49.                 Response.End();
  50.             }
  51.         }
  52.         else
  53.         {
  54.             Response.Redirect("../Default.aspx");
  55.             Response.End();
  56.         }
  57.         if (!Page.IsPostBack)
  58.         {
  59.             mvAdministration.SetActiveView(vwGeneralSettings);
  60.             LoadGeneralSettings();
  61.             LoadAutoLoadModuleList();
  62.             LoadDesktopInstances();
  63.         }
  64.     }
  65.     #region LoadGeneralSettings
  66.     private void LoadGeneralSettings()
  67.     {
  68.         GeneralSettings GeneralSettings = new GeneralSettings();
  69.         lblVersion.Text = GeneralSettings.Version;
  70.         ddlAnonymousLogin.SelectedValue = Convert.ToString(GeneralSettings.AnonymousLogin);
  71.         txtMaxPasswordAttempts.Text = Convert.ToString(GeneralSettings.MaxLoginAttempts);
  72.         txtSMTPEmailServer.Text = GeneralSettings.SMTPServer;
  73.         rbAuthendication.SelectedValue = GeneralSettings.SMTPAuthendication;
  74.         chkSecureAccess.Checked = GeneralSettings.SMTPSecure;
  75.         txtSMTPUsername.Text = GeneralSettings.SMTPUserName;
  76.         txtSMTPPassword.Text = GeneralSettings.SMTPPassword;
  77.         txtSMTPFrom.Text = GeneralSettings.SMTPFromEmail;
  78.     }
  79.     #endregion
  80.     #region Navigation
  81.     protected void AdministrationMenu_MenuItemClick(object sender, MenuEventArgs e)
  82.     {
  83.         switch (e.Item.Value)
  84.         {
  85.             case "General Settings":
  86.                 mvAdministration.SetActiveView(vwGeneralSettings);
  87.                 break;
  88.             case "User Management":
  89.                 mvAdministration.SetActiveView(vwUserManagement);
  90.                 break;
  91.             case "Module Settings":
  92.                 mvAdministration.SetActiveView(vwModuleSettings);
  93.                 break;
  94.             case "Desktops":
  95.                 mvAdministration.SetActiveView(vwDesktops);
  96.                 break;
  97.             case "Application Log":
  98.                 mvAdministration.SetActiveView(vwApplicationLog);
  99.                 break;
  100.         }
  101.     }
  102.     #endregion
  103.     #region Update Settings
  104.     protected void btnUpdateSettings_Click(object sender, EventArgs e)
  105.     {
  106.         try
  107.         {
  108.             GeneralSettings.UpdateAnonymousLogin(Convert.ToBoolean(ddlAnonymousLogin.SelectedValue));
  109.             GeneralSettings.UpdateMaxLoginAttempts(Convert.ToInt32(txtMaxPasswordAttempts.Text.Trim()));
  110.             GeneralSettings.UpdateSMTPServer(txtSMTPEmailServer.Text.Trim());
  111.             GeneralSettings.UpdateSMTPAuthendication(rbAuthendication.SelectedValue);
  112.             GeneralSettings.UpdateSMTPSecure(chkSecureAccess.Checked);
  113.             GeneralSettings.UpdateSMTPUserName(txtSMTPUsername.Text.Trim());
  114.             GeneralSettings.UpdateSMTPPassword(txtSMTPPassword.Text.Trim());
  115.             GeneralSettings.UpdateSMTPFromEmail(txtSMTPFrom.Text.Trim());
  116.         }
  117.         catch (Exception ex)
  118.         {
  119.             lblUpdated.Text = ex.Message;
  120.             return;
  121.         }
  122.         lblUpdated.Text = "Updated!";
  123.     }
  124.     #endregion
  125.     #region Send Test Email
  126.     protected void lnkTestEmail_Click(object sender, EventArgs e)
  127.     {
  128.         // Send Test Email
  129.         // For normal emails use this constructor:
  130.         // SendMail(string MailTo, string Cc, string Bcc, string ReplyTo, string Subject, string Body, string strAttachment)
  131.         string[] arrAttachments = new string[0];
  132.         string strEmailResponse = Email.SendMail(txtSMTPFrom.Text.Trim(), txtSMTPFrom.Text.Trim(), "", "", txtSMTPFrom.Text.Trim(), MailPriority.Normal, "SilverlightDesktop Email", Encoding.UTF8, "A test email sent from SilverlightDesktop",
  133.         arrAttachments, txtSMTPEmailServer.Text.Trim(), rbAuthendication.SelectedValue, txtSMTPUsername.Text.Trim(), txtSMTPPassword.Text.Trim(), chkSecureAccess.Checked);
  134.         lblUpdated.Text = (strEmailResponse.Trim() == "") ? "Email Sent." : strEmailResponse;
  135.     }
  136.     #endregion
  137.     #region lnkRefresh
  138.     protected void lnkRefresh_Click(object sender, EventArgs e)
  139.     {
  140.         gvApplicationLog.DataBind();
  141.     }
  142.     #endregion
  143.     #region lvUsers_ItemInserted
  144.     protected void lvUsers_ItemInserted(object sender, ListViewInsertedEventArgs e)
  145.     {
  146.         if (e.Exception != null)
  147.         {
  148.             lblError.Text = e.Exception.Message;
  149.             e.KeepInInsertMode = true;
  150.             e.ExceptionHandled = true;
  151.         }
  152.     }
  153.     #endregion
  154.     #region lvUsers_ItemUpdated
  155.     protected void lvUsers_ItemUpdated(object sender, ListViewUpdatedEventArgs e)
  156.     {
  157.         if (e.Exception != null)
  158.         {
  159.             lblError.Text = e.Exception.Message;
  160.             e.KeepInEditMode = true;
  161.             e.ExceptionHandled = true;
  162.         }
  163.     }
  164.     #endregion
  165.     #region ListView1_ItemInserted
  166.     protected void ListView1_ItemInserted(object sender, ListViewInsertedEventArgs e)
  167.     {
  168.         if (e.Exception != null)
  169.         {
  170.             lblModuleError.Text = e.Exception.Message;
  171.             e.KeepInInsertMode = true;
  172.             e.ExceptionHandled = true;
  173.         }
  174.     }
  175.     #endregion
  176.     // Module Install
  177.     string strAppBase = "";
  178.     string strTempDirectory = "";
  179.     ListItemCollection UploadMessage = new ListItemCollection();
  180.     #region Install Module
  181.     protected void btnUpload_Click(object sender, EventArgs e)
  182.     {
  183.         if (File1.PostedFile.FileName == "")
  184.         {
  185.             return;
  186.         }
  187.         try
  188.         {
  189.             SilverlightDesktopDAL SilverlightDesktopDAL = new SilverlightDesktopDAL();
  190.             strAppBase = Server.MapPath(@"..");
  191.             strTempDirectory = Server.MapPath(@"..") + @"Temp";
  192.             // Create a Temp Directory
  193.             if (Directory.Exists(strTempDirectory))
  194.             {
  195.                 Directory.Delete(strTempDirectory, true);
  196.             }
  197.             try
  198.             {
  199.                 Directory.CreateDirectory(strTempDirectory);
  200.             }
  201.             catch (Exception)
  202.             {
  203.                 // try again this time give the system time to delete the files first
  204.                 Thread.Sleep(5000);
  205.                 Directory.CreateDirectory(strTempDirectory);
  206.             }
  207.             string strZipFilename = File1.PostedFile.FileName;
  208.             strZipFilename = System.IO.Path.GetFileName(strZipFilename);
  209.             File1.PostedFile.SaveAs(strTempDirectory + strZipFilename);
  210.             UploadMessage.Add(String.Format("File saved to {0}", strTempDirectory + strZipFilename));
  211.             UnzipFile(strTempDirectory + strZipFilename);
  212.             // Load the config file
  213.             XElement doc = XElement.Load(strTempDirectory + @"Module.config");
  214.             string strconfigversion = doc.Element("configversion").Value;
  215.             string strconfigtype = doc.Element("configtype").Value;
  216.             string strmodulename = doc.Element("modulename").Value;
  217.             string strdescription = doc.Element("description").Value;
  218.             string strassembly = doc.Element("assembly").Value;
  219.             string strversion = doc.Element("version").Value;
  220.             string strclass = doc.Element("class").Value;
  221.             string stricon = doc.Element("icon").Value;
  222.             string strrole = doc.Element("role").Value;
  223.             string strwindowsize = doc.Element("windowsize").Value;
  224.             if (strconfigtype.ToLower() != "module")
  225.             {
  226.                 UploadMessage.Add(String.Format("Attempted to install type {0}. Only ConfigType Module can be installed. Aborting installation.", strconfigtype));
  227.                 CompleteModuleInstall(true);
  228.                 return;
  229.                 // Exit
  230.             }
  231.             // Build a list of files to remove
  232.             List<string> colFilesToRemove = new List<string>();
  233.             foreach (XElement Element in doc.Element("removefiles").Elements())
  234.             {
  235.                 colFilesToRemove.Add(Element.Value);
  236.             }
  237.             colFilesToRemove.Sort();
  238.             // Get the current module version if any
  239.             int intCurrentModuleVersion = 0;
  240.             var result = from Module in SilverlightDesktopDAL.SilverlightDesktopModules
  241.                          where Module.ModuleName.ToLower() == strmodulename.ToLower()
  242.                          select Module.ModuleVersion;
  243.             intCurrentModuleVersion = (result.FirstOrDefault().ToString() == "") ? intCurrentModuleVersion : result.FirstOrDefault();
  244.             int intModuleVersion = Convert.ToInt32(strversion.Replace(".", ""));
  245.             if (intModuleVersion <= intCurrentModuleVersion)
  246.             {
  247.                 UploadMessage.Add(String.Format("Current module version is {0}. Installing module version is {1}. Aborting installation.", intCurrentModuleVersion.ToString(), intModuleVersion.ToString()));
  248.                 CompleteModuleInstall(true);
  249.                 return;
  250.                 // Exit
  251.             }
  252.             else
  253.             {
  254.                 UploadMessage.Add(String.Format("Current module version is {0}. Installing module version {1}.", intCurrentModuleVersion.ToString(), intModuleVersion.ToString()));
  255.             }
  256.             // Get a list of all .sql scripts
  257.             List<string> colSQLScripts = Directory.GetFiles(strTempDirectory, "*.sql").ToList();
  258.             colSQLScripts.Sort();
  259.             foreach (string strFile in colSQLScripts)
  260.             {
  261.                 string strFileName = Path.GetFileNameWithoutExtension(strFile);
  262.                 if (strFileName.ToLower() != "uninstall")
  263.                 {
  264.                     int intVersion = Convert.ToInt32(strFileName.Replace(".", ""));
  265.                     if (intVersion <= intModuleVersion)
  266.                     {
  267.                         try
  268.                         {
  269.                             string strSqlScript = GetSQLScript(strFile);
  270.                             SilverlightDesktopDAL.ExecuteCommand(strSqlScript);
  271.                             File.Delete(strFile);
  272.                             UploadMessage.Add(String.Format("SQL Script processed: {0}", strFileName));
  273.                         }
  274.                         catch (Exception ex)
  275.                         {
  276.                             UploadMessage.Add(String.Format("SQL Script error in script: {0} - {1}", strFileName, ex.ToString()));
  277.                             CompleteModuleInstall(true);
  278.                             return;
  279.                         }
  280.                     }
  281.                 }
  282.             }
  283.             // Update the Modules Table 
  284.             // Delete record if it exists
  285.             var ModuleEntry = (from Module in SilverlightDesktopDAL.SilverlightDesktopModules
  286.                                where Module.ModuleName.ToLower() == strmodulename.ToLower()
  287.                                select Module).FirstOrDefault();
  288.             // // If the Module entry does not already exist, create it
  289.             if (ModuleEntry == null)
  290.             {
  291.                 ModuleEntry = new SilverlightDesktopCore.DAL.SilverlightDesktopModule();
  292.             }
  293.             ModuleEntry.AssemblyName = strassembly;
  294.             ModuleEntry.ModuleDescription = strdescription;
  295.             ModuleEntry.ModuleName = strmodulename;
  296.             ModuleEntry.ClassName = strclass;
  297.             ModuleEntry.IconName = stricon;
  298.             ModuleEntry.Role = strrole;
  299.             ModuleEntry.WindowSize = Convert.ToInt32(strwindowsize);
  300.             ModuleEntry.ModuleVersion = Convert.ToInt32(strversion.Replace(".", ""));
  301.             //Read and insert the uninstall script
  302.             if (File.Exists(strTempDirectory + "uninstall.sql"))
  303.             {
  304.                 string strUninstall = GetSQLScript(strTempDirectory + "uninstall.sql");
  305.                 ModuleEntry.uninstall = strUninstall;
  306.             }
  307.             // If the Module entry does not already exist insert it
  308.             if (ModuleEntry.ModuleID == 0)
  309.             {
  310.                 SilverlightDesktopDAL.SilverlightDesktopModules.InsertOnSubmit(ModuleEntry);
  311.                 UploadMessage.Add(String.Format("Created Module entry {0}", strmodulename));
  312.             }
  313.             SilverlightDesktopDAL.SubmitChanges();
  314.             //Delete files
  315.             foreach (string strDeleteFile in colFilesToRemove)
  316.             {
  317.                 File.Delete(strTempDirectory.Replace(@"Temp", "") + strDeleteFile);
  318.                 UploadMessage.Add(String.Format("Removed File: {0}", strDeleteFile));
  319.             }
  320.             //Delete the .zip, .config and uninstall files
  321.             File.Delete(strTempDirectory + strZipFilename);
  322.             File.Delete(strTempDirectory + "uninstall.sql");
  323.             File.Delete(strTempDirectory + "Module.config");
  324.             //Delete any file details in the database
  325.             var colModuleFiles = from ModuleFiles in SilverlightDesktopDAL.SilverlightDesktopModuleFiles
  326.                                  where ModuleFiles.ModuleName.ToLower() == strmodulename.ToLower()
  327.                                  select ModuleFiles;
  328.             SilverlightDesktopDAL.SilverlightDesktopModuleFiles.DeleteAllOnSubmit(colModuleFiles);
  329.             SilverlightDesktopDAL.SubmitChanges();
  330.             //Add The Module File information to the database
  331.             List<string> colFiles = Utility.GetAllFileNames(strTempDirectory).ToList();
  332.             foreach (string strFile in colFiles)
  333.             {
  334.                 SilverlightDesktopModuleFile objModuleFile = new SilverlightDesktopModuleFile();
  335.                 objModuleFile.ModuleName = strmodulename.ToLower();
  336.                 objModuleFile.FileNameAndPath = Path.GetFullPath(strFile).ToString().Replace(strTempDirectory, "");
  337.                 SilverlightDesktopDAL.SilverlightDesktopModuleFiles.InsertOnSubmit(objModuleFile);
  338.                 SilverlightDesktopDAL.SubmitChanges();
  339.                 try
  340.                 {
  341.                     // Move the file to it's destination
  342.                     File.Move(strFile, strFile.Replace(@"Temp", ""));
  343.                 }
  344.                 catch
  345.                 {
  346.                     UploadMessage.Add(String.Format("File already exists: {0}", strFile.Replace(@"Temp", "")));
  347.                     // Delete the file instead
  348.                     File.Delete(strFile);
  349.                 }
  350.             }
  351.             // Cleanup
  352.             Directory.Delete(strTempDirectory, true);
  353.             UploadMessage.Add(String.Format("Temp directory removed"));
  354.             CompleteModuleInstall(false);
  355.         }
  356.         catch (Exception ex)
  357.         {
  358.             UploadMessage.Add(ex.Message);
  359.             CompleteModuleInstall(true);
  360.         }
  361.     }
  362.     #endregion
  363.     #region UnzipFile
  364.     private void UnzipFile(string strZipFile)
  365.     {
  366.         using (ZipInputStream s = new ZipInputStream(File.OpenRead(strZipFile)))
  367.         {
  368.             ZipEntry theEntry;
  369.             while ((theEntry = s.GetNextEntry()) != null)
  370.             {
  371.                 string directoryName = Path.GetDirectoryName(strTempDirectory + theEntry.Name);
  372.                 string fileName = Path.GetFileName(strTempDirectory + theEntry.Name);
  373.                 // create directory
  374.                 if (directoryName.Length > 0)
  375.                 {
  376.                     if (!Directory.Exists(directoryName))
  377.                     {
  378.                         Directory.CreateDirectory(directoryName);
  379.                         UploadMessage.Add(String.Format("Directory Created {0}", directoryName));
  380.                     }
  381.                 }
  382.                 if (fileName != String.Empty)
  383.                 {
  384.                     using (FileStream streamWriter = File.Create(strTempDirectory + theEntry.Name))
  385.                     {
  386.                         UploadMessage.Add(String.Format("File Unzipped: {0}", theEntry.Name));
  387.                         int size = 2048;
  388.                         byte[] data = new byte[2048];
  389.                         while (true)
  390.                         {
  391.                             size = s.Read(data, 0, data.Length);
  392.                             if (size > 0)
  393.                             {
  394.                                 streamWriter.Write(data, 0, size);
  395.                             }
  396.                             else
  397.                             {
  398.                                 break;
  399.                             }
  400.                         }
  401.                     }
  402.                 }
  403.             }
  404.         }
  405.     }
  406.     #endregion
  407.     #region GetSQLScript
  408.     private String GetSQLScript(string PathandScript)
  409.     {
  410.         string strSQLScript;
  411.         StreamReader reader = new StreamReader(PathandScript);
  412.         strSQLScript = reader.ReadToEnd();
  413.         reader.Close();
  414.         reader = null;
  415.         return strSQLScript;
  416.     }
  417.     #endregion
  418.     #region DeleteModule
  419.     protected void ListView1_ItemDeleting(object sender, ListViewDeleteEventArgs e)
  420.     {
  421.         strAppBase = Server.MapPath(@"..");
  422.         //Run the uninstall script if there is one
  423.         SilverlightDesktopDAL SilverlightDesktopDAL = new SilverlightDesktopDAL();
  424.         // Get the selected module
  425.         var objModule = (from Module in SilverlightDesktopDAL.SilverlightDesktopModules
  426.                          where Module.ModuleID == Convert.ToInt32(e.Keys[0])
  427.                          select Module).FirstOrDefault();
  428.         if (objModule.uninstall.Trim() != "")
  429.         {
  430.             SilverlightDesktopDAL.ExecuteCommand(objModule.uninstall.Trim());
  431.         }
  432.         // Get the files for the module and delete them
  433.         var objModules = from Modules in SilverlightDesktopDAL.SilverlightDesktopModuleFiles
  434.                          where Modules.ModuleName.ToLower() == objModule.ModuleName.ToLower()
  435.                          select Modules;
  436.         foreach (var tmpModule in objModules)
  437.         {
  438.             string strFileToDelte = (strAppBase + "\" + tmpModule.FileNameAndPath).Replace("\\", "\");
  439.             File.Delete(strFileToDelte);
  440.             // Log the event
  441.             ApplicationLog.AddToLog(String.Format("Module: {0} - File deleted {1}.", objModules.FirstOrDefault().ModuleName, strFileToDelte));
  442.         }
  443.         // Delete entries in moduleFiles table
  444.         SilverlightDesktopDAL.SilverlightDesktopModuleFiles.DeleteAllOnSubmit(objModules);
  445.         SilverlightDesktopDAL.SubmitChanges();
  446.         // Refresh the Log
  447.         gvApplicationLog.DataBind();
  448.     }
  449.     #endregion
  450.     #region CompleteModuleInstall
  451.     private void CompleteModuleInstall(bool HasErrors)
  452.     {
  453.         // Refresh the module list
  454.         ListView1.DataBind();
  455.         LoadAutoLoadModuleList();
  456.         // Log all events
  457.         foreach (ListItem strUploadMessage in UploadMessage)
  458.         {
  459.             ApplicationLog.AddToLog(strUploadMessage.Value);
  460.         }
  461.         if (HasErrors)
  462.         {
  463.             // Cleanup
  464.             Directory.Delete(strTempDirectory, true);
  465.             ApplicationLog.AddToLog("Temp directory removed");
  466.             gvApplicationLog.DataBind();
  467.             mvAdministration.SetActiveView(vwApplicationLog);
  468.         }
  469.     }
  470.     #endregion
  471.     // Desktop Instance
  472.     #region LoadDesktopInstances
  473.     private void LoadDesktopInstances()
  474.     {
  475.         SilverlightDesktopDAL SilverlightDesktopDAL = new SilverlightDesktopDAL();
  476.         List<SilverlightDesktopCore.DAL.SilverlightDesktopInstance> result = (from Instances in SilverlightDesktopDAL.SilverlightDesktopInstances
  477.                                                                               select Instances).ToList();
  478.         SilverlightDesktopCore.DAL.SilverlightDesktopModule objSilverlightDesktopModule = new SilverlightDesktopCore.DAL.SilverlightDesktopModule();
  479.         ddlDesktopInstances.DataSource = result;
  480.         ddlDesktopInstances.DataBind();
  481.         pnlSelectDesktop.Visible = (result.Count > 0) ? true : false;
  482.         ddlDesktopInstances.Visible = (result.Count > 0) ? true : false;
  483.         lblSelectDesktop.Visible = (result.Count > 0) ? true : false;
  484.         lnkNewDesktop.Visible = (result.Count > 0) ? true : false;
  485.         btnDeleteInstance.Visible = (result.Count > 0) ? true : false;
  486.         btnSaveDesktopInstance.Text = (result.Count > 0) ? "Save" : "Add Desktop Instance";
  487.         int intDesktopInstance = (result.Count > 0) ? Convert.ToInt32(ddlDesktopInstances.SelectedValue) : 0;
  488.         LoadDesktopInstance(intDesktopInstance);
  489.     }
  490.     #endregion
  491.     #region LoadAutoLoadModuleList
  492.     private void LoadAutoLoadModuleList()
  493.     {
  494.         SilverlightDesktopDAL SilverlightDesktopDAL = new SilverlightDesktopDAL();
  495.         List<SilverlightDesktopCore.DAL.SilverlightDesktopModule> result = (from Module in SilverlightDesktopDAL.SilverlightDesktopModules
  496.                                                                             select Module).ToList();
  497.         SilverlightDesktopCore.DAL.SilverlightDesktopModule objSilverlightDesktopModule = new SilverlightDesktopCore.DAL.SilverlightDesktopModule();
  498.         objSilverlightDesktopModule.ModuleID = 0;
  499.         objSilverlightDesktopModule.ModuleName = "(none)";
  500.         result.Add(objSilverlightDesktopModule);
  501.         result = (from Module in result
  502.                   orderby Module.ModuleID
  503.                   select Module).ToList();
  504.         ddlAutoLoadModule.SelectedValue = "0";
  505.         ddlAutoLoadModule.DataSource = result;
  506.         ddlAutoLoadModule.DataBind();
  507.     }
  508.     #endregion
  509.     #region lnkNewDesktop_Click
  510.     protected void lnkNewDesktop_Click(object sender, EventArgs e)
  511.     {
  512.         NewDesktopInstance();
  513.     }
  514.     #endregion
  515.     #region NewDesktopInstance
  516.     private void NewDesktopInstance()
  517.     {
  518.         DesktopNameTextBox.Text = "";
  519.         DesktopSizeHorizontalTextBox.Text = "";
  520.         DesktopSizeVerticalTextBox.Text = "";
  521.         TransparentCheckBox.Checked = false;
  522.         ddlAutoLoadModule.SelectedValue = "0";
  523.         btnSaveDesktopInstance.Text = "Add Desktop Instance";
  524.         btnDeleteInstance.Visible = false;
  525.         DesktopNameTextBox.Enabled = true;
  526.     }
  527.     #endregion
  528.     #region btnSaveDesktopInstance_Click
  529.     protected void btnSaveDesktopInstance_Click(object sender, EventArgs e)
  530.     {
  531.         if (btnSaveDesktopInstance.Text == "Add Desktop Instance")
  532.         {
  533.             // An Insert
  534.             SilverlightDesktopDAL SilverlightDesktopDAL = new SilverlightDesktopDAL();
  535.             SilverlightDesktopInstance SilverlightDesktopInstance = new SilverlightDesktopInstance();
  536.             SilverlightDesktopInstance.DesktopName = DesktopNameTextBox.Text;
  537.             SilverlightDesktopInstance.DesktopSizeHorizontal = ConverToNumber(DesktopSizeHorizontalTextBox.Text);
  538.             SilverlightDesktopInstance.DesktopSizeVertical = ConverToNumber(DesktopSizeVerticalTextBox.Text);
  539.             SilverlightDesktopInstance.Transparent = TransparentCheckBox.Checked;
  540.             SilverlightDesktopInstance.ShowToolbar = (ddlAutoLoadModule.SelectedValue == "(none)") ? true : false;
  541.             SilverlightDesktopInstance.AutoLoadModule = Convert.ToInt32(ddlAutoLoadModule.SelectedValue);
  542.             SilverlightDesktopDAL.SilverlightDesktopInstances.InsertOnSubmit(SilverlightDesktopInstance);
  543.             SilverlightDesktopDAL.SubmitChanges();
  544.             LoadDesktopInstances();
  545.         }
  546.         else
  547.         {
  548.             // An Update
  549.             int intDesktopInstance = Convert.ToInt32(ddlDesktopInstances.SelectedValue);
  550.             SilverlightDesktopDAL SilverlightDesktopDAL = new SilverlightDesktopDAL();
  551.             SilverlightDesktopInstance SilverlightDesktopInstance = (from Instances in SilverlightDesktopDAL.SilverlightDesktopInstances
  552.                                                                      where Instances.ID == intDesktopInstance
  553.                                                                      select Instances).FirstOrDefault();
  554.             SilverlightDesktopInstance.DesktopName = DesktopNameTextBox.Text;
  555.             SilverlightDesktopInstance.DesktopSizeHorizontal = ConverToNumber(DesktopSizeHorizontalTextBox.Text);
  556.             SilverlightDesktopInstance.DesktopSizeVertical = ConverToNumber(DesktopSizeVerticalTextBox.Text);
  557.             SilverlightDesktopInstance.Transparent = TransparentCheckBox.Checked;
  558.             SilverlightDesktopInstance.ShowToolbar = (ddlAutoLoadModule.SelectedValue == "(none)") ? true : false;
  559.             SilverlightDesktopInstance.AutoLoadModule = Convert.ToInt32(ddlAutoLoadModule.SelectedValue);
  560.             SilverlightDesktopDAL.SubmitChanges();
  561.             lblInstanceUpdated.Visible = true;
  562.         }
  563.     }
  564.     #endregion
  565.     #region ConverToNumber
  566.     private int ConverToNumber(string value)
  567.     {
  568.         int number;
  569.         bool result = Int32.TryParse(value, out number);
  570.         if (!result)
  571.         {
  572.             number = 100;
  573.         }
  574.         return number;
  575.     }
  576.     #endregion
  577.     #region ddlDesktopInstances_SelectedIndexChanged
  578.     protected void ddlDesktopInstances_SelectedIndexChanged(object sender, EventArgs e)
  579.     {
  580.         int intDesktopInstance = Convert.ToInt32(ddlDesktopInstances.SelectedValue);
  581.         LoadDesktopInstance(intDesktopInstance);
  582.     }
  583.     #endregion
  584.     #region LoadDesktopInstance
  585.     private void LoadDesktopInstance(int intDesktopInstance)
  586.     {
  587.         SilverlightDesktopDAL SilverlightDesktopDAL = new SilverlightDesktopDAL();
  588.         var result = (from Instances in SilverlightDesktopDAL.SilverlightDesktopInstances
  589.                       where Instances.ID == intDesktopInstance
  590.                       select Instances).FirstOrDefault();
  591.         if (result != null)
  592.         {
  593.             DesktopNameTextBox.Enabled = false;
  594.             DesktopNameTextBox.Text = result.DesktopName;
  595.             DesktopSizeHorizontalTextBox.Text = result.DesktopSizeHorizontal.ToString();
  596.             DesktopSizeVerticalTextBox.Text = result.DesktopSizeVertical.ToString();
  597.             TransparentCheckBox.Checked = result.Transparent;
  598.             try
  599.             {
  600.                 ddlAutoLoadModule.SelectedValue = result.AutoLoadModule.ToString();
  601.             }
  602.             catch
  603.             {
  604.                 ddlAutoLoadModule.SelectedValue = "0";
  605.             }
  606.         }
  607.         else
  608.         {
  609.             NewDesktopInstance();
  610.         }
  611.     }
  612.     #endregion
  613.     #region btnDeleteInstance_Click
  614.     protected void btnDeleteInstance_Click(object sender, EventArgs e)
  615.     {
  616.         int intDesktopInstance = Convert.ToInt32(ddlDesktopInstances.SelectedValue);
  617.         SilverlightDesktopDAL SilverlightDesktopDAL = new SilverlightDesktopDAL();
  618.         var result = (from Instances in SilverlightDesktopDAL.SilverlightDesktopInstances
  619.                       where Instances.ID == intDesktopInstance
  620.                       select Instances).FirstOrDefault();
  621.         if (result != null)
  622.         {
  623.             SilverlightDesktopDAL.SilverlightDesktopInstances.DeleteOnSubmit(result);
  624.             SilverlightDesktopDAL.SubmitChanges();
  625.         }
  626.         LoadDesktopInstances();
  627.     }
  628.     #endregion
  629.     #region btnCancelDesktopInstance_Click
  630.     protected void btnCancelDesktopInstance_Click(object sender, EventArgs e)
  631.     {
  632.         LoadDesktopInstances();
  633.     } 
  634.     #endregion
  635. }