Ejemplo n.º 1
0
        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));
        }