コード例 #1
0
        // 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));
        }
コード例 #2
0
        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));
            }
        }