/// <summary> /// Obtiene todos los place y los mantiene en memoria para utilizarlos posteriormente /// </summary> /// <returns>lista dynamica</returns> /// <history> /// [erosado] 29/04/2016 Created /// </history> public async Task <int> getAllPlaces() { places = new List <Item>(); switch (_loginType) { case EnumLoginType.SalesRoom: var sr = await BRSalesRooms.GetSalesRoomsByUser(); sr.ForEach(s => places.Add(new Item() { Id = s.srID, Name = s.srN, UserId = s.plpe })); break; case EnumLoginType.Warehouse: var wh = await BRWarehouses.GetWarehousesByUser(); wh.ForEach(w => places.Add(new Item() { Id = w.whID, Name = w.whN, UserId = w.plpe })); break; case EnumLoginType.Location: var lo = await BRLocations.GetLocationsByUser(programs : EnumToListHelper.GetEnumDescription(_program)); lo.ForEach(l => places.Add(new Item() { Id = l.loID, Name = l.loN, UserId = l.plpe })); break; } return(1); }
/// <summary> /// Devuelve los datos para el reporte de produccion por membresia /// </summary> /// <param name="dtmStart">Fecha desde</param> /// <param name="dtmEnd">Fecha hasta</param> /// <param name="leadSources">Claves de Lead Sources</param> /// <param name="pRs">Claves de PRs</param> /// <param name="program">Clave de programa</param> /// <param name="aplication">Clave de membresia</param> /// <param name="company">Clave de compania</param> /// <param name="club">Clave de club</param> /// <param name="onlyWholesalers">Indica si se desean solo mayoristas</param> /// <param name="considerQuinellas">Indica si se debe considerar quinielas</param> /// <param name="basedOnArrival">Indica si se debe basar en la fecha de llegada</param> /// <returns><list type="RptProductionByMember"></list></returns> /// <history> /// [aalcocer] 03/05/2016 Created /// [aalcocer] 24/05/2016 Modified. Se agregó asincronía /// </history> public static async Task <List <RptProductionByMember> > GetRptProductionByMembers(DateTime dtmStart, DateTime dtmEnd, IEnumerable <string> leadSources, IEnumerable <string> pRs = null, EnumProgram program = EnumProgram.All, string aplication = "", int company = 0, Club club = null, EnumOnlyWholesalers onlyWholesalers = EnumOnlyWholesalers.NoOnlyWholesalers, EnumQuinellas considerQuinellas = EnumQuinellas.NoQuinellas, EnumBasedOnArrival basedOnArrival = EnumBasedOnArrival.NoBasedOnArrival) { var result = new List <RptProductionByMember>(); if (pRs == null || !pRs.Any()) { pRs = new[] { "ALL" } } ; await Task.Run(() => { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { dbContext.Database.CommandTimeout = Settings.Default.USP_OR_RptProductionByMember_Timeout; result = dbContext.USP_OR_RptProductionByMember(dtmStart, dtmEnd, string.Join(",", leadSources), string.Join(",", pRs), EnumToListHelper.GetEnumDescription(program), string.IsNullOrWhiteSpace(aplication) ? "ALL" : aplication, company, club?.clID, Convert.ToBoolean(onlyWholesalers), Convert.ToBoolean(considerQuinellas), Convert.ToBoolean(basedOnArrival)).ToList(); } }); return(result); }
/// <summary> /// Obtiene el listado de dias libres del personal /// </summary> /// <param name="placeID">ID del lugar de trabajo</param> /// <param name="teamType"></param> /// <returns></returns> /// <history>[ECANUL] 09-08-2016 Created</history> public static List <PersonnelDayOff> GetPersonnelDaysOff(string placeID, EnumTeamType teamType) { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { string _teamType = EnumToListHelper.GetEnumDescription(teamType); return(dbContext.USP_OR_GetPersonnelDaysOff(_teamType, placeID).ToList()); } }
/// <summary> /// Obtiene la lista de empleados En un periodo de fechas establecido y que NO ha sido registrado en la base de datos /// NO REGISTRA SOLO HACE UNA CONSULTA /// </summary> /// <param name="palaceType">LS, SR o WH</param> /// <param name="PalaceID"> String con el ID del Sitio </param> /// <param name="dateStart">Fecha inicio de la lista de asistencia</param> /// <param name="DateEnd">Fecha fin de la lista de asistencia</param> /// <returns>Lista de asistencia enrtre las fechas seleccionadas</returns> /// <history>[ECANUL] 19-03-2016 CREATED</history> public static List <PersonnelAssistance> GetPersonnelAssistance(EnumPlaceType palaceType, string PalaceID, DateTime dateStart, DateTime DateEnd) { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { string strPalaceType = EnumToListHelper.GetEnumDescription(palaceType); return(dbContext.USP_OR_GetPersonnelAssistance(strPalaceType, PalaceID, dateStart, DateEnd).ToList()); } }
/// <summary> /// Carga el Program para la invitacion /// </summary> /// <param name="module">EnumModule</param> /// <param name="invitationType">EnumInvitationType</param> /// <param name="guId">GuestID</param> /// <history> /// [erosado] 10/08/2016 Created. /// </history> private async Task LoadProgram(EnumModule module, EnumInvitationType invitationType, int guId) { EnumProgram program = EnumProgram.All; //Si se tiene el GuestID if (guId != 0 && module != EnumModule.Host) { //Obtenemos la informacion del Guest var guest = await BRGuests.GetGuest(guId); //Obtenemos la informacion de program var result = await BRLeadSources.GetLeadSourceProgram(guest.gulsOriginal); //Asignamos el Program if (result == EnumToListHelper.GetEnumDescription(EnumProgram.Inhouse)) { program = EnumProgram.Inhouse; } else { program = EnumProgram.Outhouse; } } //Si NO hay un Guest para obtener el program else { //De que modulo me estan hablando switch (module) { case EnumModule.InHouse: if (invitationType == EnumInvitationType.newExternal) { program = EnumProgram.Inhouse; } break; case EnumModule.OutHouse: if (invitationType == EnumInvitationType.newOutHouse) { program = EnumProgram.Outhouse; } break; case EnumModule.Host: if (invitationType == EnumInvitationType.newOutHouse) { program = EnumProgram.Outhouse; } else { program = EnumProgram.Inhouse; } break; } } Program = program; AllowReschedule = program == EnumProgram.Inhouse; }
/// <summary> /// Agrega un elemento EnumMenu a la lista actual /// </summary> /// <param name="item">Enumerado del elemento</param> /// <history> /// [wtorres] 16/Jul/2016 Created /// </history> public void Add(EnumMenu item) { Add(new Item() { Id = item.ToString(), Name = EnumToListHelper.GetEnumDescription(item), ImageUrl = $"pack://application:,,,/IM.Styles;component/Images/{item.ToString()}.png" }); }
/// <summary> /// Obtiene los Lead Sources de un usuario /// </summary> /// <param name="user">Usuario </param> /// <param name="programs"> Programa o default('ALL') </param> /// <param name="regions">Region o default('ALL') </param> /// <returns>List<LeadSourceByUser></returns> /// <hystory> /// [erosado] 08/03/2016 created /// [aalcocer] 17/03/2016 Modified. Agregado parametros por default /// [erosado] 07/04/2016 Modified. Se cambio el parametro string Progam a EnumPrograms /// [edgrodriguez] 21/May/2016 Modified. El método se volvio asincrónico. /// </hystory> public async static Task <List <LeadSourceByUser> > GetLeadSourcesByUser(string user, EnumProgram program = EnumProgram.All, string regions = "ALL") { List <LeadSourceByUser> result = new List <LeadSourceByUser>(); await Task.Run(() => { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { result = dbContext.USP_OR_GetLeadSourcesByUser(user, EnumToListHelper.GetEnumDescription(program), regions).ToList(); } }); return(result); }
/// <summary> /// obtiene registros del catalogo PersLSSR /// </summary> /// <param name="idUser">id del Usuario</param> /// <param name="typeAcces">SR. Sales Room | LS. Lead Source | WH. Wharehouse</param> /// <returns></returns> public static async Task <List <PersonnelAccess> > getPersonnelAcces(string idUser, EnumPlaceType enumPlaceType) { List <PersonnelAccess> lstPersonnelAcces = await Task.Run(() => { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { string placeType = EnumToListHelper.GetEnumDescription(enumPlaceType); return(dbContext.PersonnelAccessList.Where(pl => pl.plpe == idUser && pl.plLSSR == placeType).ToList()); } }); return(lstPersonnelAcces); }
/// <summary> /// Obtiene catalogo de Lead Sources . /// </summary> /// <param name="status"> 0- Sin filtro, 1-Activos, 2. Inactivos </param> /// <returns>List<LeadSource></returns> /// <history> /// [aalcocer] 09/03/2016 Created /// [jorcanche] 02/05/2016 Agrego el parametro EnumProgram para que se puede saleccionar /// [aalcocer] 09/06/2016 Modified. Se agregó asincronía. /// </history> public static async Task <List <LeadSource> > GetLeadSources(int status = 0, EnumProgram program = EnumProgram.All) { var leadSources = new List <LeadSource>(); var pro = EnumToListHelper.GetEnumDescription(program); await Task.Run(() => { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { leadSources = dbContext.LeadSources .Where(ls => status.Equals(1) ? ls.lsA : status.Equals(2) ? !ls.lsA : true) .Where(ls => program != EnumProgram.All ? ls.lspg == pro : true) .OrderBy(ls => ls.lsN).ToList(); } }); return(leadSources); }
/// <summary> /// Configura los controles de fecha. /// </summary> /// <history> /// [edgrodriguez] 05/Mar/2016 Created /// </history> private void ConfigureDates(bool blnOneDate, EnumPeriod enumPeriod, bool blnDateRange) { Dictionary <EnumPredefinedDate, string> dictionaryPredefinedDate = EnumToListHelper.GetList <EnumPredefinedDate>(); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.DatesSpecified)); _enumPeriod = enumPeriod;//Asignamos el enumPeriod a la variable privada del formulario. switch (enumPeriod) { //Sin periodo case EnumPeriod.None: cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.Today)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.Yesterday)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisWeek)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousWeek)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisHalf)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousHalf)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisMonth)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousMonth)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisYear)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousYear)); break; //Semanal case EnumPeriod.Weekly: cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisWeek)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousWeek)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.TwoWeeksAgo)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThreeWeeksAgo)); Title += $" ({EnumToListHelper.GetEnumDescription(enumPeriod)})"; break; //Mensual case EnumPeriod.Monthly: cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisMonth)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousMonth)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.TwoMonthsAgo)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThreeMonthsAgo)); Title += $" ({EnumToListHelper.GetEnumDescription(enumPeriod)})"; break; } cboDate.SelectedIndex = 0; //Si es un rango de fechas. cboDate.IsEnabled = pnlDtmEnd.IsEnabled = !blnOneDate; grpDates.Visibility = (blnDateRange) ? Visibility.Visible : Visibility.Collapsed; }
/// <summary> /// Configura los controles de fecha. /// </summary> /// <history> /// [aalcocer] 16/Mar/2016 Created /// [aalcocer /// </history> private void ConfigureDates(bool blnOneDate, EnumPeriod enumPeriod) { Dictionary <EnumPredefinedDate, string> dictionaryPredefinedDate = EnumToListHelper.GetList <EnumPredefinedDate>(); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.DatesSpecified)); switch (enumPeriod) { //Sin periodo case EnumPeriod.None: cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.Today)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.Yesterday)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisWeek)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousWeek)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisHalf)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousHalf)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisMonth)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousMonth)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisYear)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousYear)); break; //Semanal case EnumPeriod.Weekly: cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisWeek)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousWeek)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.TwoWeeksAgo)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThreeWeeksAgo)); Title += $" ({EnumToListHelper.GetEnumDescription(enumPeriod)})"; break; //Mensual case EnumPeriod.Monthly: cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThisMonth)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.PreviousMonth)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.TwoMonthsAgo)); cboDate.Items.Add(dictionaryPredefinedDate.Single(c => c.Key == EnumPredefinedDate.ThreeMonthsAgo)); Title += $" ({EnumToListHelper.GetEnumDescription(enumPeriod)})"; break; } cboDate.SelectedIndex = 0; //Si es un rango de fechas. cboDate.IsEnabled = pnlDtmEnd.IsEnabled = !blnOneDate; }
/// <summary> /// Load Invitation Info es el mensaje que sale a lado del menu bar en la invitacion /// </summary> /// <history> /// [erosado] 17/08/2016 Created. /// </history> public void LoadInvitationInfo() { string invitType = string.Empty; switch (_invitationType) { case EnumInvitationType.existing: invitType = "Existing Guest"; break; case EnumInvitationType.newOutHouse: invitType = "New OutHouse"; break; case EnumInvitationType.newExternal: invitType = "New External"; break; } InvitationInfo = $"Mode: {EnumToListHelper.GetEnumDescription(InvitationMode)} | Module: {_module} | Invitation Type: {invitType}"; }
/// <summary> /// Carga y configuracion del grid PRs /// </summary> /// <param name="blnOnlyOneRegister"></param> /// <param name="blnPRs"></param> /// <param name="blnAllPRs"></param> /// <history> /// [vku] 25/May/2016 Created /// </history> private async void LoadPRs(bool blnOnlyOneRegister, bool blnPRs, bool blnAllPRs) { if (!blnPRs) { return; } grdPR.SelectionMode = (blnOnlyOneRegister) ? DataGridSelectionMode.Single : DataGridSelectionMode.Extended; pnlPR.Visibility = Visibility.Visible; var x = (await BRLeadSources.GetLeadSourcesByUser(Context.User.User.peID, EnumProgram.Outhouse)).Select(y => y.lsID).ToList(); _lstPRs = await BRPersonnel.GetPersonnel(string.Join(",", x), roles : EnumToListHelper.GetEnumDescription(EnumRole.PR), status : 0); grdPR.ItemsSource = _lstPRs; chkAllPR.IsChecked = blnAllPRs; chkAllPR.IsEnabled = !blnOnlyOneRegister; if (!frmPO._clsFilter._lstPRs.Any()) { return; } chkAllPR.IsChecked = (grdPR.SelectionMode == DataGridSelectionMode.Extended) && frmPO._clsFilter.AllPRs; if (grdPR.ItemsSource != null && !frmPO._clsFilter.AllPRs && !blnOnlyOneRegister) { grdPR.SelectedItem = null; frmPO._clsFilter._lstPRs.ForEach(c => { grdPR.SelectedItems.Add(_lstPRs.FirstOrDefault(pr => pr.peID == c)); }); } else { grdPR.SelectedItem = _lstPRs.FirstOrDefault(c => c.peID == frmPO._clsFilter._lstPRs[0]); } }
/// <summary> /// Carga personal en el combobox /// </summary> /// <history> /// [erosado] 18/04/2016 Created /// [vipacheco] 02/Mayo/2016 Modified --> Se cambio el parametro de string a un tipo EnumRole /// </history> public void LoadPersonnel() { StaStart("Loading Personnel..."); DoGetPersonnel(Context.User.SalesRoom.srID, EnumToListHelper.GetEnumDescription(EnumRole.Liner)); }
/// <summary> /// Muestra el reporte de Sales Room Seleccionado /// </summary> /// <param name="rptRoomSales"></param> /// <param name="clsFilter"></param> /// <history> /// [ecanul] 05/05/2016 Created /// </history> private async void ShowReportBySalesRoom(EnumRptSalesRoom rptRoomSales, ClsFilter clsFilter) { FileInfo file = null; //Deberia validarse con #region Datos del reporte string dateRange = _multiDate ? string.Join("; ", clsFilter.LstMultiDate.Select(x => $"{x.SalesRoom} {DateHelper.DateRange(x.DtStart, x.DtEnd)}")) : DateHelper.DateRange(clsFilter.DtmStart, clsFilter.DtmEnd); string dateRangeFileName = _multiDate ? string.Join("; ", clsFilter.LstMultiDate.Select(x => $"{x.SalesRoom} {DateHelper.DateRange(x.DtStart, x.DtEnd)}")) : DateHelper.DateRangeFileName(clsFilter.DtmStart, clsFilter.DtmEnd); string reporteName = EnumToListHelper.GetEnumDescription(rptRoomSales); #endregion #region Filtro(s) List <Tuple <string, string> > filters = new List <Tuple <string, string> > { new Tuple <string, string>("Date Range", dateRange) }; //Si es cualquier reporte menos Concentrate Daily Sales o Multidate (porque sus grids son diferentes) se agrega de manera comun if (rptRoomSales != EnumRptSalesRoom.ConcerntrateDailySales && rptRoomSales != EnumRptSalesRoom.StatsBySegmentsCategoriesMultiDatesRanges) { //Si es de solo un registro El sales Room es unico, si no Se toma por Todos o por los seleccionados if (_onlyOnRegister) { filters.Add(new Tuple <string, string>("Sales Room", clsFilter.LstSalesRooms.First())); } else { filters.Add(new Tuple <string, string>("Sales Room", _frmFilter.dtgSalesRoom.Items.Count == clsFilter.LstSalesRooms.Count ? "All" : string.Join(",", clsFilter.LstSalesRooms))); } } if (rptRoomSales == EnumRptSalesRoom.StatsByCloser || rptRoomSales == EnumRptSalesRoom.StatsByExitCloser || rptRoomSales == EnumRptSalesRoom.StatsByFtb) { filters.Add(Tuple.Create("Programs", EnumToListHelper.GetEnumDescription(clsFilter.EnumProgram))); filters.Add(Tuple.Create("Segments", clsFilter.BlnAllSegments ? "ALL" : string.Join(",", clsFilter.LstSegments))); } #endregion List <dynamic> list = new List <dynamic>(); string fileFullPath = ReportBuilder.CreateEmptyExcel(reporteName, dateRangeFileName); _frmReportQueue.AddReport(fileFullPath, reporteName); try { switch (rptRoomSales) { #region Manifest case EnumRptSalesRoom.Manifest: list.AddRange(await BRReportsBySalesRoom.GetRptManiest(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms)); if (list.Count > 0) { file = await Reports.RptManifest(reporteName, fileFullPath, filters, list.Cast <RptManifest>().ToList(), clsFilter.DtmStart, clsFilter.DtmEnd); } break; #endregion #region StatsByLocation case EnumRptSalesRoom.StatsByLocation: list.AddRange(await BRReportsBySalesRoom.GetRptStatisticsByLocation(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms)); if (list.Count > 0) { file = await Reports.RptStatisticsByLocation(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByLocation>().ToList()); } break; #endregion #region StatsByLocationMonthly case EnumRptSalesRoom.StatsByLocationMonthly: list.AddRange(await BRReportsBySalesRoom.GetRptStaticsByLocationMonthly(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms)); if (list.Count > 0) { file = await Reports.RptStaticsByLocationMonthly(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByLocationMonthly>().ToList()); } break; #endregion #region SalesByLocationMonthly case EnumRptSalesRoom.SalesByLocationMonthly: list.AddRange(await BRReportsBySalesRoom.GetRptSalesByLocationMonthly(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms)); if (list.Count > 0) { file = await Reports.RptSalesByLocationMonthly(reporteName, fileFullPath, filters, list.Cast <RptSalesByLocationMonthly>().ToList()); } break; #endregion #region StatsByLocationAndSalesRoom case EnumRptSalesRoom.StatsByLocationAndSalesRoom: list.AddRange(await BRReportsBySalesRoom.GetRptStatisticsBySalesRoomLocation(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms)); if (list.Count > 0) { file = await Reports.RptStatisticsBySalesRoomLocation(reporteName, fileFullPath, filters, list.Cast <RptStatisticsBySalesRoomLocation>().ToList()); } break; #endregion #region ConcerntrateDailySales case EnumRptSalesRoom.ConcerntrateDailySales: #region FiltroSalesRoomConcentrate clsFilter.LstSalesRooms.AddRange(clsFilter.LstGoals.Select(c => c.SalesRoomByUser.srID)); filters.Add(new Tuple <string, string>("Sales Room", string.Join("/", clsFilter.LstGoals.Select(c => c.SalesRoomByUser.srID).ToList()))); #endregion list.AddRange(await BRReportsBySalesRoom.GetRptConcentrateDailySales(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstGoals.Select(c => c.SalesRoomByUser.srID).ToList())); if (list.Count > 0) { file = await Reports.RptConcentrateDailySales(reporteName, fileFullPath, clsFilter.DtmEnd, filters, list.Cast <RptConcentrateDailySales>().ToList(), clsFilter.LstGoals); } break; #endregion #region DailySales case EnumRptSalesRoom.DailySales: list.AddRange(await BRReportsBySalesRoom.GetRptDailySalesDetail(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms)); List <RptDailySalesHeader> lstHeader = await BRReportsBySalesRoom.GetRptDailySalesHeader(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms); if (list.Count > 0 && lstHeader.Count > 0) { file = await Reports.RptDailySales(reporteName, dateRange, fileFullPath, filters, list.Cast <RptDailySalesDetail>().ToList(), lstHeader, clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.Goal); } break; #endregion #region FTM In & Out House case EnumRptSalesRoom.FtmInAndOutHouse: list.AddRange(await BRReportsBySalesRoom.GetRptFTMInOutHouse(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms)); if (list.Count > 0) { file = await Reports.RptFTMInOutHouse(reporteName, fileFullPath, filters, list.Cast <RptFTMInOutHouse>().ToList(), clsFilter.DtmStart, clsFilter.DtmEnd); } break; #endregion #region Stats by Segments case EnumRptSalesRoom.StatsBySegments: list.AddRange(await BRReportsBySalesRoom.GetStatisticsBySegments(new[] { clsFilter.DtmStart }, new[] { clsFilter.DtmEnd }, clsFilter.LstSalesRooms, includeAllSalesmen: clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsBySegments(reporteName, fileFullPath, filters, list.Cast <RptStatisticsBySegments>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion Stats by Segments #region Stats by Segments (OWN) case EnumRptSalesRoom.StatsBySegmentsOwn: list.AddRange(await BRReportsBySalesRoom.GetStatisticsBySegments(new[] { clsFilter.DtmStart }, new[] { clsFilter.DtmEnd }, clsFilter.LstSalesRooms, own: true, includeAllSalesmen: clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsBySegments(reporteName, fileFullPath, filters, list.Cast <RptStatisticsBySegments>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion Stats by Segments (OWN) #region Stats by Segments Categories case EnumRptSalesRoom.StatsBySegmentsCategories: list.AddRange(await BRReportsBySalesRoom.GetStatisticsBySegments(new[] { clsFilter.DtmStart }, new[] { clsFilter.DtmEnd }, clsFilter.LstSalesRooms, bySegmentsCategories: true, includeAllSalesmen: clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsBySegments(reporteName, fileFullPath, filters, list.Cast <RptStatisticsBySegments>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion Stats by Segments Categories #region Stats by Segments Categories (OWN) case EnumRptSalesRoom.StatsBySegmentsCategoriesOwn: list.AddRange(await BRReportsBySalesRoom.GetStatisticsBySegments(new[] { clsFilter.DtmStart }, new[] { clsFilter.DtmEnd }, clsFilter.LstSalesRooms, bySegmentsCategories: true, own: true, includeAllSalesmen: clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsBySegments(reporteName, fileFullPath, filters, list.Cast <RptStatisticsBySegments>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion Stats by Segments Categories (OWN) #region Stats by Segments Categories (Multi Date Ranges) case EnumRptSalesRoom.StatsBySegmentsCategoriesMultiDatesRanges: list.AddRange(await BRReportsBySalesRoom.GetStatisticsBySegments(clsFilter.LstMultiDate.Select(x => x.DtStart), clsFilter.LstMultiDate.Select(x => x.DtEnd), clsFilter.LstMultiDate.Select(x => x.SalesRoom), bySegmentsCategories: true, includeAllSalesmen: clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsBySegments(reporteName, fileFullPath, filters, list.Cast <RptStatisticsBySegments>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion Stats by Segments Categories (Multi Date Ranges) #region Stats by Closer case EnumRptSalesRoom.StatsByCloser: list.AddRange(await BRReportsBySalesRoom.GetStatisticsByCloser(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms.First(), program: clsFilter.EnumProgram, segments: clsFilter.BlnAllSegments ? null : clsFilter.LstSegments, includeAllSalesmen: clsFilter.BlnIncludeAllSalesmen, groupByTeams: clsFilter.BlnGroupedByTeams)); if (list.Any()) { file = await Reports.RptStatisticsByCloser(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByCloser>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion #region Stats by Exit Closer case EnumRptSalesRoom.StatsByExitCloser: list.AddRange(await BRReportsBySalesRoom.GetStatisticsByExitCloser(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms.First(), program: clsFilter.EnumProgram, segments: clsFilter.BlnAllSegments ? null : clsFilter.LstSegments, includeAllSalesmen: clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsByExitCloser(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByExitCloser>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion #region Self Gen & Self Gen Team case EnumRptSalesRoom.SelfGenAndSelfGenTeam: list.AddRange(await BRReportsBySalesRoom.GetRptSelfGenAndSelfGenTeam(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms)); if (list.Count > 0) { file = await Reports.RptSelfGenAndSelfGenTeam(reporteName, fileFullPath, filters, list.Cast <RptSelfGenTeam>().ToList(), clsFilter.DtmStart, clsFilter.DtmEnd); } break; #endregion #region Stats by F.T.B case EnumRptSalesRoom.StatsByFtb: list.AddRange(await BRReportsBySalesRoom.GetStatisticsByFTB(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms.First(), program: clsFilter.EnumProgram, segments: clsFilter.BlnAllSegments ? null : clsFilter.LstSegments, groupByTeam: clsFilter.BlnGroupedByTeams, includeAllSalesmen: clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsByFTB(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByFTB>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion #region Stats by F.T.B. & Locations case EnumRptSalesRoom.StatsByFtbAndLocatios: list.AddRange(await BRReportsBySalesRoom.GetStatisticsByFTBLocations(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms.First(), groupByTeam: clsFilter.BlnGroupedByTeams, includeAllSalesmen: clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsByFTBByLocations(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByFTBLocations>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion #region Stats by F.T.B. & Locations Categories case EnumRptSalesRoom.StatsByFtbAndLocatiosCategories: list.AddRange(await BRReportsBySalesRoom.GetStatisticsByFTBCategories(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms.First(), groupByTeam: clsFilter.BlnGroupedByTeams, includeAllSalesmen: clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsByFTBByCategories(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByFTBCategories>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion #region Efficiency Weekly case EnumRptSalesRoom.EfficiencyWeekly: list.AddRange(await BRReportsBySalesRoom.GetRptEfficiencyWeekly(clsFilter.lstEfficiency.Select(x => x.efDateFrom), clsFilter.lstEfficiency.Select(x => x.efDateTo), clsFilter.LstSalesRooms.First().ToString())); if (list.Any()) { file = await Reports.RptEfficiencyWeekly(reporteName, fileFullPath, filters, list.Cast <RptEfficiencyWeekly>().ToList(), clsFilter); } break; #endregion } if (file == null) { file = ReportBuilder.CreateNoInfoRptExcel(filters, reporteName, fileFullPath); } frmDocumentViewer frmDocumentViewver = new frmDocumentViewer(file, Context.User.HasPermission(EnumPermission.RptExcel, EnumPermisionLevel.ReadOnly)); frmDocumentViewver.Show(); _frmReportQueue.SetExist(file.FullName, file); _frmReportQueue.Activate(); } 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> /// Carga el combobox de patrones /// </summary> /// <history> /// [emoguel] created 16/05/2016 /// [erosado] 19/05/2016 Modified. Se agregó asincronía /// </history> private async void LoadBoss() { try { List <PersonnelShort> lstBoss = await BRPersonnel.GetPersonnel(roles : EnumToListHelper.GetEnumDescription(EnumRole.Boss)); cmblsBoss.ItemsSource = lstBoss; } catch (Exception ex) { UIHelper.ShowMessage(ex); } }
/// <summary> /// Muestra el reporte de Salesman Seleccionado /// </summary> /// <param name="rptSalesman"></param> /// <param name="clsFilter"></param> /// <history> /// [aalcocer] 08/07/2016 Created /// </history> private async void ShowReportBySalesman(EnumRptSalesRoomAndSalesman rptSalesman, ClsFilter clsFilter) { FileInfo file = null; //Deberia validarse con #region Datos del reporte string dateRange = _multiDate ? string.Join("; ", clsFilter.LstMultiDate.Select(x => $"{x.SalesRoom} {DateHelper.DateRange(x.DtStart, x.DtEnd)}")) : DateHelper.DateRange(clsFilter.DtmStart, clsFilter.DtmEnd); string dateRangeFileName = _multiDate ? string.Join("; ", clsFilter.LstMultiDate.Select(x => $"{x.SalesRoom} {DateHelper.DateRange(x.DtStart, x.DtEnd)}")) : DateHelper.DateRangeFileName(clsFilter.DtmStart, clsFilter.DtmEnd); string reporteName = EnumToListHelper.GetEnumDescription(rptSalesman); #endregion #region Filtro(s) List <Tuple <string, string> > filters = new List <Tuple <string, string> > { new Tuple <string, string>("Date Range", dateRange) }; //Si es de solo un registro El sales Room es unico, si no Se toma por Todos o por los seleccionados if (_onlyOnRegister) { filters.Add(new Tuple <string, string>("Sales Room", clsFilter.LstSalesRooms.First())); } else { filters.Add(new Tuple <string, string>("Sales Room", _frmFilter.dtgSalesRoom.Items.Count == clsFilter.LstSalesRooms.Count ? "All" : string.Join(",", clsFilter.LstSalesRooms))); } filters.Add(new Tuple <string, string>("Salesman", $"{clsFilter.Salesman.peID} {clsFilter.Salesman.peN}")); #endregion List <dynamic> list = new List <dynamic>(); string fileFullPath = ReportBuilder.CreateEmptyExcel(reporteName, dateRangeFileName); _frmReportQueue.AddReport(fileFullPath, reporteName); try { switch (rptSalesman) { #region FtmIn&OutHouse case EnumRptSalesRoomAndSalesman.FtmInAndOutHouse: list.AddRange(await BRReportsBySalesRoom.GetRptFTMInOutHouse(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms, clsFilter.Salesman.peID)); if (list.Count > 0) { file = await Reports.RptFTMInOutHouse(reporteName, fileFullPath, filters, list.Cast <RptFTMInOutHouse>().ToList(), clsFilter.DtmStart, clsFilter.DtmEnd); } break; #endregion #region Manifest case EnumRptSalesRoomAndSalesman.Manifest: // Roles filters.Add(new Tuple <string, string>("Roles", clsFilter.LstEnumRole.EnumListToString())); list.AddRange(await BRReportsBySalesRoom.GetRptManiest(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms, clsFilter.Salesman.peID, clsFilter.LstEnumRole)); if (list.Any()) { file = await Reports.RptManifest(reporteName, fileFullPath, filters, list.Cast <RptManifest>().ToList(), clsFilter.DtmStart, clsFilter.DtmEnd); } break; #endregion #region Self Gen & Self Gen Team case EnumRptSalesRoomAndSalesman.SelfGenAndSelfGenTeam: list.AddRange(await BRReportsBySalesRoom.GetRptSelfGenAndSelfGenTeam(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms, clsFilter.Salesman.peID)); if (list.Count > 0) { file = await Reports.RptSelfGenAndSelfGenTeam(reporteName, fileFullPath, filters, list.Cast <RptSelfGenTeam>().ToList(), clsFilter.DtmStart, clsFilter.DtmEnd); } break; #endregion #region Stats by Closer case EnumRptSalesRoomAndSalesman.StatsByCloser: list.AddRange(await BRReportsBySalesRoom.GetStatisticsByCloser(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms.First(), clsFilter.Salesman.peID, groupByTeams: clsFilter.BlnGroupedByTeams)); if (list.Any()) { file = await Reports.RptStatisticsByCloser(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByCloser>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion #region Stats by Exit Closer case EnumRptSalesRoomAndSalesman.StatsByExitCloser: list.AddRange(await BRReportsBySalesRoom.GetStatisticsByExitCloser(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms.First(), clsFilter.Salesman.peID)); if (list.Any()) { file = await Reports.RptStatisticsByExitCloser(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByExitCloser>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion #region Stats by F.T.B case EnumRptSalesRoomAndSalesman.StatsByFtb: list.AddRange(await BRReportsBySalesRoom.GetStatisticsByFTB(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms.First(), clsFilter.Salesman.peID, program: clsFilter.EnumProgram, segments: clsFilter.BlnAllSegments ? null : clsFilter.LstSegments, groupByTeam: clsFilter.BlnGroupedByTeams, includeAllSalesmen: clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsByFTB(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByFTB>().ToList(), clsFilter.BlnIncludeAllSalesmen); } break; #endregion #region Stats by F.T.B. & Locations case EnumRptSalesRoomAndSalesman.StatsByFtbAndLocations: list.AddRange(await BRReportsBySalesRoom.GetStatisticsByFTBLocations(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms.First(), clsFilter.Salesman.peID, clsFilter.BlnGroupedByTeams, clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsByFTBByLocations(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByFTBLocations>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion #region Stats by F.T.B. & Locations Categories case EnumRptSalesRoomAndSalesman.StatsByFtbAndLocationsCategories: list.AddRange(await BRReportsBySalesRoom.GetStatisticsByFTBCategories(clsFilter.DtmStart, clsFilter.DtmEnd, clsFilter.LstSalesRooms.First(), clsFilter.Salesman.peID, clsFilter.BlnGroupedByTeams, clsFilter.BlnIncludeAllSalesmen)); if (list.Any()) { file = await Reports.RptStatisticsByFTBByCategories(reporteName, fileFullPath, filters, list.Cast <RptStatisticsByFTBCategories>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion #region Statistics by Segments case EnumRptSalesRoomAndSalesman.StatsBySegments: list.AddRange(await BRReportsBySalesRoom.GetStatisticsBySegments(new[] { clsFilter.DtmStart }, new[] { clsFilter.DtmEnd }, clsFilter.LstSalesRooms, clsFilter.Salesman.peID)); if (list.Any()) { file = await Reports.RptStatisticsBySegments(reporteName, fileFullPath, filters, list.Cast <RptStatisticsBySegments>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion Statistics by Segments Own #region Statistics by Segments case EnumRptSalesRoomAndSalesman.StatsBySegmentsOwn: list.AddRange(await BRReportsBySalesRoom.GetStatisticsBySegments(new[] { clsFilter.DtmStart }, new[] { clsFilter.DtmEnd }, clsFilter.LstSalesRooms, clsFilter.Salesman.peID, own: true)); if (list.Any()) { file = await Reports.RptStatisticsBySegments(reporteName, fileFullPath, filters, list.Cast <RptStatisticsBySegments>().ToList(), clsFilter.BlnGroupedByTeams); } break; #endregion Statistics by Segments Own case EnumRptSalesRoomAndSalesman.StatsBySegmentsCategories: list.AddRange(await BRReportsBySalesRoom.GetStatisticsBySegments(new[] { clsFilter.DtmStart }, new[] { clsFilter.DtmEnd }, clsFilter.LstSalesRooms, clsFilter.Salesman.peID, true)); if (list.Any()) { file = await Reports.RptStatisticsBySegments(reporteName, fileFullPath, filters, list.Cast <RptStatisticsBySegments>().ToList(), clsFilter.BlnGroupedByTeams); } break; case EnumRptSalesRoomAndSalesman.StatsBySegmentsCategoriesOwn: list.AddRange(await BRReportsBySalesRoom.GetStatisticsBySegments(new[] { clsFilter.DtmStart }, new[] { clsFilter.DtmEnd }, clsFilter.LstSalesRooms, clsFilter.Salesman.peID, true, true)); if (list.Any()) { file = await Reports.RptStatisticsBySegments(reporteName, fileFullPath, filters, list.Cast <RptStatisticsBySegments>().ToList(), clsFilter.BlnGroupedByTeams); } break; } if (file == null) { file = ReportBuilder.CreateNoInfoRptExcel(filters, reporteName, fileFullPath); } frmDocumentViewer frmDocumentViewver = new frmDocumentViewer(file, Context.User.HasPermission(EnumPermission.RptExcel, EnumPermisionLevel.ReadOnly)); frmDocumentViewver.Show(); _frmReportQueue.SetExist(file.FullName, file); _frmReportQueue.Activate(); } catch (Exception ex) { UIHelper.ShowMessage(ex); } }
/// <summary> /// Valida que una fecha de una entidad no este en una fecha cerrada con 7 dias /// </summary> /// <param name="pEntity"></param> /// <param name="pDate"></param> /// <param name="pDateClose"></param> /// <param name="pDescription"></param> /// <param name="pCondition"></param> /// <returns></returns> /// <history> /// [vipacheco] 08/Julio/2016 Created /// [aalcocer] 12/08/2016 Modified. Se valida si el parametro pDate tiene valor /// </history> public static bool ValidateCloseDate(EnumEntities pEntity, ref DateTimePicker pDate, DateTime pDateClose, string pDescription = "", bool pCondition = true) { int diffDay = 0; string items = "", description = ""; if (pDate.Value == null) { return(true); } // Dias transcurridos diffDay = (pDateClose - pDate.Value.Value.Date).Days; // si la condicion es valida y el editor esta habilitado if (pCondition && pDate.IsEnabled) { items = EnumToListHelper.GetEnumDescription(pEntity); // si no se envio una descripcion if (pDescription == "") { switch (pEntity) { case EnumEntities.Shows: description = "Show"; break; case EnumEntities.MealTickets: description = "Meal Ticket"; break; case EnumEntities.Sales: description = "Sale"; break; case EnumEntities.GiftsReceipts: description = "Gift Receipt"; break; } } else { description = pDescription; } // validamos que la fecha no sea mayor a la fecha actual if (pDate.Value.Value.Date > BRHelpers.GetServerDate()) { UIHelper.ShowMessage(description + " can not be after today.", System.Windows.MessageBoxImage.Exclamation, "Intelligence Marketing"); pDate.Focus(); return(false); } // validamos que la fecha no sea menor o igual a la fecha de cierre y no sea mayor o igual a 7 dias y si viene de Show else if (pEntity == EnumEntities.Shows) { pDate.Focus(); return(ValidateCloseDate7Days(pDate.Value.Value.Date, pDateClose.Date, diffDay)); } // validamos que la fecha no sea menor o igual a la fecha de cierre else if (pDate.Value.Value.Date <= pDateClose.Date) { UIHelper.ShowMessage("It's not allowed to make " + items + " for a closed date.", System.Windows.MessageBoxImage.Exclamation); pDate.Focus(); return(false); } } return(true); }
/// <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> /// Carga personal en el combobox /// </summary> /// <history> /// [erosado] 18/04/2016 Created /// </history> public void LoadPersonnel() { StaStart("Loading Personnel..."); DoGetPersonnel(Context.User.LeadSource.lsID, EnumToListHelper.GetEnumDescription(EnumRole.PR)); }
/// <summary> /// Obtiene un reporte de Equity /// </summary> /// <param name="membershipNum">numero de membresia</param> /// <param name="company">compania</param> /// <param name="clubAgency">agencia</param> /// <param name="clubGuest">club</param> /// <param name="owner">Ventana padre</param> /// <history> /// [ecanul] 06/04/2016 Created /// [ecanul] 07/04/2016 Modificated Agregado Validaciones y "show" del reporte /// [ecanul] 20/04/2016 Modificated Metodo Movido de frmInhouse a EquityHelpers /// [ecanul] 06/07/2016 Modified. Agregue subreporte RptEquityMembershipsPrevious /// [ecanul] 08/09/2016 Modified. Agregado nombre del web service y Club en el titulo del mensaje que genero un error. /// [wtorres] 06/09/2016 Modified. Agregue el parametro owner /// </history> public static void EquityReport(string membershipNum, Decimal company, int?clubAgency, int?clubGuest, Window owner) { EnumClub club; // si tiene membrecia if (membershipNum != null && membershipNum != "") {//si tiene permiso para el reporte de equity if (Context.User.HasPermission(EnumPermission.Equity, EnumPermisionLevel.ReadOnly)) { // // // ShowReport // determinamos el club if (clubAgency != null && clubAgency != 0) { club = (EnumClub)clubAgency; } else if (clubGuest != null && clubGuest != 0) { club = (EnumClub)clubGuest; } else { //Si no se encuentra un club en la tabla de agencies o en la tabla del guest se manda un error diciendo esto y se sale del metodo UIHelper.ShowMessage("Agency Not Found", MessageBoxImage.Error, "Equity Report"); return; } Services.ClubesService.RptEquity rptClubes = null; var clubesTitle = $"Equity Report - Clubes - {EnumToListHelper.GetEnumDescription(club)}"; var callCenterTitle = $"Equity Report - Credito y Cobranza - {EnumToListHelper.GetEnumDescription(club)}"; try { //obtenemos los datos del reporte del servicio de Clubes rptClubes = ClubesHelper.GetRptEquity(membershipNum, Convert.ToInt32(company), club); } catch (Exception ex) { UIHelper.ShowMessage(ex, clubesTitle); return; } //si no se pudo generenar el reporte en clubes y nos salimos if (rptClubes == null) { UIHelper.ShowMessage("This report did not return data", MessageBoxImage.Exclamation, clubesTitle); return; } //si no encontramos la membrecia en clubles, nos salimos if (rptClubes.Membership == null) { UIHelper.ShowMessage("Membership not found", MessageBoxImage.Exclamation, clubesTitle); return; } Services.CallCenterService.RptEquity rptCallCenter = null; try { //Obtenemos la membrecia en el servicio de Call Center rptCallCenter = CallCenterHelper.GetRptEquity(membershipNum, Convert.ToInt32(company), club); } catch (Exception ex) { UIHelper.ShowMessage(ex, callCenterTitle); return; } // si no se pudo generar reporte en Call Center nos salimos if (rptCallCenter == null) { UIHelper.ShowMessage("This report did not return data", MessageBoxImage.Exclamation, callCenterTitle); return; } // si no encontramos la membresia en Credito y Cobranza Reserva, nos salimos if (rptCallCenter.Membership == null) { UIHelper.ShowMessage("Membership not found", MessageBoxImage.Exclamation, callCenterTitle); return; } // indicamos que ciertas listas del reporte no tienen registros RptEquityHeader header = new RptEquityHeader(); header.HasGolfFields = rptClubes.GolfFieldsDetail.Length > 0; header.IsElite = (club == EnumClub.PalaceElite); var equity = new rptEquity(); //datos generales de equity equity.Database.Tables["Membership"].SetDataSource(ObjectHelper.ObjectToList(rptClubes.Membership)); equity.Database.Tables["Member"].SetDataSource(ObjectHelper.ObjectToList(rptCallCenter.Membership)); //Si no tiene un Salesman con OPC no se envia nada Services.ClubesService.RptEquitySalesman[] salesmanOPC = rptClubes.Salesmen.Where(sm => sm.Title.Trim() == "OPC").ToArray(); if (salesmanOPC.Length > 0) { equity.Database.Tables["SalesmanOPC"].SetDataSource(salesmanOPC); } equity.Database.Tables["Hotel"].SetDataSource(ObjectHelper.ObjectToList(rptClubes.Hotels)); equity.Database.Tables["GolfFieldsHeader"].SetDataSource(ObjectHelper.ObjectToList(rptClubes.GolfFieldsHeader)); if (rptClubes.Verification != null) { rptClubes.Verification.VOLUMENGOLF = rptCallCenter.Membership.Golf - (rptClubes.Verification.VOLUMENGOLF / EquityHelpers.GetIVAByOffice(rptClubes.Membership.OFFICE)); } equity.Database.Tables["Verification"].SetDataSource(ObjectHelper.ObjectToList(rptClubes.Verification)); //Subreportes if (club == EnumClub.PalaceElite) { header.HasMembershipsPrevious = rptClubes.MembershipsPrevious.Length > 0; if (header.HasMembershipsPrevious) { equity.Subreports["rptEquityMembershipsPrevious.rpt"].SetDataSource(rptClubes.MembershipsPrevious); } } equity.Subreports["rptEquitySalesman.rpt"].SetDataSource(rptClubes.Salesmen); equity.Subreports["rptEquityCoOwners.rpt"].SetDataSource(rptClubes.CoOwners); equity.Subreports["rptEquityBeneficiaries.rpt"].Database.Tables["Reporte"].SetDataSource(rptClubes.Beneficiaries); equity.Subreports["rptEquityBeneficiaries.rpt"].Database.Tables["Membership"].SetDataSource(ObjectHelper.ObjectToList(rptCallCenter.Membership)); equity.Subreports["rptEquityGolfFields.rpt"].SetDataSource(rptClubes.GolfFieldsDetail); equity.Subreports["rptEquityRoomTypes.rpt"].SetDataSource(rptClubes.RoomTypes); RptEquityProvision[] provisionsSNORM = rptCallCenter.Provisions.Where(p => p.IsSNORM == true).ToArray(); header.HasSNORM = provisionsSNORM.Length > 0; if (header.HasSNORM) { equity.Subreports["rptEquityProvisionsSNORM.rpt"].SetDataSource(provisionsSNORM); } RptEquityProvision[] provisionsSAIRF = rptCallCenter.Provisions.Where(p => p.IsSAIRF == true).ToArray(); header.HasSAIRF = provisionsSAIRF.Length > 0; equity.Subreports["rptEquityProvisionsSAIRF.rpt"].SetDataSource(provisionsSAIRF); RptEquityProvision[] provisionsSRCI = rptCallCenter.Provisions.Where(p => p.IsSRCI == true).ToArray(); header.HasSRCI = provisionsSRCI.Length > 0; equity.Subreports["rptEquityProvisionsSRCI.rpt"].SetDataSource(provisionsSRCI); RptEquityProvision[] provisionsSCOMP = rptCallCenter.Provisions.Where(p => p.IsSCOMP == true).ToArray(); header.HasSCOMP = provisionsSCOMP.Length > 0; equity.Subreports["rptEquityProvisionsSCOMP.rpt"].SetDataSource(provisionsSCOMP); RptEquityProvision[] provisionsSCRG = rptCallCenter.Provisions.Where(p => p.IsSCRG == true).ToArray(); header.HasSCRG = provisionsSCRG.Length > 0; equity.Subreports["rptEquityProvisionsSCRG.rpt"].SetDataSource(provisionsSCRG); RptEquityProvision[] provisionsSIGR = rptCallCenter.Provisions.Where(p => p.IsSIGR == true).ToArray(); header.HasSIGR = provisionsSIGR.Length > 0; equity.Subreports["rptEquityProvisionsSIGR.rpt"].SetDataSource(provisionsSIGR); RptEquityProvision[] provisionsSVEC = rptCallCenter.Provisions.Where(p => p.IsSVEC == true).ToArray(); header.HasSVEC = provisionsSVEC.Length > 0; equity.Subreports["rptEquityProvisionsSVEC.rpt"].SetDataSource(provisionsSVEC); RptEquityProvision[] provisionsSREF = rptCallCenter.Provisions.Where(p => p.IsSREF == true).ToArray(); header.HasSREF = provisionsSREF.Length > 0; equity.Subreports["rptEquityProvisionsSREF.rpt"].SetDataSource(provisionsSREF); equity.Database.Tables["Header"].SetDataSource(ObjectHelper.ObjectToList(header)); if (rptCallCenter.Reservations.Length != 0) { equity.Subreports["rptEquityReservations.rpt"].SetDataSource(rptCallCenter.Reservations); } if (rptClubes.BalanceElectronicPurseHeaders.Length == 0) { equity.Subreports["rptEquityBalanceElectronicPurse.rpt"].ReportDefinition.Sections["GroupHeaderSection1"].SectionFormat.EnableSuppress = true; } equity.Subreports["rptEquityBalanceElectronicPurse.rpt"].Database.Tables["EquityBalanceElectronicPurseDetail"].SetDataSource(rptClubes.BalanceElectronicPurseDetails); equity.Subreports["rptEquityBalanceElectronicPurse.rpt"].Database.Tables["BalanceElectronicPurseHeader"].SetDataSource(rptClubes.BalanceElectronicPurseHeaders); var sum = rptCallCenter.Membership.Down - rptCallCenter.Membership.Down_escrow - rptCallCenter.Membership.Down_bal; if (sum > 1) { equity.Subreports["rptEquityPaymentPromises.rpt"].SetDataSource(rptClubes.PaymentPromises); } if (club == EnumClub.PalaceElite) { equity.Subreports["rptEquityWeeksNights.rpt"].Database.Tables["WeeksNightsDetail"].SetDataSource(rptClubes.WeeksNightsDetails); equity.Subreports["rptEquityWeeksNights.rpt"].Database.Tables["WeeksNightsHeader"].SetDataSource(rptClubes.WeeksNightsHeaders); } if (club == EnumClub.PalaceElite) { equity.Subreports["rptEquityGolfRCI.rpt"].SetDataSource(rptClubes.GolfRCI); } else { equity.ReportDefinition.ReportObjects["srptGolfRCI"].ObjectFormat.EnableSuppress = true; } if (club == EnumClub.PalaceElite) { equity.Subreports["rptEquityPromotions.rpt"].SetDataSource(rptClubes.Promotions); } if (club == EnumClub.PalaceElite) { if (rptClubes.MemberExtension != null) { if (rptClubes.MemberExtension.WHOLESALER) { equity.ReportDefinition.Sections["Section2"].SectionFormat.EnableSuppress = false; } } } var frm = new frmViewer(equity); frm.Owner = owner; frm.ShowDialog(); } else { UIHelper.ShowMessage("Access denied"); } } }
/// <summary> /// Obtiene el reporte Production By Lead Source & Market(Monthly). /// </summary> /// <returns>List of RptProductionByLeadSourceMarketMonthly</returns> /// <history> /// [edgrodriguez] 21/Abr/2016 Created /// </history> public static async Task <List <RptProductionByLeadSourceMarketMonthly> > GetRptProductionByLeadSourceMarketMonthly(DateTime?dtmStart, DateTime?dtmEnd, EnumQuinellas quinellas, EnumExternalInvitation external, EnumBasedOnArrival basedOnArrival, string leadSources = "ALL", EnumProgram program = EnumProgram.All) { return(await Task.Run(() => { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { return dbContext.USP_OR_RptProductionByLeadSourceMarketMonthly(dtmStart, dtmEnd, leadSources, EnumToListHelper.GetEnumDescription(program), Convert.ToBoolean(quinellas), Convert.ToInt32(external), Convert.ToBoolean(basedOnArrival)).ToList(); } })); }
/// <summary> /// Guarda un Sale con asincronia y con transaction /// </summary> /// <param name="saleOld">Sale Original antes de que se modificará</param> /// <param name="saleNew">Sale despues de que se modificará</param> /// <param name="obpayments">Observable Collection de tipo Payments</param> /// <param name="isEnabledsaRefMember">Para indicar como encuentra habilitado en txtsaRefMember.enabled </param> /// <param name="hoursDifSalesRoom">La direfencia de horas del Sales Room</param> /// <param name="user">Usuario que hizo el cambio</param> /// <param name="saleAmount">El monto de la venta</param> /// <param name="lstSalesSalesman">Listado de los SalesSalesmen que se modificaron</param> /// <param name="saleAmountOriginal">El monto de la venta original</param> /// <param name="ipMachine">Ip de la maquina en el que se hizo el cambio</param> /// <param name="lstSalesSalesmenChanges">Listadoque SalesSalesmen que se remplazaron</param> /// <param name="authorizedBy">Quien autorizo los cambios</param> /// <param name="isOnlySaveSalesSalesmen">Cuando este parametro esta en "True" indica que solo se guardara los SalesSalesmens</param> /// <history> /// [jorcanche] created 02/ago/2016 /// </history> public static async Task <int> SaveSale(Sale saleOld, Sale saleNew, ObservableCollection <Payment> obpayments, bool isEnabledsaRefMember, short hoursDifSalesRoom, string user, decimal saleAmount, IEnumerable <SalesSalesman> lstSalesSalesman, decimal saleAmountOriginal, string ipMachine, IEnumerable <SalesmenChanges> lstSalesSalesmenChanges, string authorizedBy, bool isOnlySaveSalesSalesmen = false) { return(await Task.Run(() => { using (var dbContext = new IMEntities(ConnectionHelper.ConnectionString())) { using (var transaction = dbContext.Database.BeginTransaction(System.Data.IsolationLevel.Serializable)) { try { //Si el parametro isOnlySaveSalesSalesmen esta en "True" No permitira hacer ningun movimiento mas que el de //"Guardo de los movimientos de los SalesSalesmen" if (!isOnlySaveSalesSalesmen) { #region Guardamos el Sale //***************************************************************************************************** // Guardamos el Sale //***************************************************************************************************** //1.- Guardamos cambios en el Sale si hubo cambios if (!ObjectHelper.IsEquals(saleNew, saleOld)) { dbContext.Entry(saleNew).State = EntityState.Modified; } #endregion #region Guardamos los pagos //***************************************************************************************************** // Guardamos los pagos //***************************************************************************************************** //2.- Eliminamos uno o mas registros que contengan el Id Sale en la tabla Payments //2.1.- Obtenemos los Payments que estan actualmente en la base con este Sale var lstPayments = dbContext.Payments.Where(p => p.pasa == saleNew.saID); //2.2 Si hubo Payments los eliminamos if (lstPayments.Any()) { dbContext.Payments.RemoveRange(lstPayments); } //2.3 Guardamos los nuevos Payments. foreach (var payment in obpayments) { dbContext.Entry(payment).State = EntityState.Added; } #endregion #region Marcamos las ventas como actualizadas //***************************************************************************************************** // Marcamos las ventas como actualizada //***************************************************************************************************** //3.-Si hubo cambio con la anterior venta se procede if (isEnabledsaRefMember && saleNew.saReference != saleOld.saReference) { //3.1.- si tenia venta anterior, la marcamos como actualizada if (saleOld.saReference != null) { //3.2.- marcamos la venta anterior actual como actualizada dbContext.USP_OR_UpdateSaleUpdated(saleOld.saReference, false); } //3.3.- actualizamos los vendedores del huesped en base a los vendedores de la venta dbContext.USP_OR_UpdateSaleUpdated(saleNew.saReference, true); } #endregion #region Actualizamos los vendedores del huesped en base a los vendedores de la venta //***************************************************************************************************** // Actualizamos los vendedores del huesped en base a los vendedores de la venta //***************************************************************************************************** //4.- Actualizamos dbContext.USP_OR_UpdateGuestSalesmen(saleNew.sagu, saleNew.saID); #endregion #region Si cambio de Guest ID realizamos lo cambios //***************************************************************************************************** // Si cambio de Guest ID realizamos lo cambios //***************************************************************************************************** //5.- Si hubo cambio en el sagu if (saleOld.sagu != saleNew.sagu) { //5.1.- Marcamos como venta el guest Id Nuevo dbContext.USP_OR_UpdateGuestSale(saleNew.sagu, true); //5.2.- Desmarcamos como venta el Guest Id anterior si ya no le quedan ventas if (!(from s in dbContext.Sales where s.sagu == saleNew.sagu select s).Any()) { dbContext.USP_OR_UpdateGuestSale(saleOld.sagu, false); } } #endregion } #region Guarda los movimientos de los SalesSalesmen //***************************************************************************************************** // Guarda los movimientos de los SalesSalesmen //***************************************************************************************************** //7.1.-Extraemos el Listado de los SaleMan que se modificaron //7.2.-Se elimina la propiedad virtual Persaonel para que no marque error de repeticion de llaves, // ya que personel tiene la llave de peID y la llave de la tabla SalesSaleman tiene igual la llave smpe y marcan conflicto var lstSalesSalemanAdd = new List <SalesSalesman>(); lstSalesSalesman.Where(ss => !ss.smSale || ss.smSaleAmountOwn != saleAmount || ss.smSaleAmountWith != saleAmount). ToList().ForEach(x => { var ss = new SalesSalesman(); ObjectHelper.CopyProperties(ss, x); lstSalesSalemanAdd.Add(ss); }); //7.3.- Eliminamos todos los registros de la tabla SalesSalesmen que sean de este sale var lstSalesSalesmanDelete = dbContext.SalesSalesmen.Where(salesSalesman => salesSalesman.smsa == saleNew.saID); if (lstSalesSalesmanDelete.Any()) { dbContext.SalesSalesmen.RemoveRange(lstSalesSalesmanDelete); } //7.4.- Se guardan los SalesSaleman que se modificaron foreach (var salesSalesSaleman in lstSalesSalemanAdd) { dbContext.Entry(salesSalesSaleman).State = EntityState.Added; } #endregion //Si el parametro isOnlySaveSalesSalesmen esta en "True" No permitira hacer ningun movimiento mas que el de //"Guardo de los movimientos de los SalesSalesmen" if (!isOnlySaveSalesSalesmen) { #region Guardamos el movimiento de venta del huesped //***************************************************************************************************** // Guardamos el movimiento de venta del huesped //***************************************************************************************************** //8.- Guardamos dbContext.USP_OR_SaveGuestMovement(saleNew.sagu, EnumToListHelper.GetEnumDescription(EnumGuestsMovementsType.Sale), user, Environment.MachineName, ipMachine); #endregion #region Guardamos los cambios de vendedores y la persona que autorizo los cambios //***************************************************************************************************** // Guardamos los cambios de vendedores y la persona que autorizo los cambios //***************************************************************************************************** //9.- Si No se autorizo no hacemos ningun cambio if (!string.IsNullOrEmpty(authorizedBy)) { //9.1.- Guardamos cambios foreach (var salesmenChange in lstSalesSalesmenChanges) { dbContext.USP_OR_SaveSalesmenChanges (saleNew.saID, authorizedBy, user, salesmenChange.roN, salesmenChange.schPosition, salesmenChange.schOldSalesman, salesmenChange.schNewSalesman, null, "SL"); } } #endregion } //Si no hubo ningun problema guardamos cambios var respuesta = dbContext.SaveChanges(); if (!isOnlySaveSalesSalesmen) { #region Guardamos el historico de la venta //***************************************************************************************************** // Guardamos el historico de la venta //***************************************************************************************************** //6.1.- Guardamos SaleLog dbContext.USP_OR_SaveSaleLog(saleNew.saID, hoursDifSalesRoom, user); #endregion } //Confirmamos la transaccion transaction.Commit(); return respuesta; } catch (Exception) { //De lo contrario mandamos el mensaje de error en la interfaz y realizamos un Rollback transaction.Rollback(); throw; } } } })); }
/// <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> /// 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> /// Carga y configuracion del grid Programs /// </summary> /// <param name="blnPrograms"></param> /// <history> /// [aalcocer] 09/07/2016 Created /// </history> private async void LoadPrograms(bool blnPrograms) { if (!blnPrograms) { pnlPrograms.Visibility = Visibility.Collapsed; return; } _lstPrograms = await BRPrograms.GetPrograms(); dtgPrograms.ItemsSource = _lstPrograms; if (frmPrs._clsFilter.EnumProgram == EnumProgram.All) { chkAllPrograms.IsChecked = true; } else { dtgPrograms.SelectedItem = _lstPrograms.FirstOrDefault(c => c.pgID == EnumToListHelper.GetEnumDescription(frmPrs._clsFilter.EnumProgram)); } }
/// <summary> /// Determina si el usuario tiene cierto nivel de un permiso /// </summary> /// <param name="permission">Permiso</param> /// <param name="level">Nivel</param> /// <history> /// [jorcanche] 08/Mar/2016 Created /// </history> public bool HasPermission(EnumPermission permission, EnumPermisionLevel level) { return(this.Permissions.Exists(p => p.pppm == EnumToListHelper.GetEnumDescription(permission) && p.pppl >= (int)level)); }
/// <summary> /// Determina si el usuario tiene cierto rol /// </summary> /// <param name="role">Rol</param> /// <history> /// [jorcanche] 08/Mar/2016 Created /// </history> public bool HasRole(EnumRole role) { return(this.Roles.Exists(p => p.prro == EnumToListHelper.GetEnumDescription(role))); }