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); } } }
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); } }