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));
        }
Example #2
0
        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());
        }