public virtual IEnumerable weekCodeDateRecords() { FSRouteContractSchedule fsRouteContractScheduleRow = ContractScheduleRecords.Current; List <object> returnList = new List <object>(); List <object> weekCodeArgs = new List <object>(); List <int> dayOfWeekDays = new List <int>(); BqlCommand commandFilter = new Select <FSWeekCodeDate>(); Regex rgxP1 = new Regex(@"^[1-4]$"); Regex rgxP2 = new Regex(@"^[a-bA-B]$"); Regex rgxP3 = new Regex(@"^[c-fC-F]$"); Regex rgxP4 = new Regex(@"^[s-zS-Z]$"); if (fsRouteContractScheduleRow != null && string.IsNullOrEmpty(fsRouteContractScheduleRow.WeekCode) == false) { List <string> weekcodes = SharedFunctions.SplitWeekcodeByComma(fsRouteContractScheduleRow.WeekCode); foreach (string weekcode in weekcodes) { List <string> charsInWeekCode = SharedFunctions.SplitWeekcodeInChars(weekcode); string p1, p2, p3, p4; p1 = p2 = p3 = p4 = "%"; foreach (string letter in charsInWeekCode) { string letterAux = letter.ToUpper(); if (rgxP1.IsMatch(letterAux)) { p1 = letterAux; } else if (rgxP2.IsMatch(letterAux)) { p2 = letterAux; } else if (rgxP3.IsMatch(letterAux)) { p3 = letterAux; } else if (rgxP4.IsMatch(letterAux)) { p4 = letterAux; } } commandFilter = commandFilter.WhereOr(typeof( Where2 < Where < FSWeekCodeDate.weekCodeP1, Like <Required <FSWeekCodeDate.weekCodeP1> >, Or <FSWeekCodeDate.weekCodeP1, Like <Required <FSWeekCodeDate.weekCodeP1> >, Or <FSWeekCodeDate.weekCodeP1, IsNull> > >, And2 < Where < FSWeekCodeDate.weekCodeP2, Like <Required <FSWeekCodeDate.weekCodeP2> >, Or <FSWeekCodeDate.weekCodeP2, Like <Required <FSWeekCodeDate.weekCodeP2> >, Or <FSWeekCodeDate.weekCodeP2, IsNull> > >, And2 < Where < FSWeekCodeDate.weekCodeP3, Like <Required <FSWeekCodeDate.weekCodeP3> >, Or <FSWeekCodeDate.weekCodeP3, Like <Required <FSWeekCodeDate.weekCodeP3> >, Or <FSWeekCodeDate.weekCodeP3, IsNull> > >, And < Where < FSWeekCodeDate.weekCodeP4, Like <Required <FSWeekCodeDate.weekCodeP4> >, Or <FSWeekCodeDate.weekCodeP4, Like <Required <FSWeekCodeDate.weekCodeP4> >, Or <FSWeekCodeDate.weekCodeP4, IsNull> > > > > > >)); weekCodeArgs.Add(p1); weekCodeArgs.Add(p1.ToLower()); weekCodeArgs.Add(p2); weekCodeArgs.Add(p2.ToLower()); weekCodeArgs.Add(p3); weekCodeArgs.Add(p3.ToLower()); weekCodeArgs.Add(p4); weekCodeArgs.Add(p4.ToLower()); } WeekCodeFilter filter = WeekCodeFilter.Current; if (filter != null) { DateTime?dateBegin = filter.DateBegin; DateTime?dateEnd = null; if (filter.DateEnd.HasValue) { dateEnd = filter.DateEnd; } if (dateBegin.HasValue == true && dateEnd.HasValue == false) { dateEnd = filter.DateEnd.HasValue ? filter.DateEnd : dateBegin.Value.AddYears(1); } if (dateBegin != null) { commandFilter = commandFilter.WhereAnd(typeof(Where <FSWeekCodeDate.weekCodeDate, GreaterEqual <Required <WeekCodeFilter.dateBegin> > >)); weekCodeArgs.Add(dateBegin); } if (dateEnd != null) { commandFilter = commandFilter.WhereAnd(typeof(Where <FSWeekCodeDate.weekCodeDate, LessEqual <Required <WeekCodeFilter.dateEnd> > >)); weekCodeArgs.Add(dateEnd); } } if (fsRouteContractScheduleRow.FrequencyType == ID.Schedule_FrequencyType.WEEKLY) { if (fsRouteContractScheduleRow.WeeklyOnSun == true) { dayOfWeekDays.Add(ID.WeekDaysNumber.SUNDAY); } if (fsRouteContractScheduleRow.WeeklyOnMon == true) { dayOfWeekDays.Add(ID.WeekDaysNumber.MONDAY); } if (fsRouteContractScheduleRow.WeeklyOnTue == true) { dayOfWeekDays.Add(ID.WeekDaysNumber.TUESDAY); } if (fsRouteContractScheduleRow.WeeklyOnWed == true) { dayOfWeekDays.Add(ID.WeekDaysNumber.WEDNESDAY); } if (fsRouteContractScheduleRow.WeeklyOnThu == true) { dayOfWeekDays.Add(ID.WeekDaysNumber.THURSDAY); } if (fsRouteContractScheduleRow.WeeklyOnFri == true) { dayOfWeekDays.Add(ID.WeekDaysNumber.FRIDAY); } if (fsRouteContractScheduleRow.WeeklyOnSat == true) { dayOfWeekDays.Add(ID.WeekDaysNumber.SATURDAY); } if (dayOfWeekDays != null && dayOfWeekDays.Count > 0) { commandFilter = commandFilter.WhereAnd(InHelper <FSWeekCodeDate.dayOfWeek> .Create(dayOfWeekDays.Count)); foreach (int dayOfWeekDay in dayOfWeekDays) { weekCodeArgs.Add(dayOfWeekDay); } } } PXView weekCodeRecordsView = new PXView(this, true, commandFilter); return(weekCodeRecordsView.SelectMulti(weekCodeArgs.ToArray())); } return(returnList); }
public virtual IEnumerable weekCodeDateRecords() { FSRoute fsRouteRow = RouteRecords.Current; List <object> returnList = new List <object>(); List <object> weekCodeArgs = new List <object>(); List <int> dayOfWeekDays = new List <int>(); BqlCommand commandFilter = new Select <FSWeekCodeDate>(); Regex rgxP1 = new Regex(@"^[1-4]$"); Regex rgxP2 = new Regex(@"^[a-bA-B]$"); Regex rgxP3 = new Regex(@"^[c-fC-F]$"); Regex rgxP4 = new Regex(@"^[s-zS-Z]$"); if (fsRouteRow != null && string.IsNullOrEmpty(fsRouteRow.WeekCode) == false) { List <string> weekcodes = SharedFunctions.SplitWeekcodeByComma(fsRouteRow.WeekCode); foreach (string weekcode in weekcodes) { List <string> charsInWeekCode = SharedFunctions.SplitWeekcodeInChars(weekcode); string p1, p2, p3, p4; p1 = p2 = p3 = p4 = "%"; foreach (string letter in charsInWeekCode) { string letterAux = letter.ToUpper(); if (rgxP1.IsMatch(letterAux)) { p1 = letterAux; } else if (rgxP2.IsMatch(letterAux)) { p2 = letterAux; } else if (rgxP3.IsMatch(letterAux)) { p3 = letterAux; } else if (rgxP4.IsMatch(letterAux)) { p4 = letterAux; } } commandFilter = commandFilter.WhereOr < Where2 < Where < FSWeekCodeDate.weekCodeP1, Like <Required <FSWeekCodeDate.weekCodeP1> >, Or <FSWeekCodeDate.weekCodeP1, Like <Required <FSWeekCodeDate.weekCodeP1> >, Or <FSWeekCodeDate.weekCodeP1, IsNull> > >, And2 < Where < FSWeekCodeDate.weekCodeP2, Like <Required <FSWeekCodeDate.weekCodeP2> >, Or <FSWeekCodeDate.weekCodeP2, Like <Required <FSWeekCodeDate.weekCodeP2> >, Or <FSWeekCodeDate.weekCodeP2, IsNull> > >, And2 < Where < FSWeekCodeDate.weekCodeP3, Like <Required <FSWeekCodeDate.weekCodeP3> >, Or <FSWeekCodeDate.weekCodeP3, Like <Required <FSWeekCodeDate.weekCodeP3> >, Or <FSWeekCodeDate.weekCodeP3, IsNull> > >, And < Where < FSWeekCodeDate.weekCodeP4, Like <Required <FSWeekCodeDate.weekCodeP4> >, Or <FSWeekCodeDate.weekCodeP4, Like <Required <FSWeekCodeDate.weekCodeP4> >, Or <FSWeekCodeDate.weekCodeP4, IsNull> > > > > > > >(); weekCodeArgs.Add(p1); weekCodeArgs.Add(p1.ToLower()); weekCodeArgs.Add(p2); weekCodeArgs.Add(p2.ToLower()); weekCodeArgs.Add(p3); weekCodeArgs.Add(p3.ToLower()); weekCodeArgs.Add(p4); weekCodeArgs.Add(p4.ToLower()); } WeekCodeFilter filter = WeekCodeFilter.Current; if (filter != null) { if (filter.DateBegin != null) { commandFilter = commandFilter.WhereAnd(typeof(Where <FSWeekCodeDate.weekCodeDate, GreaterEqual <Current <WeekCodeFilter.dateBegin> > >)); } if (filter.DateEnd != null) { commandFilter = commandFilter.WhereAnd(typeof(Where <FSWeekCodeDate.weekCodeDate, LessEqual <Current <WeekCodeFilter.dateEnd> > >)); } } if (fsRouteRow.ActiveOnSunday == true) { dayOfWeekDays.Add(ID.WeekDaysNumber.SUNDAY); } if (fsRouteRow.ActiveOnMonday == true) { dayOfWeekDays.Add(ID.WeekDaysNumber.MONDAY); } if (fsRouteRow.ActiveOnTuesday == true) { dayOfWeekDays.Add(ID.WeekDaysNumber.TUESDAY); } if (fsRouteRow.ActiveOnWednesday == true) { dayOfWeekDays.Add(ID.WeekDaysNumber.WEDNESDAY); } if (fsRouteRow.ActiveOnThursday == true) { dayOfWeekDays.Add(ID.WeekDaysNumber.THURSDAY); } if (fsRouteRow.ActiveOnFriday == true) { dayOfWeekDays.Add(ID.WeekDaysNumber.FRIDAY); } if (fsRouteRow.ActiveOnSaturday == true) { dayOfWeekDays.Add(ID.WeekDaysNumber.SATURDAY); } if (dayOfWeekDays != null && dayOfWeekDays.Count > 0) { commandFilter = commandFilter.WhereAnd(InHelper <FSWeekCodeDate.dayOfWeek> .Create(dayOfWeekDays.Count)); foreach (int dayOfWeekDay in dayOfWeekDays) { weekCodeArgs.Add(dayOfWeekDay); } } PXView weekCodeRecordsView = new PXView(this, true, commandFilter); var startRow = PXView.StartRow; int totalRows = 0; var list = weekCodeRecordsView.Select( PXView.Currents, weekCodeArgs.ToArray(), PXView.Searches, PXView.SortColumns, PXView.Descendings, PXView.Filters, ref startRow, PXView.MaximumRows, ref totalRows); PXView.StartRow = 0; return(list); } return(returnList); }