// GET: LeaveHistoryController/Create public async Task <ActionResult> Create() { var leaveTypes = await _leaveTypeRepo.fndAll(); var leaveTypeItem = leaveTypes.Select(q => new SelectListItem { Text = q.Name, Value = q.Id.ToString() }); var model = new createLeaveRequestVM { leaveTypes = leaveTypeItem }; return(View(model)); }
public async Task <ActionResult> Create(createLeaveRequestVM model) { try { var startDate = Convert.ToDateTime(model.startDate); var endDate = Convert.ToDateTime(model.endDate); var leaveTypes = await _leaveTypeRepo.fndAll(); var leaveTypeItem = leaveTypes.Select(q => new SelectListItem { Text = q.Name, Value = q.Id.ToString() }); model.leaveTypes = leaveTypeItem; if (ModelState.IsValid) { if (DateTime.Compare(startDate, endDate) > 0) { ModelState.AddModelError("", "Start date cannot be greater than end date."); return(View(model)); } else { var employee = await _userManager.GetUserAsync(User); var allocations = await _leavaAllocRepo.getLeaveAllocationDetailonLeaveTypeId(employee.Id, model.LeaveTypeId); int requestedDays = (int)(endDate.Date - startDate.Date).TotalDays; if (requestedDays > allocations.NumberOfDays) { ModelState.AddModelError("", "You dont have sufficient days left , please choose less days."); return(View(model)); } var leaveRequestData = new LeaveRequestVM { requestEmployeeid = employee.Id, LeaveTypeId = model.LeaveTypeId, startDate = startDate, endDate = endDate, Approved = null, dateRequested = DateTime.Now, dateActioned = DateTime.Now, RequestComments = model.RequestComments }; var leaveRequestUpdate = _mapper.Map <LeaveRequest>(leaveRequestData); var isSuccess = await _leaveRequestrepo.Create(leaveRequestUpdate); if (!isSuccess) { ModelState.AddModelError("", "Unable to process the request, Something went wron while submitting!"); return(View(model)); } } } else { return(View(model)); } return(RedirectToAction(nameof(Index), "Home")); } catch (Exception ex) { ModelState.AddModelError("", "Somethig went wrong!"); return(View(model)); } }