/// <summary> /// Abre la ventana detalle en modo "detalle" o "edición" dependiendo de sus permisos /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <history> /// [vku] 22/Jul/2016 Created /// </history> private void Cell_DoubleClick(object sender, RoutedEventArgs e) { TeamSalesmen teamSalesmen = (TeamSalesmen)dgrTeams.SelectedItem; frmTeamSalesmenDetail frmTeamSalesmenDetail = new frmTeamSalesmenDetail(); frmTeamSalesmenDetail.Owner = this; frmTeamSalesmenDetail.oldTeam = teamSalesmen; frmTeamSalesmenDetail.enumMode = EnumMode.Edit; if (frmTeamSalesmenDetail.ShowDialog() == true) { int nIndex = 0; List <TeamSalesmen> lstTeams = (List <TeamSalesmen>)dgrTeams.ItemsSource; if (ValidateFilter(frmTeamSalesmenDetail.team)) //Valida si cumple con los filtros { ObjectHelper.CopyProperties(teamSalesmen, frmTeamSalesmenDetail.team); //Actualiza los datos lstTeams.Sort((x, y) => string.Compare(x.tsN, y.tsN)); //Ordena la lista nIndex = lstTeams.IndexOf(teamSalesmen); //busca la posición del registro } else { lstTeams.Remove(teamSalesmen); //Quita el registro } dgrTeams.Items.Refresh(); //Actualiza la vista GridHelper.SelectRow(dgrTeams, nIndex); //Selecciona el registro StatusBarReg.Content = lstTeams.Count + " Teams."; //Actualiza el contador } }
/// <summary> /// Carga los equipos de vendedores /// </summary> /// <param name="team"></param>} /// <history> /// [vku] 22/Jul/2016 Created /// </history> public async void LoadTeamsSalesmen(TeamSalesmen team = null) { try { status.Visibility = Visibility.Visible; int nIndex = 0; List <TeamSalesmen> lstTeamsSalesmen = await BRTeamsSalesMen.GetTeamsSalesMen(_nStatus, _teamFilter); dgrTeams.ItemsSource = lstTeamsSalesmen; if (team != null && lstTeamsSalesmen.Count > 0) { team = lstTeamsSalesmen.FirstOrDefault(ts => ts.tsID == team.tsID); nIndex = lstTeamsSalesmen.IndexOf(team); } GridHelper.SelectRow(dgrTeams, nIndex); StatusBarReg.Content = lstTeamsSalesmen.Count + " Teams."; status.Visibility = Visibility.Collapsed; } catch (Exception ex) { UIHelper.ShowMessage(ex); } }
/// <summary> /// valida que un objeto team cumpla con los filtros actuales /// </summary> /// <param name="team">Objeto a validar</param> /// <returns>True. Si cumple | False. No cumple</returns> /// <history> /// [vku] 23/Jul/2016 Created /// </history> private bool ValidateFilter(TeamSalesmen team) { if (_nStatus != -1)//Filtro por Status { if (team.tsA != Convert.ToBoolean(_nStatus)) { return(false); } } if (!string.IsNullOrWhiteSpace(_teamFilter.tsID))//Filtro por ID { if (team.tsID != _teamFilter.tsID) { return(false); } } if (!string.IsNullOrWhiteSpace(_teamFilter.tsN))//Filtro por descripción { if (!team.tsN.Contains(_teamFilter.tsN, StringComparison.OrdinalIgnoreCase)) { return(false); } } return(true); }
/// <summary> /// Carga los integrantes /// </summary> /// <history> /// [vku] 23/Jul/2016 Created /// </history> public async void LoadIntegrantes(TeamSalesmen team) { try { List <Personnel> lstPersonnel = await BRPersonnel.GetPersonnels(blnLiner : true); cboIntegrant.ItemsSource = lstPersonnel; _lstPersonnel = lstPersonnel.Where(pe => pe.peTeam == team.tsID && pe.peTeamType == EnumToListHelper.GetEnumDescription(EnumTeamType.TeamSalesmen) && pe.pePlaceID == team.tssr).OrderBy(pe => pe.pepo).ThenBy(pe => pe.peN).ToList(); dgrIntegrants.ItemsSource = _lstPersonnel; List <Personnel> lstPersonnelIni = await BRPersonnel.GetPersonnels(); _lstOldPersonnel = lstPersonnelIni.Where(pe => pe.peTeam == team.tsID && pe.peTeamType == EnumToListHelper.GetEnumDescription(EnumTeamType.TeamSalesmen) && pe.pePlaceID == team.tssr).OrderBy(pe => pe.pepo).ThenBy(pe => pe.peN).ToList(); //Cargamos la lista con los datos iniciales StatusBarReg.Content = _lstPersonnel.Count + " Integrants."; status.Visibility = Visibility.Collapsed; } catch (Exception ex) { UIHelper.ShowMessage(ex); } }
/// <summary> /// Recarga los datos del grid /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <history> /// [vku] 22/Jul/2016 Created /// </history> private void btnRef_Click(object sender, RoutedEventArgs e) { TeamSalesmen team = (TeamSalesmen)dgrTeams.SelectedItem; LoadTeamsSalesmen(team); }
/// <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> /// Obtiene registros del catalogo TeamsSalesmen /// </summary> /// <param name="nStatus">-1. Todos | 0. Inactivos | 1. Activos</param> /// <param name="teamSalesMen">Objeto con filtros adicionales</param> /// <returns>Lista de tipo TeamSalesMen</returns> /// <history> /// [emoguel] created 27/04/2016 /// [vku] 25/Jul/2016 Modified. El método ahora es asincrono /// </history> public async static Task <List <TeamSalesmen> > GetTeamsSalesMen(int nStatus = -1, TeamSalesmen teamSalesMen = null) { List <TeamSalesmen> lstTeamSalesmen = new List <TeamSalesmen>(); await Task.Run(() => { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { var query = from ts in dbContext.TeamsSalesmen select ts; if (nStatus != -1)//Filtro por estatus { bool blnStatus = Convert.ToBoolean(nStatus); query = query.Where(ts => ts.tsA == blnStatus); } if (teamSalesMen != null) { if (!string.IsNullOrWhiteSpace(teamSalesMen.tssr))//Filtro por Sales Room { query = query.Where(ts => ts.tssr == teamSalesMen.tssr); } if (!string.IsNullOrWhiteSpace(teamSalesMen.tsID))//Filtro por ID { query = query.Where(ts => ts.tsID == teamSalesMen.tsID); } if (!string.IsNullOrWhiteSpace(teamSalesMen.tsN))//Filtro por descripción { query = query.Where(ts => ts.tsN.Contains(teamSalesMen.tsN)); } if (!string.IsNullOrWhiteSpace(teamSalesMen.tsLeader))//Filtro por Lide { query = query.Where(ts => ts.tsLeader == teamSalesMen.tsLeader); } } lstTeamSalesmen = query.OrderBy(ts => ts.tsN).ToList(); } }); return(lstTeamSalesmen); }