コード例 #1
0
 public IActionResult Post([FromBody] Leave leave)
 {
     using (var scope = new TransactionScope())
     {
         _leaveRepository.ApplyLeave(leave);
         scope.Complete();
         return(CreatedAtAction(nameof(Get), new { id = leave.ID }, leave));
     }
 }
コード例 #2
0
        public async Task <IActionResult> ApplyLeave(LeaveRequest leaveRequest)
        {
            DateTimeHandler dateTimeHandler = new DateTimeHandler();
            var             totalLeave      = await LeaveRepo.GetTotalLeaves();

            var user = await UserRepo.GetUser(leaveRequest.EId);

            try
            {
                float noOfLeaveDays = dateTimeHandler.CalculateDays(leaveRequest.FromDate, leaveRequest.ToDate);
                if (noOfLeaveDays <= 0)
                {
                    return(BadRequest("Please check From and To dates"));
                }

                if (leaveRequest.Type.Equals("Earned") && (totalLeave.TotalEarnedLeaves - user.UsedEarnedLeaves) >= noOfLeaveDays ||
                    leaveRequest.Type.Equals("Casual") && (totalLeave.TotalCasualLeaves - user.UsedCasualLeaves) >= noOfLeaveDays)
                {
                    var leave = await LeaveRepo.ApplyLeave(leaveRequest);

                    String logFilePath = Environment.ContentRootPath + Configuration.GetValue <String>("LogFile");
                    Logger.log("  NLR\t:" +
                               " E-ID: " + leaveRequest.EId +
                               ", Type: " + leaveRequest.Type +
                               ", From: " + leaveRequest.FromDate +
                               ", To: " + leaveRequest.ToDate, logFilePath);

                    return(Created(
                               leave.Id.ToString(),
                               leave
                               ));
                }
                else
                {
                    return(BadRequest(
                               "Your available leaves of the selected type are exhausted"
                               ));
                }
            }
            catch (FormatException)
            {
                return(StatusCode(500, "Could not send leave request. Please try again later!"));
            }
        }
コード例 #3
0
 public async Task <ActionResult> ApplyLeave(LeaveModel model)
 {
     model.LeaveType   = _userDetailRepository.LeaveType();
     model.Status      = 1;
     model.RequestedOn = DateTime.Now;
     if (ModelState.IsValid && ModelState.ErrorCount == 0)
     {
         if (model != null)
         {
             int diif = model.LeaveToDate.Subtract(model.LeaveFromDate).Days;
             model.NumberOfLeaves = diif == 0 ? 1 : diif + 1;
         }
         bool   IsLeaveApplied = _leaveRepository.ApplyLeave(model);
         string mgrEmailID     = _userDetailRepository.GetUserMgrEmailIdByUserBadgeNumber(model.BadgeNumber);
         if (IsLeaveApplied)
         {
             ViewBag.Result      = "Saved Succesfully";
             TempData["Success"] = "Added Successfully!";
             HelperClass.SendEmailFromEmployee(model.ManagerName, model.EmployeeName, model.LeaveFromDate, model.LeaveToDate, mgrEmailID);
         }
     }
     return(View(model));
 }