Пример #1
0
        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());
            }
        }
Пример #2
0
        // 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));
        }