public void Persist(PluginDescription pluginDescription, byte[] pluginPackage)
 {
     using (var ctx = new DeploymentDataContext()) {
         try {
             using (var transaction = new TransactionScope()) {
                 Plugin pluginEntity = InsertOrUpdatePlugin(ctx, pluginDescription);
                 if (pluginEntity.PluginPackage == null)
                 {
                     // insert
                     pluginEntity.PluginPackage = MakePluginPackage(pluginEntity, pluginPackage);
                 }
                 else
                 {
                     // update
                     pluginEntity.PluginPackage.Data = pluginPackage;
                 }
                 ctx.SubmitChanges();
                 transaction.Complete();
             }
         }
         catch (SqlException ex) {
             throw new ArgumentException("Something went wrong while trying to persist plugin", ex);
         }
         catch (InvalidOperationException ex) {
             throw new ArgumentException("Something went wrong while trying to persist plugin", ex);
         }
     }
 }
Exemple #2
0
        private void DoServiceActions()
        {
            DataAccessLayer       dal  = new DataAccessLayer();
            SystemShutMailer      ssm  = new SystemShutMailer();
            DeploymentDataContext db   = new DeploymentDataContext();
            bool   IsMailSendingNeeded = false;
            var    locs        = (from l in db.locations select new { l.Location_id, l.Location_name });
            string MailTitle   = "<table border='1' style='width:100%;border-width:1px;font-family: Verdana;font-size: 12px;letter-spacing: 1.5px;'><tr><th align='left' colspan='4' scope='col'>System Generated Report After Auto Shut Time</th></tr>";
            string MailContent = "<tr><th width='20%' align='left'> Location Name </th><th width='28%' align='left'> Projected Deployment </th><th width='28%' align='left'> Actual Scenario </th><th width='24%' align='left'> Remarks </th></tr>";
            string ShftName    = "";

            foreach (var loc in locs)
            {
                string         shiftid = "";
                SqlParameter[] para    = new SqlParameter[2];
                para[0] = new SqlParameter("@LocationID", loc.Location_id);
                para[1] = new SqlParameter("@CurrDate", DateTime.Now);
                DataTable dt = dal.executeprocedure("GetCurrentShift", para, false);
                if (dt.Rows.Count > 0)
                {
                    string Shiftname = dt.Columns[0].ColumnName;
                    ShftName = Shiftname;
                    string FromTime, ToTime = "";
                    FromTime = Shiftname.Split('-')[0].Trim();
                    ToTime   = Shiftname.Split('-')[1].Trim();
                    DateTime[] dtarr = CDashBoard.GetFromToFromColumnName(FromTime, ToTime);
                    long       DGAID = 0;
                    DGAID += long.Parse(dt.Rows[0][0].ToString().Split(new String[] { "||" }, StringSplitOptions.None)[1]);
                    bool IsMailSent = (from vw in db.vwDailyDeployments
                                       join wdr in db.WeekDayRosters on vw.WDRID equals wdr.WDRID
                                       where vw.DGAID == DGAID
                                       select wdr.IsMailSent.Value).SingleOrDefault();

                    if (dtarr[0].AddHours(3) < DateTime.Now && (!IsMailSent))
                    {
                        IsMailSendingNeeded = true;
                        MailContent        += "<tr><td>" + loc.Location_name + "</td>";
                        MailContent        += ssm.SendAutoShutEmail(dt, Shiftname, loc.Location_id.ToString());
                        MailContent        += "</tr>";
                        WeekDayRoster wd = (from vw in db.vwDailyDeployments
                                            join wdr in db.WeekDayRosters on vw.WDRID equals wdr.WDRID
                                            where vw.DGAID == DGAID
                                            select wdr).SingleOrDefault();

                        wd.IsMailSent = true;
                        db.SubmitChanges();
                    }
                }
            }
            MailContent += "</table>";
            if (IsMailSendingNeeded)
            {
                //List<string> toemails = new List<string>();
                //DataTable dt = new DataTable();
                //foreach
                MailHelper.SendEmail("*****@*****.**", "*****@*****.**", "", "Shift Report for Shift " + ShftName, MailTitle + MailContent, true);
            }
        }
        private void DeleteOldDependencies(DeploymentDataContext ctx, Plugin pluginEntity)
        {
            var oldDependencies = (from dep in ctx.Dependencies
                                   where dep.PluginId == pluginEntity.Id
                                   select dep).ToList();

            ctx.Dependencies.DeleteAllOnSubmit(oldDependencies);
            ctx.SubmitChanges();
        }
        private void DeleteProductPlugins(DeploymentDataContext ctx, Product productEntity)
        {
            var oldPlugins = (from p in ctx.ProductPlugins
                              where p.ProductId == productEntity.Id
                              select p).ToList();

            ctx.ProductPlugins.DeleteAllOnSubmit(oldPlugins);
            ctx.SubmitChanges();
        }
        private Plugin InsertOrUpdatePlugin(DeploymentDataContext ctx, PluginDescription pluginDescription)
        {
            var pluginEntity = (from p in ctx.Plugins
                                where p.Name == pluginDescription.Name
                                where p.Version == pluginDescription.Version.ToString()
                                select p).FirstOrDefault() ?? MakePluginFromDescription(pluginDescription);

            if (pluginEntity.Id <= 0)
            {
                ctx.Plugins.InsertOnSubmit(pluginEntity);
                ctx.SubmitChanges();
            }

            UpdatePlugin(ctx, pluginEntity, pluginDescription);
            return(pluginEntity);
        }
        public void Delete(ProductDescription productDescription)
        {
            using (var ctx = new DeploymentDataContext()) {
                try {
                    using (var transaction = new TransactionScope()) {
                        var productEntity = GetExistingProduct(ctx, productDescription.Name, productDescription.Version);

                        DeleteProductPlugins(ctx, productEntity);
                        ctx.Products.DeleteOnSubmit(productEntity);

                        ctx.SubmitChanges();
                        transaction.Complete();
                    }
                }
                catch (SqlException ex) {
                    throw new ArgumentException("Something went wrong while trying to delete product", ex);
                }
                catch (InvalidOperationException ex) {
                    throw new ArgumentException("Something went wrong while trying to delete product", ex);
                }
            }
        }
 public void Persist(ProductDescription productDescription)
 {
     using (var ctx = new DeploymentDataContext()) {
         try {
             using (var transaction = new TransactionScope()) {
                 foreach (var plugin in productDescription.Plugins)
                 {
                     var pluginEntity = GetExistingPlugin(ctx, plugin.Name, plugin.Version);
                     UpdatePlugin(ctx, pluginEntity, plugin);
                 }
                 InsertOrUpdateProduct(ctx, productDescription);
                 ctx.SubmitChanges();
                 transaction.Complete();
             }
         }
         catch (SqlException ex) {
             throw new ArgumentException("Something went wrong while trying to persist product", ex);
         }
         catch (InvalidOperationException ex) {
             throw new ArgumentException("Something went wrong while trying to persist product", ex);
         }
     }
 }
        private void InsertOrUpdateProduct(DeploymentDataContext ctx, ProductDescription product)
        {
            var productEntity = (from p in ctx.Products
                                 where p.Name == product.Name
                                 where p.Version == product.Version.ToString()
                                 select p).FirstOrDefault() ?? MakeProductFromDescription(product);

            if (productEntity.Id <= 0)
            {
                ctx.Products.InsertOnSubmit(productEntity);
                ctx.SubmitChanges();
            }

            DeleteProductPlugins(ctx, productEntity);

            foreach (var plugin in product.Plugins)
            {
                var           existingPlugin = GetExistingPlugin(ctx, plugin.Name, plugin.Version);
                ProductPlugin prodPlugin     = new ProductPlugin();
                prodPlugin.PluginId  = existingPlugin.Id;
                prodPlugin.ProductId = productEntity.Id;
                ctx.ProductPlugins.InsertOnSubmit(prodPlugin);
            }
        }