public bool AddEmployeeLeaveEntry(LeaveEntry leaveEntry)
        {
            try
            {
                var LeaveConfirmationViewModel = new LeaveConfirmationViewModel
                {
                    EmployeeCode           = leaveEntry.EmployeeCode,
                    LeaveTypeCode          = leaveEntry.LeaveTypeCode,
                    LeaveRequestedFromDate = leaveEntry.LeaveRequestedFromDate.ToString(),
                    LeaveStatus            = leaveEntry.LeaveStatus,
                    NumberOfLeaves         = leaveEntry.NumberOfLeaves
                };
                var result = _leaveStatusService.UpdateEmployeeLeaveAllocation(LeaveConfirmationViewModel);

                if (result == false)
                {
                    return(false);
                }

                _unitOfWork.LeaveEntryRepository.Insert(leaveEntry);
                _unitOfWork.SaveAsync();
                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
        public object GetAllLeaveByEmployee(string employeeCode, int?year)
        {
            var leaveList = _unitOfWork.LeaveEntryRepository.Get(e => e.EmployeeCode == employeeCode && e.LeaveRequestedFromDate.Year == year).ToList();
            List <LeaveConfirmationViewModel> leaveConfirmationDtoList = new List <LeaveConfirmationViewModel>();

            foreach (var leave in leaveList)
            {
                var leaveType = _unitOfWork.LeaveTypesRepository.Get(e => e.LeaveTypeCode == leave.LeaveTypeCode).FirstOrDefault().LeaveTypeDescription;

                var leaveConfirmationViewModel = new LeaveConfirmationViewModel
                {
                    Year                   = leave.LeaveRequestedFromDate.Year.ToString(),
                    LeaveType              = leaveType,
                    EmployeeCode           = leave.EmployeeCode,
                    LeaveTypeCode          = leave.LeaveTypeCode,
                    LeaveRequestedFromDate = leave.LeaveRequestedFromDate.ToString("dd-MM-yyyy"),
                    LeaveRequestedToDate   = leave.LeaveRequestedToDate.ToString("dd-MM-yyyy"),
                    NumberOfLeaves         = leave.NumberOfLeaves,
                    EmployeeComment        = leave.EmployeeComment,
                    ApproverComment        = leave.ApproverComment,
                    LeaveStatus            = leave.LeaveStatus
                };
                leaveConfirmationDtoList.Add(leaveConfirmationViewModel);
            }

            return(leaveConfirmationDtoList);
        }
예제 #3
0
        public ActionResult LeaveConfirmation(string employeeCode, string leaveRequestedFromDate, string leaveTypeCode, int noOfLeave, string status, string approverComment)
        {
            string supervisorCode             = Session["LoggedSupervisorCode"].ToString();
            var    leaveConfirmationViewModel = new LeaveConfirmationViewModel
            {
                EmployeeCode           = employeeCode,
                LeaveTypeCode          = leaveTypeCode,
                LeaveRequestedFromDate = leaveRequestedFromDate,
                LeaveStatus            = status,
                NumberOfLeaves         = noOfLeave,
                ApproverComment        = approverComment,
                LeaveStatusUpdatedDate = DateTime.Now.Date.ToString(),
                LeaveStatusUpdatedBy   = supervisorCode
            };

            var result = _leaveStatusService.UpdateEmployeeLeaveEntry(leaveConfirmationViewModel);

            if (result == true)
            {
                if (status == "Approved")
                {
                    TempData["SuccessMessage"] = "Employee Successfully Approved !";
                }
                else if (status == "Rejected")
                {
                    TempData["SuccessMessage"] = "Employee Successfully Rejected !";
                }
            }
            else
            {
                TempData["ErrorMessage"] = "Error !";
            }
            return(Redirect(this.Request.UrlReferrer.AbsolutePath));
        }
        public object GetLeaveConfirmationsBySupervisor(string supervisorCode)
        {
            var approvedRejectedLeaveList = _unitOfWork.LeaveEntryRepository.Get(e => e.EmployeesSupervisorCode == supervisorCode && e.LeaveStatus != "Requested").ToList();
            List <LeaveConfirmationViewModel> leaveConfirmationDtoList = new List <LeaveConfirmationViewModel>();

            foreach (var approvedRejectedLeave in approvedRejectedLeaveList)
            {
                var employeeName = _unitOfWork.EmployeeMasterRepository.Get(e => e.EmployeeCode == approvedRejectedLeave.EmployeeCode).FirstOrDefault().EmployeeName;
                var leaveType    = _unitOfWork.LeaveTypesRepository.Get(e => e.LeaveTypeCode == approvedRejectedLeave.LeaveTypeCode).FirstOrDefault().LeaveTypeDescription;

                var leaveConfirmationViewModel = new LeaveConfirmationViewModel
                {
                    EmployeeName           = employeeName,
                    LeaveType              = leaveType,
                    EmployeeCode           = approvedRejectedLeave.EmployeeCode,
                    LeaveTypeCode          = approvedRejectedLeave.LeaveTypeCode,
                    LeaveRequestedFromDate = approvedRejectedLeave.LeaveRequestedFromDate.ToString("MM/dd/yyyy"),
                    LeaveRequestedToDate   = approvedRejectedLeave.LeaveRequestedToDate.ToString("MM/dd/yyyy"),
                    NumberOfLeaves         = approvedRejectedLeave.NumberOfLeaves,
                    EmployeeComment        = approvedRejectedLeave.EmployeeComment,
                    LeaveStatusUpdatedDate = approvedRejectedLeave.LeaveStatusUpdatedDate,
                    ApproverComment        = approvedRejectedLeave.ApproverComment,
                    LeaveStatus            = approvedRejectedLeave.LeaveStatus
                };
                leaveConfirmationDtoList.Add(leaveConfirmationViewModel);
            }

            return(leaveConfirmationDtoList);
        }
        public bool UpdateEmployeeLeaveAllocation(LeaveConfirmationViewModel leaveConfirmationViewModel)
        {
            try
            {
                var requestedDate           = Convert.ToDateTime(leaveConfirmationViewModel.LeaveRequestedFromDate);
                var employeeLeaveAllocation = _unitOfWork.LeaveAllocationRepository.Get(e => e.EmployeeCode == leaveConfirmationViewModel.EmployeeCode &&
                                                                                        e.LeaveTypeCode == leaveConfirmationViewModel.LeaveTypeCode && e.Year == requestedDate.Year.ToString()).ToList();

                if (employeeLeaveAllocation.Count > 0)
                {
                    if (leaveConfirmationViewModel.LeaveStatus == "Rejected")
                    {
                        employeeLeaveAllocation.FirstOrDefault().UtilizedLeaveAmount -= leaveConfirmationViewModel.NumberOfLeaves;
                        employeeLeaveAllocation.FirstOrDefault().RemainingLeaveAmount = employeeLeaveAllocation.FirstOrDefault().EntitledLeaveAmount - employeeLeaveAllocation.FirstOrDefault().UtilizedLeaveAmount;
                    }
                    else if (leaveConfirmationViewModel.LeaveStatus == "Requested")
                    {
                        employeeLeaveAllocation.FirstOrDefault().UtilizedLeaveAmount += leaveConfirmationViewModel.NumberOfLeaves;
                        employeeLeaveAllocation.FirstOrDefault().RemainingLeaveAmount = employeeLeaveAllocation.FirstOrDefault().EntitledLeaveAmount - employeeLeaveAllocation.FirstOrDefault().UtilizedLeaveAmount;
                    }
                    _unitOfWork.LeaveAllocationRepository.Update(employeeLeaveAllocation.FirstOrDefault());
                    _unitOfWork.SaveAsync();
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
        public bool UpdateEmployeeLeaveEntry(LeaveConfirmationViewModel leaveConfirmationViewModel)
        {
            try
            {
                var requestedDate      = Convert.ToDateTime(leaveConfirmationViewModel.LeaveRequestedFromDate);
                var employeeLeaveEntry = _unitOfWork.LeaveEntryRepository.Get(e => e.EmployeeCode == leaveConfirmationViewModel.EmployeeCode &&
                                                                              e.LeaveTypeCode == leaveConfirmationViewModel.LeaveTypeCode &&
                                                                              e.LeaveRequestedFromDate == requestedDate && e.LeaveStatus == "Requested").ToList();

                if (employeeLeaveEntry.Count > 0)
                {
                    employeeLeaveEntry.FirstOrDefault().LeaveStatus            = leaveConfirmationViewModel.LeaveStatus;
                    employeeLeaveEntry.FirstOrDefault().LeaveStatusUpdatedBy   = leaveConfirmationViewModel.LeaveStatusUpdatedBy;
                    employeeLeaveEntry.FirstOrDefault().LeaveStatusUpdatedDate = leaveConfirmationViewModel.LeaveStatusUpdatedDate;
                    employeeLeaveEntry.FirstOrDefault().ApproverComment        = leaveConfirmationViewModel.ApproverComment;

                    if (leaveConfirmationViewModel.LeaveStatus == "Rejected")
                    {
                        var result = UpdateEmployeeLeaveAllocation(leaveConfirmationViewModel);

                        if (result == false)
                        {
                            return(false);
                        }
                    }

                    _unitOfWork.LeaveEntryRepository.Update(employeeLeaveEntry.FirstOrDefault());
                    _unitOfWork.SaveAsync();
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception ex)
            {
                return(false);
            }
        }