/// <summary> /// Elimina un MailOut de MailOuts y MailOutTexts /// </summary> /// <param name="mo">MailOut</param> /// <returns> Numero de registros afectados </returns> /// <history> /// [erosado] 20/04/2016 Created /// [erosado] 06/07/2016 Modified. Se agregó Async /// </history> public async static Task <int> DeleteMailOut(MailOut mo) { int result = 0; await Task.Run(() => { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { using (var transaction = dbContext.Database.BeginTransaction(System.Data.IsolationLevel.Serializable)) { try { //Eliminamos el MailOut dbContext.Entry(mo).State = System.Data.Entity.EntityState.Deleted; //Obtenemos todos los MailOutText que correspondan al MailOut Que vamos a eliminar List <MailOutText> motlst = (from x in dbContext.MailOutTexts where x.mtls == mo.mols && x.mtmoCode == mo.moCode select x).ToList(); //Eliminamos cada uno de los MailOutTexts motlst.ForEach(x => dbContext.Entry(x).State = System.Data.Entity.EntityState.Deleted); result = dbContext.SaveChanges(); transaction.Commit(); } catch { transaction.Rollback(); throw; } } } }); return(result); }
/// <summary> /// Evento que se ejecuta se selecciona un MailOut /// </summary> /// <history> /// [erosado] 19/04/2016 Created /// </history> private void lsbxMailOuts_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (lsbxMailOuts.SelectedValue != null) { _selectedMailOut = lsbxMailOuts.SelectedItem as MailOut; layout.DataContext = _selectedMailOut; } }
/// <summary> /// Actualiza la informacion de un MailOut /// </summary> /// <param name="mo">MailOut</param> /// <returns>Registros Afectados</returns> /// <history> /// [erosado] 20/04/2016 Created /// [erosado] 06/07/2016 Modified. Se agregó Async. /// [erosado] 12/08/2016 Modified. Se agregó Try - Catch /// </history> public async static Task <int> UpdateMailOut(MailOut mo) { try { return(await Task.Run(() => { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { dbContext.Entry(mo).State = System.Data.Entity.EntityState.Modified; return dbContext.SaveChanges(); } })); } catch (Exception) { throw; } }
/// <summary> /// Elimina los registros del MailOut Seleccionado /// </summary> /// <param name="mo">MailOut</param> /// <history> /// [erosado] 20/04/2016 Created /// </history> public async void DoDeleteMailOut(MailOut mo) { try { var data = await BRMailOuts.DeleteMailOut(mo); if (data > 0) { UIHelper.ShowMessage("Delete MailOut successfully", MessageBoxImage.Information, "Mail Outs Configuration"); EditModeOff(); cbxLeadSource_SelectionChanged(this, null); } StaEnd(); } catch (Exception ex) { StaEnd(); UIHelper.ShowMessage(ex); } }
/// <summary> /// Actualiza la información de un MailOut /// </summary> /// <param name="mo">MailOut</param> /// <history> /// [erosado] 20/04/2016 Created. /// [erosado] 12/08/2016 Modified. Cuando se guarda la informacion del MailOut se mantiene seleccionado en la lista lsbxMailOuts. /// </history> public async void DoUpdateMailOut(MailOut mo) { try { var data = await BRMailOuts.UpdateMailOut(mo); if (data > 0) { UIHelper.ShowMessage("Data saved successfully", MessageBoxImage.Information, "Mail Outs Configuration"); EditModeOff(); DoGetMailOuts(_lsbyUser.lsID, mo.moCode); } StaEnd(); } catch (Exception ex) { StaEnd(); UIHelper.ShowMessage(ex); } }
/// <summary> /// Agrega|Actualiza los datos de un LeadSource /// </summary> /// <param name="leadSource">Objeto a guardar</param> /// <param name="lstLocAdd">Locaciones a relacionar</param> /// <param name="lstLocDel">Locaciones a des-relacionar</param> /// <param name="lstAgeAdd">Agencias a relacionar</param> /// <param name="lstAgeDel">Agencias a desrelacionar</param> /// <param name="blnUpdate">True. Actualiza | False. Elimina</param> /// <returns>-1. Existe un registro con el mismo ID | 0. No se guardó | >1. Se guardó correctamente</returns> /// <history> /// [emoguel] created 17/05/2016 /// [emoguel] modified 27/06/2016 --> se volvió async /// </history> public async static Task <int> SaveLeadSource(LeadSource leadSource, List <Location> lstLocAdd, List <Location> lstLocDel, List <Agency> lstAgeAdd, List <Agency> lstAgeDel, bool blnUpdate) { return(await Task.Run(() => { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { using (var transaction = dbContext.Database.BeginTransaction(System.Data.IsolationLevel.Serializable)) { try { #region LeadSources LeadSource leadSourceSave = null; #region Update if (blnUpdate) { leadSourceSave = dbContext.LeadSources.Where(ls => ls.lsID == leadSource.lsID).Include("Agencies").FirstOrDefault(); ObjectHelper.CopyProperties(leadSourceSave, leadSource); } #endregion #region Insert else { leadSourceSave = dbContext.LeadSources.Where(ls => ls.lsID == leadSource.lsID).FirstOrDefault(); if (leadSourceSave != null) { return -1; } else { DateTime dtServer = BRHelpers.GetServerDateTime(); leadSource.lsTransBridgeDT = dtServer; leadSource.lsTransDT = dtServer; dbContext.LeadSources.Add(leadSource); leadSourceSave = leadSource; } List <Language> lstLanguages = dbContext.Languages.ToList(); #region MailOuts MailOut mailOut = new MailOut { mols = leadSourceSave.lsID, moCode = "WELCOME" }; #endregion #region Mail Outs Text y Invits Text lstLanguages.ForEach(la => { MailOutText mailOutText = new MailOutText { mtls = leadSourceSave.lsID, mtmoCode = "WLECOME", mtla = la.laID }; InvitationText invitationText = new InvitationText { itls = leadSourceSave.lsID, itla = la.laID, itRTF = "<No text Saved>" }; }); #endregion } #endregion #endregion #region Agencies lstAgeDel.ForEach(ag => { leadSourceSave.Agencies.Remove(leadSourceSave.Agencies.Where(agg => agg.agID == ag.agID).FirstOrDefault()); }); lstAgeAdd.ForEach(ag => { leadSourceSave.Agencies.Add(dbContext.Agencies.Where(agg => agg.agID == ag.agID).FirstOrDefault()); }); #endregion #region Locations dbContext.Locations.AsEnumerable().Where(lo => lstLocAdd.Any(loc => loc.loID == lo.loID)).ToList().ForEach(lo => { lo.lols = leadSourceSave.lsID; dbContext.Entry(lo).State = EntityState.Modified; }); dbContext.Locations.AsEnumerable().Where(lo => lstLocDel.Any(loc => loc.loID == lo.loID)).ToList().ForEach(lo => { lo.lols = null; dbContext.Entry(lo).State = EntityState.Modified; }); #endregion int nRes = dbContext.SaveChanges(); if (!blnUpdate) { dbContext.USP_OR_AddAccessAdministrator("LS"); dbContext.SaveChanges(); } transaction.Commit(); ObjectHelper.CopyProperties(leadSource, leadSourceSave, true); return nRes; } catch { transaction.Rollback(); return 0; } } } })); }