/// <summary> /// Guarda|Actualiza un registro en el catalogo /// </summary> /// <param name="salesRoom">Objeto a guardar</param> /// <param name="blnUpdate">True. Actualiza | False. Inserta</param> /// <returns>-1 Existe un registro con el mismo ID | 0. No se guardó | 1. Se guardó</returns> /// <history> /// [emoguel] created 22/04/2016 /// </history> public static int SaveSalesRoom(SalesRoom salesRoom, bool blnUpdate) { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { int nRes = 0; #region Update if (blnUpdate) { dbContext.Entry(salesRoom).State = System.Data.Entity.EntityState.Modified; return(dbContext.SaveChanges()); } #endregion #region Add else { using (var transaction = dbContext.Database.BeginTransaction(System.Data.IsolationLevel.Serializable)) { try { SalesRoom salesRoomVal = dbContext.SalesRooms.Where(sr => sr.srID == salesRoom.srID).FirstOrDefault(); if (salesRoomVal != null) { return(-1); } else { var GetDate = BRHelpers.GetServerDate(); salesRoom.srGiftsRcptCloseD = GetDate; salesRoom.srCxCCloseD = GetDate; salesRoom.srShowsCloseD = GetDate; salesRoom.srMealTicketsCloseD = GetDate; salesRoom.srSalesCloseD = GetDate; dbContext.SalesRooms.Add(salesRoom); if (dbContext.SaveChanges() > 0) { dbContext.USP_OR_AddAccessAdministrator("SR"); dbContext.SaveChanges(); nRes = 1; transaction.Commit(); } else { transaction.Rollback(); return(0); } } } catch { transaction.Rollback(); nRes = 0; } } } #endregion return(nRes); } }
/// <summary> /// Elimina un MailOut de MailOuts y MailOutTexts /// </summary> /// <param name="_mols">mols</param> /// <param name="_moCode">moCode</param> /// <returns>-1 Error -0 Ya existe ese MailOut - >0 Registros Afectados</returns> /// <history> /// [erosado] 20/04/2016 Created /// [erosado] 06/07/2016 Modified. Se agregó async. /// </history> public async static Task <int> InsertMailOut(string _mols, string _moCode) { int result = 0; await Task.Run(() => { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { using (var transaction = dbContext.Database.BeginTransaction(System.Data.IsolationLevel.Serializable)) { try { //Verificamos que no exista un MailOut igual al que queremos insertar if (dbContext.MailOuts.Any(x => x.mols == _mols && x.moCode == _moCode)) { result = 0; } else { //Agregamos el nuevo MailOut dbContext.Entry( new MailOut() { mols = _mols, moCode = _moCode }).State = System.Data.Entity.EntityState.Added; //Lista de Languages List <string> languages = dbContext.Languages.Select(x => x.laID).ToList(); //Insertamos un MailOutText Por cada Lenguaje languages.ForEach(laID => dbContext.MailOutTexts.Add( new MailOutText() { mtls = _mols, mtmoCode = _moCode, mtla = laID, mtU = BRHelpers.GetServerDateTime() })); //Guardamos Cambios dbContext.SaveChanges(); transaction.Commit(); result = 1; } } catch { transaction.Rollback(); throw; } } } }); return(result); }
/// <summary> /// Agrega | Actualiza un equipo de PRs /// </summary> /// <param name="idUser">Clave de usuario</param> /// <param name="team">Objeto a guardar</param> /// <param name="blnUpdate">True - Actualiza | False - Agrega</param> /// <param name="lstAdd">Personnels a asignar al equipo</param> /// <param name="lstDel">Personeels a remover del equipo</param> /// <param name="lstChanged">Lista de integrantes que tuvieron cambios</param> /// <returns>0. No se guardó | 1. Se guardó | -1. Existe un registro con el mismo ID</returns> /// <history> /// [vku] 13/Jul/2016 Created /// </history> public async static Task <int> SaveTeam(string idUser, TeamGuestServices team, bool blnUpdate, List <Personnel> lstAdd, List <Personnel> lstDel, List <Personnel> lstChanged) { bool HadPost = false; int nRes = await Task.Run(() => { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { using (var transaction = dbContext.Database.BeginTransaction(System.Data.IsolationLevel.Serializable)) { try { #region ChangePersonnel if (lstChanged.Count > 0) { foreach (Personnel pe in lstChanged) { dbContext.Entry(pe).State = EntityState.Modified; } } #endregion #region Update if (blnUpdate) { dbContext.Entry(team).State = EntityState.Modified; } #endregion #region Add else { TeamGuestServices teamVal = dbContext.TeamsGuestServices.Where(te => te.tgID == team.tgID).FirstOrDefault(); if (teamVal != null) { return(-1); } else { dbContext.TeamsGuestServices.Add(team); } } #endregion #region addPerssonnel if (lstAdd.Count > 0) { dbContext.Personnels.AsEnumerable().Where(pe => lstAdd.Any(pee => pee.peID == pe.peID)).ToList().ForEach(pe => { pe.peTeamType = EnumToListHelper.GetEnumDescription(EnumTeamType.TeamPRs); pe.pePlaceID = team.tglo; pe.peTeam = team.tgID; if (pe.pepo == "GS" || pe.pepo == "OPC") { HadPost = true; } if (BRPrograms.GetProgramByLocation(team.tglo) == EnumToListHelper.GetEnumDescription(EnumProgram.Inhouse)) { pe.pepo = "GS"; } else { pe.pepo = "OPC"; } DateTime dtmServerDate = BRHelpers.GetServerDateTime(); TeamLog teamLog = new TeamLog(); teamLog.tlDT = dtmServerDate; teamLog.tlChangedBy = idUser; teamLog.tlpe = pe.peID; teamLog.tlTeamType = pe.peTeamType; teamLog.tlPlaceID = pe.pePlaceID; teamLog.tlTeam = pe.peTeam; dbContext.TeamsLogs.Add(teamLog); if (HadPost == false) { PostLog postLog = new PostLog(); postLog.ppChangedBy = idUser; postLog.ppDT = dtmServerDate; postLog.pppe = pe.peID; postLog.pppo = pe.pepo; dbContext.PostsLogs.Add(postLog); } }); } #endregion #region del Personnel if (lstDel.Count > 0) { dbContext.Personnels.AsEnumerable().Where(pe => lstDel.Any(pee => pee.peID == pe.peID)).ToList().ForEach(pe => { pe.peTeamType = null; pe.pePlaceID = null; pe.peTeam = null; pe.pepo = null; pe.peLinerID = null; DateTime dtmServerDate = BRHelpers.GetServerDateTime(); TeamLog teamLog = new TeamLog(); teamLog.tlDT = dtmServerDate; teamLog.tlChangedBy = idUser; teamLog.tlpe = pe.peID; teamLog.tlTeamType = pe.peTeamType; teamLog.tlPlaceID = pe.pePlaceID; teamLog.tlTeam = pe.peTeam; dbContext.TeamsLogs.Add(teamLog); PostLog postLog = new PostLog(); postLog.ppChangedBy = idUser; postLog.ppDT = dtmServerDate; postLog.pppe = pe.peID; postLog.pppo = pe.pepo; dbContext.PostsLogs.Add(postLog); }); } #endregion int nSave = dbContext.SaveChanges(); transaction.Commit(); return(nSave); } catch { transaction.Rollback(); return(0); } } } }); return(nRes); }
/// <summary> /// Obtiene Un reporte RptPremanifest /// </summary> /// <param name="date">Fecha</param> /// <param name="placeId">ID de Palace</param> /// <param name="markets">Mercado</param> /// <param name="onGroup">OnGroup /// 0. No en Grupo /// 1. En Grupo /// 2. Sin Filtro</param> /// <param name="salesRoom">ID de SalesRoom</param> /// <history> /// [ecanul] 18/04/2016 Created /// [edgrodriguez] 21/06/2016 Modified. Se aplico asincronia. Y se cambiaron algunas variales a opcionales. /// </history> public static async Task <List <RptPremanifest> > GetRptPremanifest(DateTime date, string placeId = "ALL", string markets = "ALL", int onGroup = 2, string salesRoom = "ALL") { return(await Task.Run(() => { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { return dbContext.USP_OR_RptPremanifest(date, placeId, salesRoom, markets, onGroup, false, false, BRHelpers.GetServerDate()).ToList(); } })); }
/// <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; } } } })); }
/// <summary> /// Agrega | Actualiza un equipo de PRs /// </summary> /// <param name="idUser">Clave de usuario</param> /// <param name="team">Objeto a guardar</param> /// <param name="blnUpdate">True - Actualiza | False - Agrega</param> /// <param name="lstAdd">Personnels a asignar al equipo</param> /// <param name="lstDel">Personeels a remover del equipo</param> /// <param name="lstChanged">Lista de integrantes que tuvieron cambios</param> /// <returns>0. No se guardó | 1. Se guardó | -1. Existe un registro con el mismo ID</returns> /// <history> /// [vku] 23/Jul/2016 Created /// </history> public async static Task <int> SaveTeam(string idUser, TeamSalesmen team, bool blnUpdate, List <Personnel> lstAdd, List <Personnel> lstDel, List <Personnel> lstChanged) { int nRes = await Task.Run(() => { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { using (var transaction = dbContext.Database.BeginTransaction(System.Data.IsolationLevel.Serializable)) { try { #region ChangePersonnel if (lstChanged.Count > 0) { foreach (Personnel p in lstChanged) { dbContext.Entry(p).State = EntityState.Modified; DateTime dtmServerDate = BRHelpers.GetServerDateTime(); PostLog postLog = new PostLog(); postLog.ppChangedBy = idUser; postLog.ppDT = dtmServerDate; postLog.pppe = p.peID; postLog.pppo = p.pepo; dbContext.PostsLogs.Add(postLog); } } #endregion #region Update if (blnUpdate) { dbContext.Entry(team).State = EntityState.Modified; } #endregion #region Add else { TeamSalesmen teamVal = dbContext.TeamsSalesmen.Where(te => te.tsID == team.tsID).FirstOrDefault(); if (teamVal != null) { return(-1); } else { dbContext.TeamsSalesmen.Add(team); } } #endregion #region addPerssonnel if (lstAdd.Count > 0) { dbContext.Personnels.AsEnumerable().Where(pe => lstAdd.Any(pee => pee.peID == pe.peID)).ToList().ForEach(pe => { pe.peTeamType = EnumToListHelper.GetEnumDescription(EnumTeamType.TeamSalesmen); pe.pePlaceID = team.tssr; pe.peTeam = team.tsID; DateTime dtmServerDate = BRHelpers.GetServerDateTime(); TeamLog teamLog = new TeamLog(); teamLog.tlDT = dtmServerDate; teamLog.tlChangedBy = idUser; teamLog.tlpe = pe.peID; teamLog.tlTeamType = pe.peTeamType; teamLog.tlPlaceID = pe.pePlaceID; teamLog.tlTeam = pe.peTeam; dbContext.TeamsLogs.Add(teamLog); Personnel p = lstAdd.Where(pa => pa.peID == pe.peID).FirstOrDefault(); if (p.pepo != pe.pepo) { dbContext.Entry(p).State = EntityState.Modified; PostLog postLog = new PostLog(); postLog.ppChangedBy = idUser; postLog.ppDT = dtmServerDate; postLog.pppe = pe.peID; postLog.pppo = p.pepo; dbContext.PostsLogs.Add(postLog); } }); } #endregion #region del Personnel if (lstDel.Count > 0) { dbContext.Personnels.AsEnumerable().Where(pe => lstDel.Any(pee => pee.peID == pe.peID)).ToList().ForEach(pe => { pe.peTeamType = null; pe.pePlaceID = null; pe.peTeam = null; DateTime dtmServerDate = BRHelpers.GetServerDateTime(); TeamLog teamLog = new TeamLog(); teamLog.tlDT = dtmServerDate; teamLog.tlChangedBy = idUser; teamLog.tlpe = pe.peID; teamLog.tlTeamType = pe.peTeamType; teamLog.tlPlaceID = pe.pePlaceID; teamLog.tlTeam = pe.peTeam; dbContext.TeamsLogs.Add(teamLog); }); } #endregion int nSave = dbContext.SaveChanges(); transaction.Commit(); return(nSave); } catch { transaction.Rollback(); return(0); } } } }); return(nRes); }
/// <summary> /// Guarda un Gift y Su Log /// </summary> /// <param name="gift">Objeto a guardar</param> /// <param name="blnUpdate">Truw. Actualiza | False. Inserta</param> /// <param name="lstAddLocations">Locaciones a agregar</param> /// <param name="lstDelLocations">Locaciones a eliminar</param> /// <param name="lstAddAgencies">Agencias a agregar</param> /// <param name="lstDelAgencies">Agencias a eliminar</param> /// <param name="lstAddGiftPack">Gifts a agregar al paquete</param> /// <param name="lstDelGiftPack">Gifts a elimina del paquete</param> /// <param name="lstUpdGiftPack">Gift a actualizar en el paquete</param> /// <param name="blnIsInventory">True. Guardamos el regalo en todos los almacenes existentes</param> /// <param name="userId">usuario que está guardando el gift</param> /// <history> /// [emoguel] created 20/07/2016 /// </history> /// <returns>-1. Existe un Gift con el mismo nombre| 0. No se guardó. | >0. Se guardó correctamente</returns> public async static Task <int> SaveGift(Gift gift, bool blnUpdate, List <Location> lstAddLocations, List <Location> lstDelLocations, List <Agency> lstAddAgencies, List <Agency> lstDelAgencies, List <GiftPackageItem> lstAddGiftPack, List <GiftPackageItem> lstDelGiftPack, List <GiftPackageItem> lstUpdGiftPack, bool blnIsInventory, string userId) { return(await Task.Run(() => { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { using (var transacction = dbContext.Database.BeginTransaction()) { try { int nSave = 0; Gift giftSave = new Gift(); #region Update if (blnUpdate)//Actualizar { giftSave = dbContext.Gifts.Where(gi => gi.giID == gift.giID). Include(gi => gi.Locations). Include(gi => gi.Agencies).FirstOrDefault(); ObjectHelper.CopyProperties(giftSave, gift); } #endregion #region Add else//Add { if (dbContext.Gifts.Where(gi => gi.giID == gift.giID).FirstOrDefault() != null) { return -1; } else { int nOrder = dbContext.Gifts.Max(gi => gi.giO) + 1; gift.giO = nOrder; dbContext.Gifts.Add(gift); giftSave = gift; nSave += dbContext.SaveChanges(); } } #endregion #region Locations //Eliminar Locations giftSave.Locations.Where(lo => lstDelLocations.Any(loo => lo.loID == loo.loID)).ToList().ForEach(lo => { giftSave.Locations.Remove(lo); }); //Agregar Locations var addLocations = dbContext.Locations.AsEnumerable().Where(lo => lstAddLocations.Any(loo => loo.loID == lo.loID)).ToList(); addLocations.ForEach(lo => { giftSave.Locations.Add(lo); }); #endregion #region Agencies //Eliminar giftSave.Agencies.Where(ag => lstDelAgencies.Any(agg => ag.agID == agg.agID)).ToList().ForEach(ag => { giftSave.Agencies.Remove(ag); }); //Agregar var addAgencies = dbContext.Agencies.AsEnumerable().Where(ag => lstAddAgencies.Any(agg => agg.agID == ag.agID)).ToList(); addAgencies.ForEach(ag => { giftSave.Agencies.Add(ag); }); #endregion #region GiftPack if (gift.giPack) { //Eliminar en caso de que ya no se vaya a utilizar if (lstDelGiftPack.Count > 0) { lstDelGiftPack.ForEach(gp => { gp.GiftItem = null; dbContext.Entry(gp).State = EntityState.Deleted; }); } //Actualizar en caso de que se haya modificado uno ya existeste if (lstUpdGiftPack.Count > 0) { lstUpdGiftPack.ForEach(gp => { gp.GiftItem = null; dbContext.Entry(gp).State = EntityState.Modified; }); } //Agregar Gift Pack Item if (lstAddGiftPack.Count > 0) { lstAddGiftPack.ForEach(gp => { gp.GiftItem = null; gp.GiftPackage = null; gp.gpPack = gift.giID; dbContext.Entry(gp).State = EntityState.Added; }); } } else if (blnUpdate) { //Eliminar items en caso de que ya no se paquete var lstDelPack = dbContext.GiftsPackagesItems.Where(gp => gp.gpPack == gift.giID).ToList(); lstDelPack.ForEach(gp => { gp.GiftItem = null; dbContext.Entry(gp).State = EntityState.Deleted; }); } #endregion #region Inventory if (blnIsInventory) { var date = BRHelpers.GetServerDate(); var lstWH = dbContext.Warehouses.Select(wh => wh.whID).ToList(); lstWH.ForEach(whID => { GiftInventory giftInventory = new GiftInventory { gvgi = gift.giID, gvwh = whID, gvQty = 0, gvD = new DateTime(date.Year, date.Month, date.Day) }; dbContext.Entry(giftInventory).State = EntityState.Added; }); } #endregion nSave += dbContext.SaveChanges(); #region GiftLog dbContext.USP_OR_SaveGiftLog(gift.giID, 0, userId); #endregion nSave += dbContext.SaveChanges(); transacction.Commit(); return nSave; } catch { transacction.Rollback(); throw; } } } })); }
/// <summary> /// Guarda un personnel y todos sus permisos /// </summary> /// <param name="idUser">id del usuario que está editando el personnel</param> /// <param name="personnel">personnel a guardar</param> /// <param name="blnUpdate">True. Actualiza | False. inserta</param> /// <param name="lstPermissionAdd">Permisos a agregar</param> /// <param name="lstPermissionDel">Permisos a eliminar</param> /// <param name="lstPermissionUpd">Permisos a actualizar</param> /// <param name="lstLeadSourceDel">Leadsource a eliminar</param> /// <param name="lstLeadSourceAdd">LeadSource a agregar</param> /// <param name="lstWarehouseDel">Warehouses a eliminar</param> /// <param name="lstWarehousesAdd">Warehouses a agregar</param> /// <param name="lstSalesRoomDel">Salesroom a eliminar</param> /// <param name="lstSalesRoomAdd">SalesRoom a agregar</param> /// <param name="lstRolesDel">Roles a eliminar</param> /// <param name="lstRoleAdd">Roles a agregar</param> /// <param name="blnPostLog">Si se modifico el puesto</param> /// <param name="blnTeamsLog">Si se cambio de tem</param> /// <returns>-1. Existe un registro con el mismo ID | 0. No se guardó | >0. Se guardó correctamente</returns> /// <history> /// [emoguel] created 22/06/2016 /// </history> public static async Task <int> SavePersonnel(string idUser, Personnel personnel, bool blnUpdate, List <PersonnelPermission> lstPermissionAdd, List <PersonnelPermission> lstPermissionDel, List <PersonnelPermission> lstPermissionUpd, List <PersonnelAccess> lstLeadSourceDel, List <PersonnelAccess> lstLeadSourceAdd, List <PersonnelAccess> lstWarehouseDel, List <PersonnelAccess> lstWarehousesAdd, List <PersonnelAccess> lstSalesRoomDel, List <PersonnelAccess> lstSalesRoomAdd, List <Role> lstRoleDel, List <Role> lstRoleAdd, bool blnPostLog, bool blnTeamsLog, bool blnSaveLog, List <string> lstRolesLog, bool blnLocation, List <string> lsLeadSourcesLog, List <string> lstSalesRoomLog) { int nRes = await Task.Run(() => { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { using (var transacction = dbContext.Database.BeginTransaction(System.Data.IsolationLevel.Serializable)) { try { int nSave = 0; Personnel personnelSave = new Personnel(); #region Personnel if (blnUpdate)//Actualizar { personnelSave = dbContext.Personnels.Where(pe => pe.peID == personnel.peID).Include(pe => pe.Roles).FirstOrDefault(); //dbContext.Entry(personnel).State = EntityState.Modified; ObjectHelper.CopyProperties(personnelSave, personnel); } else//Agregar { if (dbContext.Personnels.Where(pe => pe.peID == personnel.peID).FirstOrDefault() != null) { return(-1); } else { dbContext.Personnels.Add(personnel); personnelSave = personnel; } } #endregion #region PersonnelPermission //Eliminar lstPermissionDel.ForEach(pp => { dbContext.Entry(pp).State = EntityState.Deleted; }); //Add lstPermissionAdd.ForEach(pp => { pp.pppe = personnelSave.peID; dbContext.Entry(pp).State = EntityState.Added; }); //update lstPermissionUpd.ForEach(pp => { pp.pppe = personnelSave.peID; dbContext.Entry(pp).State = EntityState.Modified; }); #endregion #region Roles //Del personnelSave.Roles.Where(ro => lstRoleDel.Any(roo => ro.roID == roo.roID)).ToList().ForEach(ro => { personnelSave.Roles.Remove(ro); }); //Add lstRoleAdd = dbContext.Roles.AsEnumerable().Where(ro => lstRoleAdd.Any(roo => ro.roID == roo.roID)).ToList(); lstRoleAdd.ForEach(ro => { personnelSave.Roles.Add(ro); }); #endregion #region leadSource //Eliminar lstLeadSourceDel.ForEach(pl => { pl.plpe = personnelSave.peID; pl.plLSSR = "LS"; dbContext.Entry(pl).State = EntityState.Deleted; }); //Del lstLeadSourceAdd.ForEach(pl => { pl.plpe = personnelSave.peID; pl.plLSSR = "LS"; dbContext.PersonnelAccessList.Add(pl); }); #endregion #region SalesRoom //Del lstSalesRoomDel.ForEach(pl => { pl.plpe = personnelSave.peID; pl.plLSSR = "SR"; dbContext.Entry(pl).State = EntityState.Deleted; }); //Add lstSalesRoomAdd.ForEach(pl => { pl.plpe = personnelSave.peID; pl.plLSSR = "SR"; dbContext.PersonnelAccessList.Add(pl); }); #endregion #region Warehouses //Del lstWarehouseDel.ForEach(pl => { pl.plpe = personnelSave.peID; pl.plLSSR = "WH"; dbContext.Entry(pl).State = EntityState.Deleted; }); //Add lstWarehousesAdd.ForEach(pl => { pl.plpe = personnelSave.peID; pl.plLSSR = "WH"; dbContext.PersonnelAccessList.Add(pl); }); #endregion DateTime dtmServerDate = BRHelpers.GetServerDateTime(); #region postLog if (blnPostLog) { PostLog postLog = new PostLog(); postLog.ppChangedBy = idUser; postLog.ppDT = dtmServerDate; postLog.pppe = personnel.peID; postLog.pppo = personnel.pepo; dbContext.PostsLogs.Add(postLog); } #endregion #region TeamsLog if (blnTeamsLog) { TeamLog teamLog = new TeamLog(); teamLog.tlDT = dtmServerDate; teamLog.tlChangedBy = idUser; teamLog.tlpe = personnel.peID; teamLog.tlTeamType = (personnel.peTeamType == "") ? null : personnel.peTeamType; teamLog.tlPlaceID = personnel.pePlaceID; teamLog.tlTeam = personnel.peTeam; dbContext.TeamsLogs.Add(teamLog); } #endregion #region PersonnelLog if (blnSaveLog) { PersonnelLog personnelLog = new PersonnelLog { plgpe = personnel.peID, plgDT = dtmServerDate, plgChangedBy = idUser, plgde = personnel.pede, plgpo = personnel.pepo, plglo = (blnLocation) ? personnel.pePlaceID : null, plgsr = (!blnLocation) ? personnel.pePlaceID : null }; dbContext.PersonnelLogs.Add(personnelLog); nSave = dbContext.SaveChanges(); #region Roles //Roles a ligar al log var lstRolesSave = dbContext.Roles.Where(ro => lstRolesLog.Contains(ro.roID)).ToList(); lstRolesSave.ForEach(ro => personnelLog.Roles.Add(ro)); #endregion #region LeadSources //leadSource a ligar al log List <LeadSource> lstLS = dbContext.LeadSources.Where(ls => lsLeadSourcesLog.Contains(ls.lsID)).ToList(); lstLS.ForEach(ls => personnelLog.LeadSources.Add(ls)); #endregion #region SalesRoom //SalesRooms a ligar al log List <SalesRoom> lstSr = dbContext.SalesRooms.Where(sr => lstSalesRoomLog.Contains(sr.srID)).ToList(); lstSr.ForEach(sr => personnelLog.SalesRooms.Add(sr)); #endregion } #endregion nSave += dbContext.SaveChanges(); transacction.Commit(); return(nSave); } catch { transacction.Rollback(); throw; } } } }); return(nRes); }