public ActionResult Create(CreateAbsenceRequestViewModel model) { try { var StartDate = Convert.ToDateTime(model.StartDate); var EndDate = Convert.ToDateTime(model.EndDate); var absenceTypes = _absenceTypeRepository.GetAll().ToList(); var absenceTypesItems = absenceTypes.Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() }).ToList(); model.AbsenceTypes = absenceTypesItems; if (!ModelState.IsValid) { return(View(model)); } if (DateTime.Compare(StartDate, EndDate) > 1) { ModelState.AddModelError("", "Start Date cannot be further in the future the the end date"); return(View(model)); } var student = _userManager.GetUserAsync(User).Result; var allocation = _absenceAllocationRepository.GetAbsenceAllocationsByStudent(student.Id).FirstOrDefault(x => x.AbsenceTypeId == model.AbsenceTypeId); int daysRequested = (int)(EndDate.Date - StartDate.Date).TotalDays; if (daysRequested > allocation.NumberOfDays) { ModelState.AddModelError("", "You do not have enough days for this request"); return(View(model)); } var AbsenceRequestVm = new AbsenceRequestViewModel { RequestingStudentId = student.Id, StartDate = StartDate, EndDate = EndDate, Approved = null, RequestDate = DateTime.Now, ActionDate = DateTime.Now, AbsenceTypeId = model.AbsenceTypeId }; var AbsenceRequest = _mapper.Map <AbsenceRequest>(AbsenceRequestVm); var isSuccuss = _absenceRequestRepo.Create(AbsenceRequest); if (!isSuccuss) { ModelState.AddModelError("", "Something went wrong in the submit action"); return(View(model)); } return(RedirectToAction(nameof(Index))); } catch (Exception ex) { return(View()); } }
// GET: AbsenceRequestController/Create public ActionResult Create() { var absenceTypes = _absenceTypeRepository.GetAll().ToList(); var absenceTypesItems = absenceTypes.Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() }).ToList(); var model = new CreateAbsenceRequestViewModel { AbsenceTypes = absenceTypesItems }; return(View(model)); }