/// <summary> /// Guarda losa cambios de la edición /// </summary> ///<history> ///[jorcanche] created 12/05/2016 ///</history> private async void btnSave_Click(object sender, RoutedEventArgs e) { try { StaStart("Save Invit..."); EnableControls(true, false, true, false); rtbFooter.IsReadOnly = rtbHeader.IsReadOnly = true; #region Carga de Header y Footer //Se almacena en una variabele los RTF´s var header = UIRichTextBoxHelper.getRTFFromRichTextBox(ref rtbHeader); var footer = UIRichTextBoxHelper.getRTFFromRichTextBox(ref rtbFooter); StaEnd(); //Si es nula la entidad quiere decir que no existe en la base de datos así que hay que agrgarlo //de lo contrario se modifica if (_rtfInvitation == null) { _rtfInvitation = new InvitationText { itls = cmbLeadSource.SelectedValue.ToString(), itla = cmbLanguage.SelectedValue.ToString(), itRTFFooter = footer, itRTFHeader = header }; await BREntities.OperationEntity(_rtfInvitation, EnumMode.Add); } else { //Si almenos un RichTexBox se modifico entonces se hace la actualización if (_rtfInvitation.itRTFFooter == footer && _rtfInvitation.itRTFHeader == header) { return; } _rtfInvitation.itRTFFooter = footer; _rtfInvitation.itRTFHeader = header; await BREntities.OperationEntity(_rtfInvitation, EnumMode.Edit); } StaEnd(); #endregion } catch (Exception ex) { UIHelper.ShowMessage(ex); } }
/// <summary> /// Carga los RTF´s de Header y Fotter segun el Lead Source o el lenguage que se seleccione /// </summary> ///<history> ///[jorcanche] created 12/05/2016 ///</history> private async void LoadRTF() { if (cmbLanguage.SelectedIndex == -1 || cmbLeadSource.SelectedIndex == -1) { return; } rtbHeader.Document.Blocks.Clear(); rtbFooter.Document.Blocks.Clear(); _rtfInvitation = await BRInvitation.GetInvitationFooterHeader(cmbLeadSource.SelectedValue.ToString(), cmbLanguage.SelectedValue.ToString()); if (_rtfInvitation == null) { return; } UIRichTextBoxHelper.LoadRTF(ref rtbHeader, _rtfInvitation.itRTFHeader); UIRichTextBoxHelper.LoadRTF(ref rtbFooter, _rtfInvitation.itRTFFooter); }
/// <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; } } } })); }