/// <summary> /// Carga los equipos de PRs /// </summary> /// <history> /// [vku] 09/Jul/2016 Created /// </history> public async void LoadTeamsPRs(TeamGuestServices team = null) { try { status.Visibility = Visibility.Visible; int nIndex = 0; List <TeamGuestServices> lstTeamsPRs = await BRTeamsGuestServices.GetTeamsGuestServices(_nStatus, _teamFilter); dgrTeams.ItemsSource = lstTeamsPRs; if (team != null && lstTeamsPRs.Count > 0) { team = lstTeamsPRs.FirstOrDefault(tg => tg.tgID == team.tgID); nIndex = lstTeamsPRs.IndexOf(team); } GridHelper.SelectRow(dgrTeams, nIndex); StatusBarReg.Content = lstTeamsPRs.Count + " Teams."; status.Visibility = Visibility.Collapsed; } catch (Exception ex) { UIHelper.ShowMessage(ex); } }
/// <summary> /// Carga los integrantes /// </summary> /// <history> /// [vku] 12/Jul/2016 Created /// </history> public async void LoadIntegrantes(TeamGuestServices team) { try { List <Personnel> lstPersonnel = await BRPersonnel.GetPersonnels(blnLiner : true); List <Personnel> lstPersonnelIni = await BRPersonnel.GetPersonnels(blnLiner : true); List <Personnel> lstliner = new List <Personnel>(); lstliner.AddRange(lstPersonnel); cboIntegrant.ItemsSource = lstPersonnel; cboLiner.ItemsSource = lstliner; _lstPersonnel = lstPersonnel.Where(pe => pe.peTeam == team.tgID && pe.peTeamType == EnumToListHelper.GetEnumDescription(EnumTeamType.TeamPRs) && pe.pePlaceID == team.tglo).ToList(); _lstOldPersonnel = lstPersonnelIni.Where(pe => pe.peTeam == team.tgID && pe.peTeamType == EnumToListHelper.GetEnumDescription(EnumTeamType.TeamPRs) && pe.pePlaceID == team.tglo).ToList(); //Cargamos la lista con los datos iniciales dgrIntegrants.ItemsSource = _lstPersonnel; StatusBarReg.Content = _lstPersonnel.Count + " Integrants."; status.Visibility = Visibility.Collapsed; } catch (Exception ex) { UIHelper.ShowMessage(ex); } }
/// <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] 09/Jul/2016 Created /// </history> private void Cell_DoubleClick(object sender, RoutedEventArgs e) { TeamGuestServices teamPRs = (TeamGuestServices)dgrTeams.SelectedItem; frmTeamPRsDetail frmTeamPRsDetail = new frmTeamPRsDetail(); frmTeamPRsDetail.Owner = this; frmTeamPRsDetail.oldTeam = teamPRs; frmTeamPRsDetail.enumMode = EnumMode.Edit; if (frmTeamPRsDetail.ShowDialog() == true) { int nIndex = 0; List <TeamGuestServices> lstTeams = (List <TeamGuestServices>)dgrTeams.ItemsSource; if (ValidateFilter(frmTeamPRsDetail.team)) //Valida si cumple con los filtros { ObjectHelper.CopyProperties(teamPRs, frmTeamPRsDetail.team); //Actualiza los datos lstTeams.Sort((x, y) => string.Compare(x.tgN, y.tgN)); //Ordena la lista nIndex = lstTeams.IndexOf(teamPRs); //busca la posición del registro } else { lstTeams.Remove(teamPRs); //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> /// 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] 14/Jul/2016 Created /// </history> private bool ValidateFilter(TeamGuestServices team) { if (_nStatus != -1)//Filtro por Status { if (team.tgA != Convert.ToBoolean(_nStatus)) { return(false); } } if (!string.IsNullOrWhiteSpace(_teamFilter.tgID))//Filtro por ID { if (team.tgID != _teamFilter.tgID) { return(false); } } if (!string.IsNullOrWhiteSpace(_teamFilter.tgN))//Filtro por descripción { if (!team.tgN.Contains(_teamFilter.tgN, StringComparison.OrdinalIgnoreCase)) { return(false); } } return(true); }
/// <summary> /// Recarga los datos del grid /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <history> /// [vku] 09/Jul/2016 Created /// </history> private void btnRef_Click(object sender, RoutedEventArgs e) { TeamGuestServices team = (TeamGuestServices)dgrTeams.SelectedItem; LoadTeamsPRs(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] 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 registros del catalogo TeamGuestServices /// </summary> /// <param name="nStatus">-1. Todos | 0. Inactivos | 1. Activos</param> /// <param name="teamGuestServices">Objeto con filtros adicionales</param> /// <returns>Lista de tipo teamGuestServices</returns> /// <history> /// [emoguel] created 27/04/2016 /// [vku] 09/Jul/2016 Modified. Se agrego asincronía /// </history> public async static Task <List <TeamGuestServices> > GetTeamsGuestServices(int nStatus = -1, TeamGuestServices teamGuestServices = null) { List <TeamGuestServices> lstTeamGuestServices = new List <TeamGuestServices>(); await Task.Run(() => { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { var query = from tg in dbContext.TeamsGuestServices select tg; if (nStatus != -1)//Filtro por estatus { bool blnStatus = Convert.ToBoolean(nStatus); query = query.Where(tg => tg.tgA == blnStatus); } if (teamGuestServices != null) { if (!string.IsNullOrWhiteSpace(teamGuestServices.tglo))//Filtro por location { query = query.Where(tg => tg.tglo == teamGuestServices.tglo); } if (!string.IsNullOrWhiteSpace(teamGuestServices.tgID))//Filtro por ID { query = query.Where(tg => tg.tgID == teamGuestServices.tgID); } if (!string.IsNullOrWhiteSpace(teamGuestServices.tgN))//Filtro por descripción { query = query.Where(tg => tg.tgN.Contains(teamGuestServices.tgN)); } if (!string.IsNullOrWhiteSpace(teamGuestServices.tgLeader))//Filtro por leader { query = query.Where(tg => tg.tgLeader == teamGuestServices.tgLeader); } } lstTeamGuestServices = query.OrderBy(tg => tg.tgN).ToList(); } }); return(lstTeamGuestServices); }