public IActionResult ListProjectWeeks(int?ProjectID, string FromWeekID = "", string ToWeekID = "") { if (ProjectID == null) { return(NotFound()); } // TODO add regex check on from and to week id var weeks = _context.Week.Where(e => e.ProjectID == ProjectID); var weekComparer = new CompareWeekModel(); var WeekIDRegex = new Regex(@"^\d\d-\d\d\d\d$"); if (FromWeekID != null && FromWeekID != "" && WeekIDRegex.IsMatch(FromWeekID)) // FromWeekID is valid { if (ToWeekID != null && ToWeekID != "" && WeekIDRegex.IsMatch(ToWeekID)) // FromWeekID and ToWeekID is valid { } else // FromWeekID is valid and ToWeekID is invalid { var fromDate = WeekModel.GetMondayFromWeekID(FromWeekID); ToWeekID = WeekModel.GetIso8601WeekOfYear(fromDate.AddDays(21)) + "-" + DateTime.Now.Year; } } else // FromWeekID is invalid { if (ToWeekID != null && ToWeekID != "" && WeekIDRegex.IsMatch(ToWeekID)) // FromWeekID is invalid and ToWeekID is valid { var toDate = WeekModel.GetMondayFromWeekID(ToWeekID); FromWeekID = WeekModel.GetIso8601WeekOfYear(toDate.AddDays(-21)) + "-" + DateTime.Now.Year; } else // FromWeekID is invalid and ToWeekID is invalid { FromWeekID = WeekModel.GetIso8601WeekOfYear(DateTime.Now) + "-" + DateTime.Now.Year; ToWeekID = WeekModel.GetIso8601WeekOfYear(DateTime.Now.AddDays(21)) + "-" + DateTime.Now.Year; } } weeks = weeks.Where(e => weekComparer.CompareWeekIDs(e.WeekID, ToWeekID) <= 0 && weekComparer.CompareWeekIDs(e.WeekID, FromWeekID) >= 0); var weekList = weeks.ToList(); weekList.Sort(new CompareWeekModel()); var weeksView = new List <DetailsWeekViewModel>(); foreach (var week in weekList) { weeksView.Add(_WeeksRepository.PrepareWeekViewModel(_context, week)); } var ListProjectWeekViewModel = new ListProjectWeekViewModel { ProjectID = ProjectID.Value, FromWeekID = FromWeekID, ToWeekID = ToWeekID, WeekViewModels = weeksView }; return(View(ListProjectWeekViewModel)); }
public async Task <IActionResult> Details(int?ProjectID, string WeekID) { if (ProjectID == null || WeekID == null) { return(NotFound()); } var week = await _context.Week .FirstOrDefaultAsync(m => m.ProjectID == ProjectID && m.WeekID == WeekID); if (week == null) { return(NotFound()); } var weekViewModel = _WeeksRepository.PrepareWeekViewModel(_context, week); return(View(weekViewModel)); }