/// <summary> /// Obtiene registros del catalogo PostLogs /// </summary> /// <param name="postLog">Objeto con filtros adicionales</param> /// <param name="blnDate">True. filtra pos ppDT</param> /// <returns>Lista de tipo PostLog</returns> /// <history> /// [emoguel] created 11/04/2016 /// [emoguel] modified 28/06/2016--->Se volvió async /// </history> public async static Task <List <PostLog> > GetPostsLog(PostLog postLog = null, bool blnDate = false) { return(await Task.Run(() => { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { var query = from pp in dbContext.PostsLogs.Include("Personnel").Include("Personnel_ChangedBy").Include("Post") select pp; #region Filtros if (postLog != null) //verficamos que se tenga un objeto { if (blnDate) //Filtro por fecha { query = query.Where(pp => DbFunctions.TruncateTime(pp.ppDT).Value == DbFunctions.TruncateTime(postLog.ppDT).Value); } if (!string.IsNullOrWhiteSpace(postLog.ppChangedBy))//Filtro por changedBy { query = query.Where(pp => pp.ppChangedBy == postLog.ppChangedBy); } if (!string.IsNullOrWhiteSpace(postLog.pppe))//Filtro por Perssonel { query = query.Where(pp => pp.pppe == postLog.pppe); } } #endregion return query.OrderByDescending(pp => pp.ppDT).ToList(); } })); }
/// <summary> /// Carga la lista del grid /// </summary> /// <param name="postLog">Objeto a seleccionar</param> /// <history> /// [emoguel] created 11/04/2016 /// </history> private async void LoadPostLogs(PostLog postLog = null) { try { status.Visibility = Visibility.Visible; int nIndex = 0; List <PostLog> lstPostsLog = await BRPostsLog.GetPostsLog(_postLogFilter, _blnDate); dgrPostsLog.ItemsSource = lstPostsLog; if (lstPostsLog.Count > 0) { if (postLog != null) { postLog = lstPostsLog.Where(pp => pp.ppID == postLog.ppID).FirstOrDefault(); nIndex = lstPostsLog.IndexOf(postLog); } GridHelper.SelectRow(dgrPostsLog, nIndex); btnDel.IsEnabled = _blnDel; } else { btnDel.IsEnabled = false; } StatusBarReg.Content = lstPostsLog.Count + " Posts Log."; status.Visibility = Visibility.Collapsed; } catch (Exception ex) { UIHelper.ShowMessage(ex); } }
/// <summary> /// Valida que un registro cumpla con los filtros actuales /// </summary> /// <param name="postLog">objeto a validar</param> /// <returns>True. Si cumple | False. No cumple</returns> /// <history> /// [emoguel] created 12/04/2016 /// </history> private bool ValidateFilter(PostLog postLog) { if (_blnDate)//Filtro por Fecha { if (postLog.ppDT.Date != _postLogFilter.ppDT.Date) { return(false); } } if (!string.IsNullOrWhiteSpace(_postLogFilter.ppChangedBy))//Filtro por Chaged By { if (_postLogFilter.ppChangedBy != postLog.ppChangedBy) { return(false); } } if (!string.IsNullOrWhiteSpace(_postLogFilter.pppe))//Filtro por personel { if (postLog.pppe != _postLogFilter.pppe) { return(false); } } return(true); }
/// <summary> /// Muestra la ventana detalle /// </summary> /// <history> /// [emoguel] 11/04/2016 Created /// </history> private void Cell_DoubleClick(object sender, RoutedEventArgs e) { PostLog postLog = (PostLog)dgrPostsLog.SelectedItem; frmPostLogDetail frmPostLogDetail = new frmPostLogDetail(); frmPostLogDetail.Owner = this; frmPostLogDetail.enumMode = (_blnEdit) ? EnumMode.Edit : EnumMode.ReadOnly; frmPostLogDetail.oldPostLog = postLog; if (frmPostLogDetail.ShowDialog() == true) { int nIndex = 0; List <PostLog> lstPostsLog = (List <PostLog>)dgrPostsLog.ItemsSource; if (ValidateFilter(frmPostLogDetail.postLog)) { ObjectHelper.CopyProperties(postLog, frmPostLogDetail.postLog, true); //Actualizamos los datos del objeto lstPostsLog.Sort((x, y) => y.ppDT.CompareTo(x.ppDT)); //Ordenamos la lista nIndex = lstPostsLog.IndexOf(postLog); //Obtenemos la posición } else { lstPostsLog.Remove(postLog);//Quitamos el registro } dgrPostsLog.Items.Refresh(); GridHelper.SelectRow(dgrPostsLog, nIndex); StatusBarReg.Content = lstPostsLog.Count + " Posts Log."; } }
/// <summary> /// Guarda|actualiza un registro en la Bd /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <history> /// [emoguel] created 13/04/2016 /// [emoguel] modified 30/05/2016 /// </history> private async void btnAccept_Click(object sender, RoutedEventArgs e) { try { btnAccept.Focus(); if (enumMode == EnumMode.Search) { if (dpppDT.Value != null) { blnDate = true; postLog.ppDT = Convert.ToDateTime(dpppDT.Value); } else { blnDate = false; } _isClosing = true; DialogResult = true; Close(); } else { if (ObjectHelper.IsEquals(postLog, oldPostLog) && enumMode != EnumMode.Add) { _isClosing = true; Close(); } else { #region Insertar|Agregar string strMsj = ValidateHelper.ValidateForm(this, "Post Log"); if (strMsj == "") { int nRes = await BREntities.OperationEntity(postLog, enumMode); UIHelper.ShowMessageResult("PostLog", nRes); if (nRes > 0) { _isClosing = true; var postsLog = await BRPostsLog.GetPostsLog(postLog); postLog = postsLog.FirstOrDefault(); DialogResult = true; Close(); } } else { UIHelper.ShowMessage(strMsj); } #endregion } } } catch (Exception ex) { UIHelper.ShowMessage(ex); } }
public JsonResult ReReleaseLog(int id, int status) { PublicUserModel loginUser = this.GetLoginUser(); PostLog reReleaseLog = ncBase.CurrentEntities.PostLog.Where(o => o.ID == id && o.Status == status && o.UserID == loginUser.UserID).FirstOrDefault(); if (reReleaseLog.IsNoNull()) { reReleaseLog.Status = 0; ncBase.CurrentEntities.SaveChanges(); return(Json(new { code = 1, msg = "成功" })); } return(Json(new { code = 1, msg = "可能系统重发了" })); }
/// <summary> /// Abre la ventana detalle en modo busqueda /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <history> /// [emoguel] created 13/04/2016 /// </history> private void btnSearch_Click(object sender, RoutedEventArgs e) { frmPostLogDetail frmPostLogDetail = new frmPostLogDetail(); frmPostLogDetail.Owner = this; frmPostLogDetail.oldPostLog = _postLogFilter; frmPostLogDetail.enumMode = EnumMode.Search; frmPostLogDetail.blnDate = _blnDate; if (frmPostLogDetail.ShowDialog() == true) { _postLogFilter = frmPostLogDetail.postLog; _blnDate = frmPostLogDetail.blnDate; LoadPostLogs(); } }
/// <summary> /// Abre la ventana detalle en modo add /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <history> /// [emoguel] created 12/04/2016 /// </history> private void btnAdd_Click(object sender, RoutedEventArgs e) { frmPostLogDetail frmPostLogDetail = new frmPostLogDetail(); frmPostLogDetail.Owner = this; frmPostLogDetail.enumMode = EnumMode.Add; if (frmPostLogDetail.ShowDialog() == true) { PostLog postLog = frmPostLogDetail.postLog; if (ValidateFilter(postLog)) { List <PostLog> lstPostsLog = (List <PostLog>)dgrPostsLog.ItemsSource; lstPostsLog.Add(postLog); //Agregamos el registro lstPostsLog.Sort((x, y) => y.ppDT.CompareTo(x.ppDT)); //ordenamos la lista int nIndex = lstPostsLog.IndexOf(postLog); //obtenemos la posición del registro dgrPostsLog.Items.Refresh(); //Actualizamos la vista GridHelper.SelectRow(dgrPostsLog, nIndex); //Seleccionamos el registro StatusBarReg.Content = lstPostsLog.Count + " Posts 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); }
/// <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> /// Actualiza la lista /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <history> /// [emoguel] created 12/04/2016 /// </history> private void btnRef_Click(object sender, RoutedEventArgs e) { PostLog posLog = (PostLog)dgrPostsLog.SelectedItem; LoadPostLogs(posLog); }
/// <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); }