public async Task <ActionResult> Create(CreateLeaveRequestVMClass parCreateLeaveRequestVMClass) { try { var varStartDate = Convert.ToDateTime(parCreateLeaveRequestVMClass.StartDate); var varEndDate = Convert.ToDateTime(parCreateLeaveRequestVMClass.EndDate); var varLeaveTypeRepositoryClass = await _ILeaveTypeRepository.findAll(); var varSelectListItem = varLeaveTypeRepositoryClass.Select(x => new SelectListItem { Text = x.Name, Value = x.LeaveTypeID.ToString() }); parCreateLeaveRequestVMClass.selectLeaveTypes = varSelectListItem; if (!ModelState.IsValid) { return(View(parCreateLeaveRequestVMClass)); } int intWTF = (int)DateTime.Compare(varEndDate, varStartDate); if ((int)DateTime.Compare(varEndDate, varStartDate) < 0) { ModelState.AddModelError("", "To Date < then From Date"); return(View(parCreateLeaveRequestVMClass)); } var varEmployeeLoggedIn = _userManager.GetUserAsync(User).Result; var varLeaveAllocationClass = await _ILeaveAllocationRepository.getEmployeeTypeAllocation(varEmployeeLoggedIn.Id, parCreateLeaveRequestVMClass.LeaveTypeID); if (varLeaveAllocationClass.LeaveAllocationID == 0) { ModelState.AddModelError("", "No Leave Allocated"); return(View(parCreateLeaveRequestVMClass)); } double dblDaysRequested = (double)(varEndDate.Date - varStartDate.Date).TotalDays; if (dblDaysRequested > varLeaveAllocationClass.NumberOfDays) { ModelState.AddModelError("", "Exceeds Leave Allocated"); return(View(parCreateLeaveRequestVMClass)); } var varLeaveRequestVMClass = new LeaveRequestVMClass { StartDate = varStartDate, EndDate = varEndDate, LeaveTypeID = parCreateLeaveRequestVMClass.LeaveTypeID, DateRequested = DateTime.Now, DateActioned = DateTime.Now, RequestedEmployeeID = varEmployeeLoggedIn.Id }; var varLeaveRequestDataModel = _IMapper.Map <LeaveRequest>(varLeaveRequestVMClass); bool isSuccess = await _ILeaveRequestRepository.Create(varLeaveRequestDataModel); if (!isSuccess) { ModelState.AddModelError("", "Insert Applivation Error"); return(View(parCreateLeaveRequestVMClass)); } // TODO: Add insert logic here return(RedirectToAction(nameof(Index), "Home")); } catch (Exception exError) { ModelState.AddModelError("", exError.Message); return(View(parCreateLeaveRequestVMClass)); } }