public ActionResult Create4(VMOvertimeApproval vmOvertimeApproval, int?[] SelectedEmpIds)
        {
            VMLoggedUser LoggedInUser = Session["LoggedInUser"] as VMLoggedUser;
            List <VMOvertimeApprovalChild> vmOvertimeApprovalChildEntries = new List <VMOvertimeApprovalChild>();

            foreach (var empID in SelectedEmpIds)
            {
                VMOvertimeApprovalChild vmOvertimeApprovalChild = new VMOvertimeApprovalChild();
                string EncashableSingleOT = Request.Form["ENCS-" + empID.Value.ToString()].ToString();
                string EncashableDoubleOT = Request.Form["ENCD-" + empID.Value.ToString()].ToString();
                //string AbsentDays = Request.Form["ABDays-" + empID.Value.ToString()].ToString();
                //string CPLHours = Request.Form["CPLH-" + empID.Value.ToString()].ToString();
                string CPLHours = "0";
                vmOvertimeApprovalChild.EmpID = (int)empID;
                vmOvertimeApprovalChild.EncashableSingleOT = Convert.ToInt32(EncashableSingleOT);
                vmOvertimeApprovalChild.EncashableDoubleOT = Convert.ToInt32(EncashableDoubleOT);
                vmOvertimeApprovalChild.CPLConvertedOT     = Convert.ToInt32(CPLHours);
                //vmOvertimeApprovalChild.Absents = Convert.ToInt32(AbsentDays);
                vmOvertimeApprovalChildEntries.Add(vmOvertimeApprovalChild);
            }
            vmOvertimeApproval.OvertimeApprovalChild = vmOvertimeApprovalChildEntries.ToList();
            VMOvertimeApproval vm = OvertimeAprrovalService.GetCreate4(vmOvertimeApproval, LoggedInUser);

            //if (vm.ErrorMessages.Count == 0)
            return(RedirectToAction("Index"));
            //else
            //    return View("Create3", vm);
        }
        public List <VMOvertimeApprovalChild> GetIndex(VMLoggedUser user, int PayrollPeriodID)
        {
            List <VHR_EmployeeProfile> dbEmployees = GetSpecificEmployeeService.GetSpecificEmployees(user);
            List <MonthData>           monthDatas  = new List <MonthData>();

            if (user.UserRoleID == "U") // HR Normal
            {
                Expression <Func <MonthData, bool> > SpecificEntries = c => c.PayrollPeriodID == PayrollPeriodID && c.MonthDataStageID == "P" && (c.EncashbaleSingleOT > 0 || c.EncashbaleDoubleOT > 0 || c.CPLConversionOT > 0);
                monthDatas = MonthDataReporsitory.FindBy(SpecificEntries);
            }
            else if (user.UserRoleID == "H") // HR Admin
            {
                Expression <Func <MonthData, bool> > SpecificEntries = c => c.PayrollPeriodID == PayrollPeriodID && c.MonthDataStageID == "A" && (c.EncashbaleSingleOT > 0 || c.EncashbaleDoubleOT > 0 || c.CPLConversionOT > 0);
                monthDatas = MonthDataReporsitory.FindBy(SpecificEntries);
            }
            else if (user.UserRoleID == "A") // Admin
            {
                Expression <Func <MonthData, bool> > SpecificEntries = c => c.PayrollPeriodID == PayrollPeriodID && c.MonthDataStageID == "P" && (c.EncashbaleSingleOT > 0 || c.EncashbaleDoubleOT > 0 || c.CPLConversionOT > 0);
                monthDatas = MonthDataReporsitory.FindBy(SpecificEntries);
            }

            List <VMOvertimeApprovalChild> VMOvertimeApprovalChildList = new List <VMOvertimeApprovalChild>();
            PayrollPeriod payrollPeriod = DDService.GetAllPayrollPeriod().Where(aa => aa.PPayrollPeriodID == PayrollPeriodID).First();

            foreach (var dbEmployee in dbEmployees)
            {
                VMOvertimeApprovalChild vmOvertimeApprovalChild = new VMOvertimeApprovalChild();
                if (monthDatas.Where(aa => aa.EmployeeID == dbEmployee.PEmployeeID).Count() > 0)
                {
                    vmOvertimeApprovalChild = GetConveretedOTList(vmOvertimeApprovalChild, dbEmployee, monthDatas.First(aa => aa.EmployeeID == dbEmployee.PEmployeeID), payrollPeriod);
                    VMOvertimeApprovalChildList.Add(vmOvertimeApprovalChild);
                }
            }
            return(VMOvertimeApprovalChildList);
        }
        public VMOvertimeApproval GetCreate3(VMOvertimeApprovalSelection es, int?[] SelectedEmployeeIds, VMOvertimeApproval vmOvertimeApproval)
        {
            List <MonthData> monthDatas   = new List <MonthData>();
            List <OTPolicy>  dbOTPolicies = DDService.GetOTPolicy();
            List <VMOvertimeApprovalChild> vmOvertimeApprovalChildList = new List <VMOvertimeApprovalChild>();
            List <VHR_EmployeeProfile>     employees = DDService.GetEmployeeInfo();
            PayrollPeriod payrollPeriod = DDService.GetPayrollPeriod().First(aa => aa.PPayrollPeriodID == es.PayrollPeriodID); // Get selected Payroll Period
            Expression <Func <MonthData, bool> > SpecificEntries = c => c.PayrollPeriodID == payrollPeriod.PPayrollPeriodID && (c.EncashbaleSingleOT > 0 || c.EncashbaleDoubleOT > 0 || c.CPLConversionOT > 0);

            monthDatas = MonthDataReporsitory.FindBy(SpecificEntries);
            foreach (int empid in SelectedEmployeeIds)
            {
                if (monthDatas.Where(aa => aa.EmployeeID == empid).Count() > 0)
                {
                    MonthData monthData = new MonthData();
                    monthData = monthDatas.First(aa => aa.EmployeeID == empid);
                    VMOvertimeApprovalChild vmOvertimeApprovalChild = new VMOvertimeApprovalChild();
                    VHR_EmployeeProfile     employee = employees.First(aa => aa.PEmployeeID == empid);// Get Specific Employee
                    vmOvertimeApprovalChild = GetConveretedOTList(vmOvertimeApprovalChild, employee, monthData, payrollPeriod);
                    vmOvertimeApprovalChildList.Add(vmOvertimeApprovalChild);
                }
            }
            vmOvertimeApproval.PayrollPeriodID       = payrollPeriod.PPayrollPeriodID;
            vmOvertimeApproval.PayrollPeriodName     = payrollPeriod.PRName;
            vmOvertimeApproval.OvertimeApprovalChild = vmOvertimeApprovalChildList;
            return(vmOvertimeApproval);
        }
 public VMOvertimeApprovalChild GetConveretedOTList(VMOvertimeApprovalChild vmOvertimeApprovalChild, VHR_EmployeeProfile employee, MonthData monthData, PayrollPeriod payrollPeriod)
 {
     vmOvertimeApprovalChild.EmpID              = employee.PEmployeeID;
     vmOvertimeApprovalChild.EmpNo              = employee.OEmpID;
     vmOvertimeApprovalChild.EmployeeName       = employee.EmployeeName;
     vmOvertimeApprovalChild.OvertimePolicyID   = employee.OTPolicyID;
     vmOvertimeApprovalChild.OvertimePolicyName = employee.OTPolicyName;
     vmOvertimeApprovalChild.EncashableSingleOT = ATAssistant.GetTimeHours(monthData.EncashbaleSingleOT);
     vmOvertimeApprovalChild.EncashableDoubleOT = ATAssistant.GetTimeHours(monthData.EncashbaleDoubleOT);
     vmOvertimeApprovalChild.CPLConvertedOT     = ATAssistant.GetTimeHours(monthData.CPLConversionOT);
     vmOvertimeApprovalChild.NormalOT           = ATAssistant.GetTimeHours(monthData.TNOT);
     vmOvertimeApprovalChild.RestOT             = ATAssistant.GetTimeHours(monthData.TROT);
     vmOvertimeApprovalChild.GZOT = ATAssistant.GetTimeHours(monthData.TGZOT);
     vmOvertimeApprovalChild.CPLConvertedOTDays = monthData.CPLConvertedDays;
     vmOvertimeApprovalChild.PayrollPeriodID    = payrollPeriod.PPayrollPeriodID;
     vmOvertimeApprovalChild.PayrollPeriodName  = payrollPeriod.PRName;
     vmOvertimeApprovalChild.StatusID           = monthData.MonthDataStageID;
     return(vmOvertimeApprovalChild);
 }