/// <summary> /// Valida que un objeto TeamLog cumpla con los filtros actuales /// </summary> /// <param name="teamLog">Objeto a validar</param> /// <returns>True. Si cumple | False. No cumple</returns> private bool ValidateFilter(TeamLog teamLog) { if (_blnDate)//Filtro por fecha { if (teamLog.tlDT.Date != _teamLogFilter.tlDT.Date) { return(false); } } if (!string.IsNullOrWhiteSpace(_teamLogFilter.tlChangedBy))//Filtro por ChangedBY { if (teamLog.tlChangedBy != _teamLogFilter.tlChangedBy) { return(false); } } if (!string.IsNullOrWhiteSpace(_teamLogFilter.tlpe))//Filtro por Personel { if (teamLog.tlpe != _teamLogFilter.tlpe) { return(false); } } return(true); }
/// <summary> /// Actualiza los registros del grid /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <history> /// [emoguel] created 27/04/2016 /// </history> private void btnRef_Click(object sender, RoutedEventArgs e) { object selectedItem = dgrTeamsLog.SelectedItem; TeamLog teamLog = (TeamLog)selectedItem.GetType().GetProperty("teamLog").GetValue(selectedItem, null); LoadTeamsLog(teamLog); }
/// <summary> /// Llena el grid de Teams Log /// </summary> /// <param name="teamLog">Objeto a selecionar</param> /// <history> /// [emoguel] created 26/04/2016 /// </history> private async void LoadTeamsLog(TeamLog teamLog = null) { try { status.Visibility = Visibility.Visible; int nIndex = 0; var teams = await BRTeamsLog.GetTeamsLog(_teamLogFilter, _blnDate); List <object> lstTeamsLog = teams.ToList(); dgrTeamsLog.ItemsSource = lstTeamsLog; if (lstTeamsLog.Count() > 0) { if (teamLog != null) { dynamic dTeamLog = lstTeamsLog.Where(item => Convert.ToUInt32(item.GetType().GetProperty("tlID").GetValue(item, null)) == teamLog.tlID).FirstOrDefault(); nIndex = lstTeamsLog.IndexOf(dTeamLog); } GridHelper.SelectRow(dgrTeamsLog, nIndex); btnDel.IsEnabled = _blnDel; } else { btnDel.IsEnabled = false; } StatusBarReg.Content = lstTeamsLog.Count() + " Teams Log."; status.Visibility = Visibility.Collapsed; } catch (Exception ex) { UIHelper.ShowMessage(ex); } }
/// <summary> /// Muestra la ventana detalle en modo edit /// </summary> /// <history> /// [emoguel] 27/04/2016 Created /// </history> private void Cell_DoubleClick(object sender, RoutedEventArgs e) { object dTeamLog = dgrTeamsLog.SelectedItem; TeamLog teamLog = (TeamLog)dTeamLog.GetType().GetProperty("teamLog").GetValue(dTeamLog, null); frmTeamLogDetail frmTeamLogDetail = new frmTeamLogDetail(); frmTeamLogDetail.Owner = this; frmTeamLogDetail.oldTeamLog = teamLog; frmTeamLogDetail.enumMode = (_blnEdit) ? EnumMode.Edit : EnumMode.ReadOnly; if (frmTeamLogDetail.ShowDialog() == true) { List <object> lstTeamsLog = (List <object>)dgrTeamsLog.ItemsSource; int nIndex = 0; if (ValidateFilter(frmTeamLogDetail.teamLog)) { ObjectHelper.CopyProperties(teamLog, frmTeamLogDetail.teamLog); //Actualizamos los datos lstTeamsLog.Sort((x, y) => DateTime.Compare(Convert.ToDateTime(y.GetType().GetProperty("tlDT").GetValue(y, null)), Convert.ToDateTime(x.GetType().GetProperty("tlDT").GetValue(x, null)))); //Reordenamos la lista nIndex = lstTeamsLog.IndexOf(dTeamLog); //Buscamos la posición del registro } else { lstTeamsLog.Remove(dTeamLog); //Quitamos el registro } dgrTeamsLog.Items.Refresh(); //Actualizamos la vista GridHelper.SelectRow(dgrTeamsLog, nIndex); //Seleccionamos el registro StatusBarReg.Content = lstTeamsLog.Count + " Teams Log."; //Actualizamos el contador } }
/// <summary> /// Obtiene registros del catalog TeamsLog /// </summary> /// <param name="teamLog">Objeto con filtros adicionales</param> /// <returns>Lista tipo Dynamic</returns> /// <history> /// [emoguel] created 27/04/2016 /// [emoguel] mofified 28/06/2016---->Se volvió async /// </history> public async static Task <IEnumerable <object> > GetTeamsLog(TeamLog teamLog = null, bool blnDate = false) { return(await Task.Run(() => { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { var query = from tl in dbContext.TeamsLogs from pc in dbContext.Personnels.Where(pc => pc.peID == tl.tlChangedBy).DefaultIfEmpty() from pe in dbContext.Personnels.Where(pe => pe.peID == tl.tlpe).DefaultIfEmpty() from tt in dbContext.TeamsTypes.Where(tt => tt.ttID == tl.tlTeamType).DefaultIfEmpty() from sr in dbContext.SalesRooms.Where(sr => sr.srID == tl.tlPlaceID).DefaultIfEmpty() from ts in dbContext.TeamsSalesmen.Where(ts => ts.tsID == tl.tlTeam && ts.tssr == sr.srID).DefaultIfEmpty() from lo in dbContext.Locations.Where(lo => lo.loID == tl.tlPlaceID).DefaultIfEmpty() from tg in dbContext.TeamsGuestServices.Where(tg => tg.tgID == tl.tlTeam && tg.tglo == lo.loID).DefaultIfEmpty() select new { tlID = tl.tlID, tlDT = tl.tlDT, teamLog = tl, changedBy = pc.peN, personel = pe.peN, teamType = tt.ttN, placeType = (tl.tlTeamType == "GS") ? "Location" : ((tl.tlTeamType == "SA") ? "Sales Room" : ""), place = (tl.tlTeamType == "GS") ? lo.loN : ((tl.tlTeamType == "SA") ? sr.srN : ""), team = (tl.tlTeamType == "GS") ? tg.tgN : ((tl.tlTeamType == "SA") ? ts.tsN : ""), }; if (teamLog != null) { if (teamLog.tlID > 0)//Filtro por ID { query = query.Where(tl => tl.tlID == teamLog.tlID); } if (blnDate)//Filtro por Fecha { query = query.Where(tl => DbFunctions.TruncateTime(tl.teamLog.tlDT).Value == DbFunctions.TruncateTime(teamLog.tlDT)); } if (!string.IsNullOrWhiteSpace(teamLog.tlChangedBy))//Filtro por changedBy { query = query.Where(tl => tl.teamLog.tlChangedBy == teamLog.tlChangedBy); } if (!string.IsNullOrWhiteSpace(teamLog.tlpe))//Filtro por Perssonel { query = query.Where(tl => tl.teamLog.tlpe == teamLog.tlpe); } } return query.OrderByDescending(tl => tl.teamLog.tlDT).ToList(); } })); }
/// <summary> /// Abre la ventana de busqueda en modo search /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <history> /// [emoguel] created 27/04/2016 /// </history> private void btnSearch_Click(object sender, RoutedEventArgs e) { frmTeamLogDetail frmTeamLogDetail = new frmTeamLogDetail(); frmTeamLogDetail.Owner = this; frmTeamLogDetail.enumMode = EnumMode.Search; frmTeamLogDetail.oldTeamLog = _teamLogFilter; frmTeamLogDetail.blnDate = _blnDate; if (frmTeamLogDetail.ShowDialog() == true) { _teamLogFilter = frmTeamLogDetail.teamLog; _blnDate = frmTeamLogDetail.blnDate; LoadTeamsLog(); } }
/// <summary> /// Abre la ventana detalle en modo Add /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <history> /// [emoguel] created 27/04/2016 /// </history> private async void btnAdd_Click(object sender, RoutedEventArgs e) { frmTeamLogDetail frmTeamLogDetail = new frmTeamLogDetail(); frmTeamLogDetail.Owner = this; frmTeamLogDetail.enumMode = EnumMode.Add; if (frmTeamLogDetail.ShowDialog() == true) { TeamLog teamLog = frmTeamLogDetail.teamLog; if (ValidateFilter(teamLog))//Validamos que cumpla con los filtros actuales { var team = await BRTeamsLog.GetTeamsLog(teamLog); object dTeamLog = team.FirstOrDefault(); //Obtenemos el registro nuevo List <object> lstTeamsLog = (List <object>)dgrTeamsLog.ItemsSource; lstTeamsLog.Add(dTeamLog); //Agregamos el registro lstTeamsLog.Sort((x, y) => DateTime.Compare(Convert.ToDateTime(y.GetType().GetProperty("tlDT").GetValue(y, null)), Convert.ToDateTime(x.GetType().GetProperty("tlDT").GetValue(x, null)))); //Reordenamos la lista int nIndex = lstTeamsLog.IndexOf(dTeamLog); //Obtenemos la posición del registro dgrTeamsLog.Items.Refresh(); //Actualizamos la vista GridHelper.SelectRow(dgrTeamsLog, nIndex); //Seleccionamos el registro StatusBarReg.Content = lstTeamsLog.Count + " Teams Log."; //Actualizamos el contador } } }
/// <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); }
public async Task <HttpResponseMessage> MediaUpload(string TeamId, string matchid) { //// Check if the request contains multipart/form-data. //if (!Request.Content.IsMimeMultipartContent()) //{ // throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); //} //var provider = await Request.Content.ReadAsMultipartAsync<InMemoryMultipartFormDataStreamProvider>(new InMemoryMultipartFormDataStreamProvider()); ////access form data //NameValueCollection formData = provider.FormData; ////access files //IList<HttpContent> files = provider.Files; //HttpContent file1 = files[0]; //var thisFileName = file1.Headers.ContentDisposition.FileName.Trim('\"'); //string filename = String.Empty; //Stream input = await file1.ReadAsStreamAsync(); //string directoryName = String.Empty; //string URL = String.Empty; //string tempDocUrl = WebConfigurationManager.AppSettings["DocsUrl"]; //var path = HttpRuntime.AppDomainAppPath; //directoryName = System.IO.Path.Combine(path, "ClientDocument"); //filename = System.IO.Path.Combine(directoryName, thisFileName); ////Deletion exists file //if (File.Exists(filename)) //{ // File.Delete(filename); //} //string DocsPath = tempDocUrl + "/" + "ClientDocument" + "/"; //URL = DocsPath + thisFileName; ////Directory.CreateDirectory(@directoryName); //using (Stream file = File.OpenWrite(filename)) //{ // input.CopyTo(file); // //close file // file.Close(); //} //var response = Request.CreateResponse(HttpStatusCode.OK); //response.Headers.Add("DocsUrl", URL); //return response; Dictionary <string, object> dict = new Dictionary <string, object>(); try { var httpRequest = HttpContext.Current.Request; foreach (string file in httpRequest.Files) { HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created); var postedFile = httpRequest.Files[file]; if (postedFile != null && postedFile.ContentLength > 0) { int MaxContentLength = 1024 * 1024 * 1; //Size = 1 MB IList <string> AllowedFileExtensions = new List <string> { ".jpg", ".gif", ".png" }; var ext = postedFile.FileName.Substring(postedFile.FileName.LastIndexOf('.')); var originalFilename = Path.GetFileName(postedFile.FileName); var extension = ext.ToLower(); if (!AllowedFileExtensions.Contains(extension)) { var message = string.Format("Please Upload image of type .jpg,.gif,.png."); dict.Add("error", message); return(Request.CreateResponse(HttpStatusCode.BadRequest, dict)); } else if (postedFile.ContentLength > MaxContentLength) { var message = string.Format("Please Upload a file upto 1 mb."); dict.Add("error", message); return(Request.CreateResponse(HttpStatusCode.BadRequest, dict)); } else { string fileId = Guid.NewGuid().ToString().Replace("-", ""); //if needed write the code to update the table var filePath = HttpContext.Current.Server.MapPath("~/ClientDocument/" + fileId + originalFilename); postedFile.SaveAs(filePath); TeamLog teamlogo = new TeamLog() { TeamId = Convert.ToInt32(TeamId), MatchId = Convert.ToInt32(matchid), TeamLogs = Convert.ToString("http://idtp285/ClientDocument/" + fileId + originalFilename) }; dbcontext.TeamLogs.Add(teamlogo); dbcontext.SaveChanges(); } } var message1 = string.Format("Image Updated Successfully."); return(Request.CreateErrorResponse(HttpStatusCode.Created, message1));; } var res = string.Format("Please Upload a image."); dict.Add("error", res); return(Request.CreateResponse(HttpStatusCode.NotFound, dict)); } catch (Exception ex) { var res = string.Format("some Message"); dict.Add("error", res); return(Request.CreateResponse(HttpStatusCode.NotFound, dict)); } }
/// <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 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); }