public ActionResult Create(int personnelId, AbsenceViewModel absenceViewModel) { var organisationId = UserOrganisationId; if (ModelState.IsValid) { absenceViewModel.Absence.ApprovalStateId = ApprovalStates.Requested.GetHashCode(); absenceViewModel.Absence.AbsenceStatusByUser = ApplicationUser.Id; absenceViewModel.Absence.AbsenceStatusDateTimeUtc = DateTime.UtcNow; absenceViewModel.Absence.OrganisationId = organisationId; var result = HRBusinessService.CreateAbsence(organisationId, absenceViewModel.Absence); if (result.Succeeded) { return(RedirectToAction("Profile", "Personnel", new { id = absenceViewModel.Absence.PersonnelId })); } foreach (var error in result.Errors) { ModelState.AddModelError("", error); } } var employmentStartDate = HRBusinessService.RetrievePersonnelEmployments(organisationId, absenceViewModel.Absence.PersonnelId).Min(e => e.StartDate); var employmentEndDate = HRBusinessService.RetrievePersonnelAbsencePeriods(organisationId, absenceViewModel.Absence.PersonnelId).Max(e => e.EndDate); var personnelAbsenceEntitlement = HRBusinessService.RetrievePersonnelAbsenceEntitlement(organisationId, absenceViewModel.Absence.PersonnelId, absenceViewModel.Absence.PersonnelAbsenceEntitlementId); absenceViewModel.BeginDate = absenceViewModel.Absence.BeginDateUtc; absenceViewModel.EndDate = absenceViewModel.Absence.EndDateUtc; absenceViewModel.Period = personnelAbsenceEntitlement.Period; absenceViewModel.AbsenceTypes = new SelectList(HRBusinessService.RetrieveAbsencePolicyEntitlements(organisationId, personnelAbsenceEntitlement.AbsencePolicyPeriod.AbsencePolicyId).Items.Select(s => s.AbsenceType).ToList(), "AbsenceTypeId", "Name", absenceViewModel.Absence.AbsenceTypeId); absenceViewModel.PersonnelAbsenceEntitlement = personnelAbsenceEntitlement; absenceViewModel.EmploymentBeginDate = employmentStartDate; absenceViewModel.EmploymentEndDate = employmentEndDate; return(View(absenceViewModel)); }