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)); } }
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!")); } }
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)); }