private void GetLeaveSummary(out AnnualLeave getEmpAnnaulLeave, out double approvedLeaveTotal, out double pendingLeaveTotal, out List <EmployeeLeave> leaveApproved, out List <EmployeeLeave> leavePending, out double remainingLeave) { var loginUsername = HttpContext.User.Identity.Name; var empId = employeeRepository.GetByUserName(loginUsername).EmployeeId; //total year for year getEmpAnnaulLeave = annualLeaveRepository.GetById(empId); //approve leave total approvedLeaveTotal = 0; pendingLeaveTotal = 0; leaveApproved = leaveRepository.GetEmployeeApprovedLeaves(empId); foreach (var item in leaveApproved) { DateTime startdate = Convert.ToDateTime(item.LeaveStartDate); DateTime endDate = Convert.ToDateTime(item.LeaveEndDate); approvedLeaveTotal += AnnualLeaveHelper.CalculateLeave(startdate, endDate, true, true); } leavePending = leaveRepository.GetEmployeePendingLeaves(empId); foreach (var item in leavePending) { DateTime startdate = Convert.ToDateTime(item.LeaveStartDate); DateTime endDate = Convert.ToDateTime(item.LeaveEndDate); pendingLeaveTotal += AnnualLeaveHelper.CalculateLeave(startdate, endDate, true, true); } remainingLeave = Convert.ToDouble(getEmpAnnaulLeave.TotalLeavePerYear) - (Convert.ToDouble(pendingLeaveTotal) + Convert.ToDouble(approvedLeaveTotal)); }
public ActionResult EmployeeLeave(EmployeeViewModel employeeViewModel) { DateTime StartDate = Convert.ToDateTime(employeeViewModel.StartDate); DateTime EndDate = Convert.ToDateTime(employeeViewModel.EndDate); bool isStartAndEndDateGreater = false; bool isEndDateGreater = false; //check if start date is greater than today's date and if end date is greater than today's date AnnualLeaveHelper.StartAndEndDateValidation(StartDate, EndDate, ref isStartAndEndDateGreater, ref isEndDateGreater); double leaveTotal = AnnualLeaveHelper.CalculateLeave(StartDate, EndDate, isStartAndEndDateGreater, isEndDateGreater); //check if user already booked those dates int?empId = GetEmployeeId(); var dateAlreadyExits = new HashSet <DateTime>(); ValidateLeaveDate(StartDate, EndDate, empId, dateAlreadyExits); if (leaveTotal > 0 && dateAlreadyExits.Count() == 0) { if (empId != null) { var _employeeLeave = new EmployeeLeave(); _employeeLeave.Employee_Id = empId; _employeeLeave.LeaveStartDate = StartDate; _employeeLeave.LeaveEndDate = EndDate; _employeeLeave.TotalLeaveAuthorized = Convert.ToDecimal(leaveTotal); _empLeaveRepository.Insert(_employeeLeave); //Send email to manager and employee MailMessage msg = new MailMessage(); } } else { //this date has already been requested for and has been approved } return(View()); }