Example #1
0
        public ModelSOTEmpList GetEmpPending(ViewUserEmp LoggedInUser, int?PayrollPeriodID, int DeptID)
        {
            // Varibale Initilization
            ModelSOTEmpList         vm              = new ModelSOTEmpList();
            List <short?>           deptIds         = new List <short?>();
            List <short?>           divIds          = new List <short?>();
            List <int?>             empIds          = new List <int?>();
            List <EmpView>          totalEmps       = new List <EmpView>();
            List <EmpView>          emps            = new List <EmpView>();
            List <PR_PayrollPeriod> activePeriods   = new List <PR_PayrollPeriod>();
            List <int?>             activePeriodIds = new List <int?>();
            PR_PayrollPeriod        prp             = new PR_PayrollPeriod();
            int SelectedPeriodID           = 0;
            List <ViewDailyOTEntry> otList = new List <ViewDailyOTEntry>();

            deptIds.Add((short)DeptID);
            divIds    = OTHelperManager.GetDivisionIDs(deptIds, db.HR_Section.ToList());
            totalEmps = db.EmpViews.Where(aa => aa.Status == "Active").ToList();

            // Get Payroll Period
            SelectedPeriodID = Convert.ToInt32(Session["PRID"].ToString());
            if (PayrollPeriodID == null)
            {
                PayrollPeriodID = SelectedPeriodID;
            }
            else
            {
                Session["PRID"] = PayrollPeriodID.ToString();
            }
            activePeriodIds = db.ViewDailyOTEntries.Where(aa => (aa.SupervisorID == LoggedInUser.EmployeeID && aa.StatusID == "P") || (aa.StatusID == "F" && aa.ForwardToID == LoggedInUser.EmployeeID)).Select(aa => aa.PeriodID).Distinct().ToList();
            activePeriods   = OTHelperManager.GetActivePeriods(db.PR_PayrollPeriod.ToList(), activePeriodIds);
            prp             = OTHelperManager.GetPayrollPeriod(activePeriods, (int)PayrollPeriodID);

            empIds = db.ViewDailyOTEntries.Where(aa => aa.OTDate >= prp.PStartDate && aa.OTDate <= prp.PEndDate && aa.SecID == DeptID && ((aa.SupervisorID == LoggedInUser.EmployeeID && aa.StatusID == "P") || (aa.StatusID == "F" && aa.ForwardToID == LoggedInUser.EmployeeID))).Select(aa => aa.EmployeeID).Distinct().ToList();
            emps   = OTHelperManager.GetEmployeeConvertedFromIds(empIds, totalEmps);

            otList    = db.ViewDailyOTEntries.Where(aa => aa.OTDate >= prp.PStartDate && aa.OTDate <= prp.PEndDate && aa.SecID == DeptID && ((aa.SupervisorID == LoggedInUser.EmployeeID && aa.StatusID == "P") || (aa.StatusID == "F" && aa.ForwardToID == LoggedInUser.EmployeeID))).ToList();
            vm.DeptID = (int)DeptID;
            if (prp.FinYearID != null)
            {
                vm.DivRemainingBudget = OTHelperManager.GetDivRemainingBudget(divIds, db.BG_OTDivision.ToList(), (int)prp.FinYearID);
            }
            vm.List = OTHelperRecommended.GetConvertedOTListEmp(otList, emps);
            //if (DateTime.Today > prp.SupervisorCutOffDate)
            //    vm.IsLate = true;
            //else
            vm.IsLate = false;
            if (vm.List.Count() > 1)
            {
                vm.TotalOTAmount = vm.List.Sum(aa => aa.OTAmount);
                vm.SystemOT      = OTHelperManager.ConverMinIntoHours(vm.List.Sum(aa => aa.SystemOTMins));
                vm.ClaimedOT     = OTHelperManager.ConverMinIntoHours(vm.List.Sum(aa => aa.ClaimedOTMins));
                vm.TotalEmps     = vm.List.Count().ToString();
            }
            vm.Count                = vm.List.Count;
            ViewBag.DecisionID      = new SelectList(OTHelperManager.GetOTStatusForApprover(db.Att_OTStatus.ToList()), "PSID", "StatusName", "F");
            ViewBag.RecommendID     = new SelectList(OTHelperManager.GetUsersForRecommender(db.ViewUserEmps.Where(aa => aa.EmpStatus == "Active").ToList()), "UserID", "FullName");
            ViewBag.PayrollPeriodID = new SelectList(activePeriods, "PID", "PName", PayrollPeriodID);
            return(vm);
        }
        public ActionResult HAOTDeptList(int?PayrollPeriodID)
        {
            ViewUserEmp             LoggedInUser    = Session["LoggedUser"] as ViewUserEmp;
            List <short?>           deptIds         = new List <short?>();
            List <short?>           divIds          = new List <short?>();
            List <int?>             empIds          = new List <int?>();
            List <EmpView>          totalEmps       = new List <EmpView>();
            List <EmpView>          emps            = new List <EmpView>();
            List <PR_PayrollPeriod> activePeriods   = new List <PR_PayrollPeriod>();
            List <int?>             activePeriodIds = new List <int?>();
            int SelectedPeriodID           = 0;
            List <ViewDailyOTEntry> otList = new List <ViewDailyOTEntry>();
            PR_PayrollPeriod        prp    = new PR_PayrollPeriod();
            ModelRDeptPending       vm     = new ModelRDeptPending();

            totalEmps = db.EmpViews.Where(aa => aa.Status == "Active").ToList();
            if (LoggedInUser.UserType != "H" && LoggedInUser.UserType != "A")
            {
                totalEmps = OTHelperManager.GetEmployees(totalEmps, LoggedInUser);
            }
            SelectedPeriodID = Convert.ToInt32(Session["PRID"].ToString());
            if (PayrollPeriodID == null)
            {
                PayrollPeriodID = SelectedPeriodID;
            }
            else
            {
                Session["PRID"] = PayrollPeriodID.ToString();
            }
            //activePeriodIds = db.ViewDailyOTEntries.Where(aa => ((aa.SupervisorID == LoggedInUser.EmployeeID && aa.StatusID == "P") || (aa.StatusID == "F" && aa.ForwardToID == LoggedInUser.EmployeeID))).Select(aa => aa.PeriodID).Distinct().ToList();
            //activePeriods = OTHelperManager.GetActivePeriods(db.PR_PayrollPeriod.ToList(), activePeriodIds);
            prp     = OTHelperManager.GetPayrollPeriod(db.PR_PayrollPeriod.ToList(), (int)PayrollPeriodID);
            empIds  = db.ViewDailyOTEntries.Where(aa => aa.OTProcessingPeriodID == prp.PID && aa.StatusID == "A").Select(aa => aa.EmployeeID).Distinct().ToList();
            emps    = OTHelperManager.GetEmployeeConvertedFromIds(empIds, totalEmps);
            deptIds = OTHelperManager.GetDeptIDs(emps);
            divIds  = OTHelperManager.GetDivisionIDs(deptIds, db.HR_Section.ToList());
            if (deptIds.Count == 1)
            {
                return(RedirectToAction("HAOTEmpList", new { DeptID = deptIds.First(), PayrollPeriodID = prp.PID }));
            }
            else
            {
                otList = db.ViewDailyOTEntries.Where(aa => aa.OTProcessingPeriodID == prp.PID && aa.StatusID == "A").ToList();

                vm.List            = OTHelperRecommended.GetConvertedOTListDepts(otList, emps, deptIds);
                vm.Count           = vm.List.Count;
                vm.PayrollPeriodID = (int)PayrollPeriodID;
                if (prp.FinYearID != null)
                {
                    vm.DivRemainingBudget = OTHelperManager.GetDivRemainingBudget(divIds, db.BG_OTDivision.ToList(), (int)prp.FinYearID);
                }
                vm.TotalOTAmount = OTHelperManager.GetTotalOTAmount(vm.List);

                ViewBag.PayrollPeriodID = new SelectList(activePeriods, "PID", "PName", PayrollPeriodID);
                ViewBag.DecisionID      = new SelectList(OTHelperManager.GetOTStatusForSupervisor(db.Att_OTStatus.ToList()), "PSID", "StatusName", "F");
                //ViewBag.RecommendID = new SelectList(OTHelperManager.GetUsersForSupervisor(db.ViewUserEmps.Where(aa => aa.EmpStatus == "Active" && aa.UserType == "R" && aa.sec).ToList()), "UserID", "FullName");
                vm.Message = new List <string>();
                return(View(vm));
            }
        }
Example #3
0
        public ModelSOTPEmpDetail GetDetailPending(int prid, int EmpID, ViewUserEmp LoggedInUser)
        {
            ModelSOTPEmpDetail vm  = new ModelSOTPEmpDetail();
            PR_PayrollPeriod   prp = OTHelperManager.GetPayrollPeriod(db.PR_PayrollPeriod.ToList(), prid);
            HR_Employee        emp = db.HR_Employee.First(aa => aa.EmployeeID == EmpID);

            //if (DateTime.Today > prp.SupervisorCutOffDate)
            //    vm.IsLate = true;
            //else
            vm.IsLate  = false;
            vm.EmpID   = (int)EmpID;
            vm.EmpName = emp.FullName;
            vm.DeptID  = (int)emp.SectionID;
            vm.List    = OTHelperRecommended.GetConvertedDailyOTList(db.ViewDailyOTEntries.Where(aa => aa.EmployeeID == vm.EmpID && aa.OTDate >= prp.PStartDate && aa.OTDate <= prp.PEndDate).ToList());
            if (vm.List.Count > 0)
            {
                vm.SystemOT    = OTHelperManager.ConverMinIntoHours(vm.List.Sum(aa => aa.SystemOTMins));
                vm.ClaimedOT   = OTHelperManager.ConverMinIntoHours(vm.List.Sum(aa => aa.ClaimedOTMins));
                vm.TotalDays   = vm.List.Count();
                vm.TotalAmount = vm.List.Sum(aa => aa.OTAmount);
            }
            vm.DivRemainingBudget = OTHelperManager.GetDivRemainingBudget(OTHelperManager.GetDivisionIDs(OTHelperManager.ConvertDeptIDList(emp.SectionID), db.HR_Section.ToList()), db.BG_OTDivision.ToList(), (int)prp.FinYearID);
            vm.PeriodName         = prp.PName;
            vm.PeriodID           = prp.PID;
            vm.OTPolicy           = "OT Days Forward Policy: Maximum Days in Week = " + emp.Att_OTPolicy.DaysInWeek.ToString() + " , Maximum Days in Month = " + emp.Att_OTPolicy.DaysInMonth.ToString();
            vm.OTPolicyDays       = "OT Claimed Hours Policy: Normal Day= " + OTHelperManager.ConverMinIntoHours((int)emp.Att_OTPolicy.PerDayOTStartLimitHour) + " to " + OTHelperManager.ConverMinIntoHours((int)emp.Att_OTPolicy.PerDayOTEndLimitHour) + ", Rest & GZ Day= " + OTHelperManager.ConverMinIntoHours((int)emp.Att_OTPolicy.PerDayGOTStartLimitHour) + " to " + OTHelperManager.ConverMinIntoHours((int)emp.Att_OTPolicy.PerDayGOTEndLimitHour);
            vm.Count = vm.List.Count;

            ViewBag.DecisionID  = new SelectList(OTHelperManager.GetOTStatusForApprover(db.Att_OTStatus.ToList()), "PSID", "StatusName", "F");
            ViewBag.RecommendID = new SelectList(OTHelperManager.GetUsersForRecommender(db.ViewUserEmps.Where(aa => aa.EmpStatus == "Active").ToList()), "UserID", "FullName");
            return(vm);
        }
Example #4
0
        public ActionResult DeleteConfirmed(int id)
        {
            PR_PayrollPeriod pr_payrollperiod = db.PR_PayrollPeriod.Find(id);

            db.PR_PayrollPeriod.Remove(pr_payrollperiod);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Example #5
0
        // GET: /Attendance/PRPeriod/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PR_PayrollPeriod pr_payrollperiod = db.PR_PayrollPeriod.Find(id);

            if (pr_payrollperiod == null)
            {
                return(HttpNotFound());
            }
            return(View(pr_payrollperiod));
        }
Example #6
0
        public ActionResult Create([Bind(Include = "PID,PName,PStartDate,PEndDate,PStageID")] PR_PayrollPeriod pr_payrollperiod)
        {
            if (ModelState.IsValid)
            {
                db.PR_PayrollPeriod.Add(pr_payrollperiod);
                db.SaveChanges();
                ViewUserEmp loggedUser = Session["LoggedUser"] as ViewUserEmp;
                AuditManager.SaveAuditLog(loggedUser.UserID, Convert.ToInt16(AuditManager.AuditForm.OT_Period), Convert.ToInt16(AuditManager.AuditOperation.Add), DateTime.Now, (int)pr_payrollperiod.PID);
                return(RedirectToAction("Index"));
            }

            ViewBag.PStageID = new SelectList(GetPeriodStage(), "ID", "Name");
            return(View(pr_payrollperiod));
        }
Example #7
0
        public ActionResult Edit([Bind(Include = "PID,PName,PStartDate,PEndDate,PStageID,SupervisorCutOffDate,RecommendCutOffDate,ApprovedCutOffDate")] PR_PayrollPeriod pr_payrollperiod)
        {
            if (ModelState.IsValid)
            {
                db.Entry(pr_payrollperiod).State = System.Data.Entity.EntityState.Modified;
                db.SaveChanges();
                ViewUserEmp loggedUser = Session["LoggedUser"] as ViewUserEmp;
                AuditManager.SaveAuditLog(loggedUser.UserID, Convert.ToInt16(AuditManager.AuditForm.OT_Period), Convert.ToInt16(AuditManager.AuditOperation.Edit), DateTime.Now, (int)pr_payrollperiod.PID);

                return(RedirectToAction("Index"));
            }
            ViewBag.PStageID = new SelectList(GetPeriodStage(), "ID", "Name", pr_payrollperiod.PStageID);
            return(View(pr_payrollperiod));
        }
Example #8
0
        public ModelSOTEmpList GetEmpPendingHR(ViewUserEmp LoggedInUser, int PayrollPeriodID, int DeptID)
        {
            ModelSOTEmpList vm         = new ModelSOTEmpList();
            int             CurrentPID = Convert.ToInt32(Session["PRID"].ToString());

            if (PayrollPeriodID == null)
            {
                PayrollPeriodID = CurrentPID;
            }
            else
            {
                Session["PRID"] = PayrollPeriodID.ToString();
            }
            List <EmpView>   emps = db.EmpViews.Where(aa => aa.Status == "Active" && aa.SecID == DeptID).ToList();
            PR_PayrollPeriod prp  = OTHelperManager.GetPayrollPeriod(db.PR_PayrollPeriod.ToList(), (int)PayrollPeriodID);

            vm.DeptID = (int)DeptID;
            emps      = emps.Where(aa => aa.SecID == DeptID).ToList();
            List <ViewDailyOTEntry> otList = new List <ViewDailyOTEntry>();

            vm.DivRemainingBudget = OTHelperManager.GetDivRemainingBudget(OTHelperManager.ConvertDeptIDList(DeptID), db.BG_OTDivision.ToList(), (int)prp.FinYearID);
            otList = db.ViewDailyOTEntries.Where(aa => aa.OTProcessingPeriodID == PayrollPeriodID).ToList();
            if (LoggedInUser.UserType == "H" || LoggedInUser.UserType == "A")
            {
                ViewBag.DecisionID  = new SelectList(OTHelperManager.GetOTStatusForSupervisor(db.Att_OTStatus.ToList()), "PSID", "StatusName", "F");
                ViewBag.RecommendID = new SelectList(OTHelperManager.GetUsersForSupervisor(db.ViewUserEmps.Where(aa => aa.EmpStatus == "Active").ToList()), "UserID", "FullName");
            }
            else
            {
                ViewBag.DecisionID  = new SelectList(OTHelperManager.GetOTStatusForSupervisor(db.Att_OTStatus.ToList()), "PSID", "StatusName", "F");
                ViewBag.RecommendID = new SelectList(OTHelperManager.GetUsersForSupervisor(db.ViewUserEmps.Where(aa => aa.EmpStatus == "Active").ToList()), "UserID", "FullName");
                List <int?> empIds = db.ViewDailyOTEntries.Where(aa => aa.OTProcessingPeriodID == PayrollPeriodID).Select(aa => aa.EmployeeID).Distinct().ToList();
                emps = OTHelperManager.GetEmployees(emps, LoggedInUser);
                emps = OTHelperManager.GetEmployeeConvertedFromIds(empIds, emps);
            }
            vm.List = OTHelperRecommended.GetConvertedOTListEmpHR(otList, emps);
            if (vm.List.Count() > 0)
            {
                vm.TotalOTAmount = OTHelperManager.GetTotalOTAmount(vm.List);
            }
            vm.Count           = vm.List.Count;
            vm.PayrollPeriodID = (int)PayrollPeriodID;
            if (vm.List.Count() > 0)
            {
                vm.RecommendID     = (int)LoggedInUser.ReportingToID;
                vm.RecommenderName = db.EmpViews.First(aa => aa.EmployeeID == LoggedInUser.ReportingToID).FullName;
            }
            ViewBag.PayrollPeriodID = new SelectList(db.PR_PayrollPeriod.ToList(), "PID", "PName", PayrollPeriodID);
            return(vm);
        }
Example #9
0
        // GET: /Attendance/PRPeriod/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PR_PayrollPeriod pr_payrollperiod = db.PR_PayrollPeriod.Find(id);

            if (pr_payrollperiod == null)
            {
                return(HttpNotFound());
            }
            ViewBag.PStageID = new SelectList(GetPeriodStage(), "ID", "Name", pr_payrollperiod.PStageID);
            return(View(pr_payrollperiod));
        }
Example #10
0
        public ActionResult HROTDeptList(int?PayrollPeriodID)
        {
            ViewUserEmp       LoggedInUser = Session["LoggedUser"] as ViewUserEmp;
            List <short?>     deptIds      = new List <short?>();
            List <short?>     divIds       = new List <short?>();
            ModelRDeptPending vm           = new ModelRDeptPending();
            List <EmpView>    emps         = db.EmpViews.Where(aa => aa.Status == "Active").ToList();
            int CurrentPID = Convert.ToInt32(Session["PRID"].ToString());

            if (PayrollPeriodID == null)
            {
                PayrollPeriodID = CurrentPID;
            }
            else
            {
                Session["PRID"] = PayrollPeriodID.ToString();
            }
            PR_PayrollPeriod        prp    = OTHelperManager.GetPayrollPeriod(db.PR_PayrollPeriod.ToList(), (int)PayrollPeriodID);
            List <ViewDailyOTEntry> otList = new List <ViewDailyOTEntry>();

            otList = db.ViewDailyOTEntries.Where(aa => aa.OTProcessingPeriodID == PayrollPeriodID).ToList();
            if (LoggedInUser.UserType == "H" || LoggedInUser.UserType == "A")
            {
                ViewBag.DecisionID  = new SelectList(OTHelperManager.GetOTStatusForSupervisor(db.Att_OTStatus.ToList()), "PSID", "StatusName", "F");
                ViewBag.RecommendID = new SelectList(OTHelperManager.GetUsersForSupervisor(db.ViewUserEmps.Where(aa => aa.EmpStatus == "Active").ToList()), "UserID", "FullName");
            }
            else
            {
                List <int?> empIds = db.ViewDailyOTEntries.Where(aa => aa.OTProcessingPeriodID == PayrollPeriodID).Select(aa => aa.EmployeeID).Distinct().ToList();
                emps = OTHelperManager.GetEmployees(emps, LoggedInUser);
                emps = OTHelperManager.GetEmployeeConvertedFromIds(empIds, emps);
            }
            deptIds               = OTHelperManager.GetDeptIDs(emps);
            divIds                = OTHelperManager.GetDivisionIDs(deptIds, db.HR_Section.ToList());
            vm.List               = OTHelperRecommended.GetConvertedOTListDeptsHR(otList, emps, deptIds);
            vm.Count              = vm.List.Count;
            vm.PayrollPeriodID    = (int)PayrollPeriodID;
            vm.DivRemainingBudget = OTHelperManager.GetDivRemainingBudget(deptIds, db.BG_OTDivision.ToList(), (int)prp.FinYearID);
            vm.TotalOTAmount      = OTHelperManager.GetTotalOTAmount(vm.List);

            ViewBag.PayrollPeriodID = new SelectList(db.PR_PayrollPeriod.ToList(), "PID", "PName", PayrollPeriodID);
            vm.Message = new List <string>();
            return(View(vm));
        }
Example #11
0
        internal static bool IsValidWeekPolicy(List <ViewDailyOTEntry> attOts, PR_PayrollPeriod prp, byte?days)
        {
            DateTime dts             = prp.PStartDate.Value;
            bool     FindMonday      = false;
            bool     checkForPreWeek = false;

            while (dts <= prp.PEndDate)
            {
                if (FindMonday == false)
                {
                    if (dts.Date.DayOfWeek == DayOfWeek.Monday)
                    {
                        FindMonday = true;
                    }
                }
                if (FindMonday == true)
                {
                    DateTime dtStart = dts;
                    if (attOts.Where(aa => aa.OTDate >= prp.PStartDate && aa.OTDate < dtStart).Count() > days)
                    {
                        checkForPreWeek = true;
                    }
                    while (dtStart <= prp.PEndDate)
                    {
                        DateTime dtEndDate = dtStart.AddDays(7);
                        if (attOts.Where(aa => aa.OTDate >= dtStart && aa.OTDate < dtEndDate).Count() > days)
                        {
                            checkForPreWeek = true;
                        }
                        dtStart = dtStart.AddDays(7);
                    }
                    break;
                }
                dts = dts.AddDays(1);
            }
            return(checkForPreWeek);
        }
Example #12
0
        public ModelSOTPEmpDetail GetDetailPendingHR(int prid, int EmpID, ViewUserEmp LoggedInUser)
        {
            ModelSOTPEmpDetail vm  = new ModelSOTPEmpDetail();
            PR_PayrollPeriod   prp = OTHelperManager.GetPayrollPeriod(db.PR_PayrollPeriod.ToList(), prid);
            HR_Employee        emp = db.HR_Employee.First(aa => aa.EmployeeID == EmpID);

            if (DateTime.Today > prp.SupervisorCutOffDate)
            {
                vm.IsLate = true;
            }
            else
            {
                vm.IsLate = false;
            }
            vm.EmpID   = (int)EmpID;
            vm.EmpName = emp.FullName;
            int amount = 0;

            if (LoggedInUser.UserType == "H" || LoggedInUser.UserType == "A")
            {
                ViewBag.DecisionID  = new SelectList(OTHelperManager.GetOTStatusForSupervisor(db.Att_OTStatus.ToList()), "PSID", "StatusName", "F");
                ViewBag.RecommendID = new SelectList(OTHelperManager.GetUsersForSupervisor(db.ViewUserEmps.Where(aa => aa.EmpStatus == "Active").ToList()), "UserID", "FullName");
            }
            else
            {
                ViewBag.DecisionID  = new SelectList(OTHelperManager.GetOTStatusForSupervisor(db.Att_OTStatus.ToList()), "PSID", "StatusName", "F");
                ViewBag.RecommendID = new SelectList(OTHelperManager.GetUsersForSupervisor(db.ViewUserEmps.Where(aa => aa.EmpStatus == "Active").ToList()), "UserID", "FullName");
            }
            vm.List = OTHelperRecommended.GetConvertedDailyOTListSimple(db.ViewDailyOTEntries.Where(aa => aa.EmpID == EmpID && aa.OTProcessingPeriodID == prp.PID).ToList());
            vm.DivRemainingBudget = OTHelperManager.GetDivRemainingBudget(OTHelperManager.ConvertDeptIDList(emp.SectionID), db.BG_OTDivision.ToList(), (int)prp.FinYearID);
            vm.PeriodName         = prp.PName;
            vm.PeriodID           = prp.PID;
            vm.OTPolicy           = "Policy Details: Maximum Days in Week = " + emp.Att_OTPolicy.DaysInWeek.ToString() + " , Maximum Days in Month = " + emp.Att_OTPolicy.DaysInMonth.ToString();
            vm.TotalAmount        = amount;
            vm.Count = vm.List.Count;
            return(vm);
        }
Example #13
0
        public ActionResult AOTDetailList(ModelSOTPEmpDetail model)
        {
            List <string>    messages        = new List <string>();
            ViewUserEmp      LoggedInUser    = Session["LoggedUser"] as ViewUserEmp;
            var              checkedEmpDates = Request.Form.GetValues("cbEmployee");
            HR_Employee      emp             = db.HR_Employee.First(aa => aa.EmployeeID == model.EmpID);
            PR_PayrollPeriod prp             = OTHelperManager.GetPayrollPeriod(db.PR_PayrollPeriod.ToList(), model.PeriodID);

            model.Certified = true;
            messages        = IsValidate(model, checkedEmpDates);
            if (messages.Count == 0)
            {
                List <Att_OTDailyEntry> attOts     = db.Att_OTDailyEntry.Where(aa => aa.EmpID == model.EmpID && aa.OTDate >= prp.PStartDate && aa.OTDate <= prp.PEndDate).ToList();
                List <Att_OTDailyEntry> TempattOts = new List <Att_OTDailyEntry>();
                foreach (var id in checkedEmpDates)
                {
                    int              chNo    = Convert.ToInt32(id);
                    string           EmpDate = Request.Form["ED" + (chNo - 1).ToString()].ToString();
                    string           COTHour = Request.Form["ClaimOT" + (chNo - 1).ToString()].ToString();
                    int              COTMins = OTHelperManager.ConvertStringTimeToMin(COTHour);
                    Att_OTDailyEntry obj     = attOts.First(aa => aa.EmpDate == EmpDate);
                    obj.ApprovedOTMin = COTMins;
                    obj.OTAmount      = OTHelperManager.GetOTAmount(emp.HR_Grade, obj.ApprovedOTMin, obj.DutyCode);
                    TempattOts.Add(obj);
                }
                if (emp.Att_OTPolicy.DaysInMonth > 0)
                {
                    List <Att_OTDailyEntry> atoTemp = new List <Att_OTDailyEntry>();
                    atoTemp.AddRange(TempattOts);
                    //atoTemp.AddRange(attOts.Where(aa => aa.StatusID == "F" || aa.StatusID == "A").ToList());
                    // check for Monthly Limit
                    if (atoTemp.Count > emp.Att_OTPolicy.DaysInMonth)
                    {
                        messages.Add("Your Monthly overtime claim limit exceeds.");
                    }
                    else
                    {
                        // check for weekly limit
                        if (emp.Att_OTPolicy.DaysInWeek > 0)
                        {
                            if (OTHelperManager.IsValidWeekPolicy(atoTemp.OrderByDescending(aa => aa.OTDate).ToList(), prp, emp.Att_OTPolicy.DaysInWeek))
                            {
                                messages.Add("Your weekly overtime claim limit exceeds.");
                            }
                        }
                    }
                }
                // check for daily ot limit
                {
                    List <string> msgs = OTHelperManager.IsValidDailyOT(TempattOts, emp.Att_OTPolicy);
                    if (msgs.Count > 0)
                    {
                        messages.AddRange(msgs);
                    }
                }
                if (checkedEmpDates != null)
                {
                    if (messages.Count == 0)
                    {
                        int CurrentPeriodID = db.PR_PayrollPeriod.OrderByDescending(aa => aa.PID).First().PID;
                        foreach (var id in checkedEmpDates)
                        {
                            int              chNo      = Convert.ToInt32(id);
                            string           oldStatus = "P";
                            string           EmpDate   = Request.Form["ED" + (chNo - 1).ToString()].ToString();
                            string           COTHour   = Request.Form["ClaimOT" + (chNo - 1).ToString()].ToString();
                            Att_OTDailyEntry atot      = attOts.First(aa => aa.EmpDate == EmpDate);
                            // Save Log
                            db.Att_OTDForward.Add(OTHelperManager.CreateOTLog(atot, LoggedInUser, model.RecommendID, model.Justification, model.DecisionID, "Recommend", CurrentPeriodID));
                            oldStatus     = atot.StatusID;
                            atot.StatusID = model.DecisionID;
                            if (LoggedInUser.UserType == "R")
                            {
                                if (atot.StatusID == "R")
                                {
                                    atot.FtoARDateTime        = DateTime.Now;
                                    atot.FtoARUserID          = LoggedInUser.UserID;
                                    atot.CancelByID           = LoggedInUser.UserID;
                                    atot.OTProcessingPeriodID = CurrentPeriodID;
                                }
                                else
                                {
                                    if (model.IsLate == true)
                                    {
                                        atot.Remarks = model.Justification;
                                    }
                                    atot.ApprovedByID         = LoggedInUser.UserID;
                                    atot.OTProcessingPeriodID = CurrentPeriodID;
                                    atot.FtoARDateTime        = DateTime.Now;
                                    atot.FtoARUserID          = LoggedInUser.UserID;
                                }
                            }
                        }
                        db.SaveChanges();

                        // Cancel All others
                        foreach (var item in attOts.Where(aa => aa.EmpID == model.EmpID && aa.StatusID == "P").ToList())
                        {
                            item.StatusID             = "R";
                            item.PtoFCDateTime        = DateTime.Now;
                            item.PtoFCUserID          = LoggedInUser.UserID;
                            item.CancelByID           = LoggedInUser.UserID;
                            item.OTProcessingPeriodID = CurrentPeriodID;
                        }
                        db.SaveChanges();
                        return(Json("OK"));
                    }
                }
                else
                {
                    messages.Add("No Entry Selected");
                }
            }
            return(Json(messages));
        }
Example #14
0
        public ActionResult AOTEmpList(ModelSOTEmpList model)
        {
            ViewUserEmp             LoggedInUser = Session["LoggedUser"] as ViewUserEmp;
            var                     empsChecked  = Request.Form.GetValues("cbEmployee");
            List <EmpView>          emps         = db.EmpViews.Where(aa => aa.Status == "Active").ToList();
            List <EmpView>          tempEmps     = new List <EmpView>();
            PR_PayrollPeriod        prp          = OTHelperManager.GetPayrollPeriod(db.PR_PayrollPeriod.ToList(), (int)model.PayrollPeriodID);
            List <ViewDailyOTEntry> otList       = new List <ViewDailyOTEntry>();
            List <string>           messages     = new List <string>();

            model.Certified = true;
            messages        = IsValidateEmpList(model, empsChecked);
            if (messages.Count == 0)
            {
                foreach (var id in empsChecked)
                {
                    int chNo = Convert.ToInt32(id);
                    tempEmps.Add(emps.First(aa => aa.EmployeeID == chNo));
                }
                otList = db.ViewDailyOTEntries.Where(aa => aa.OTDate >= prp.PStartDate && aa.OTDate <= prp.PEndDate && aa.StatusID != "C").ToList();
                List <ViewDailyOTEntry> vdat = OTHelperManager.GetOTListEmp(otList, tempEmps);
                foreach (var emp in tempEmps)
                {
                    //DeptID = (int)emp.SecID;
                    if (emp.DaysInMonth > 0)
                    {
                        // check for Monthly Limit
                        if (vdat.Where(aa => aa.EmpID == emp.EmployeeID).Count() > emp.DaysInMonth)
                        {
                            messages.Add("Your Monthly overtime claim limit exceeds for:" + emp.FullName);
                        }
                        else
                        {
                            // check for weekly limit
                            if (emp.DaysInWeek > 0)
                            {
                                if (OTHelperManager.IsValidWeekPolicy(vdat.Where(aa => aa.EmpID == emp.EmployeeID).OrderByDescending(aa => aa.OTDate).ToList(), prp, emp.DaysInWeek))
                                {
                                    messages.Add("Your weekly overtime claim limit exceeds for:" + emp.FullName);
                                }
                            }
                        }
                    }
                    // check for daily ot limit
                    {
                        if (OTHelperManager.IsValidDailyOT(vdat.Where(aa => aa.EmpID == emp.EmployeeID), emp))
                        {
                            messages.Add("Your daily overtime claim limit exceeds for:" + emp.FullName);
                        }
                    }
                }
            }
            if (messages.Count == 0)
            {
                int CurrentPeriodID            = db.PR_PayrollPeriod.OrderByDescending(aa => aa.PID).First().PID;
                List <Att_OTDailyEntry> attOts = db.Att_OTDailyEntry.Where(aa => aa.OTDate >= prp.PStartDate && aa.OTDate <= prp.PEndDate && (aa.StatusID == "F" || aa.StatusID == "P")).ToList();
                foreach (var emp in tempEmps)
                {
                    foreach (var atot in attOts.Where(aa => aa.EmpID == emp.EmployeeID).ToList())
                    {
                        // Save Log
                        db.Att_OTDForward.Add(OTHelperManager.CreateOTLog(atot, LoggedInUser, model.RecommendID, model.Justification, model.DecisionID, "Recommend", CurrentPeriodID));
                        string oldStatus = "P";
                        oldStatus     = atot.StatusID;
                        atot.StatusID = model.DecisionID;
                        if (atot.StatusID == "R")
                        {
                            atot.FtoARDateTime        = DateTime.Now;
                            atot.FtoARUserID          = LoggedInUser.UserID;
                            atot.CancelByID           = LoggedInUser.UserID;
                            atot.OTProcessingPeriodID = CurrentPeriodID;
                        }
                        else
                        {
                            if (model.IsLate == true)
                            {
                                atot.Remarks = model.Justification;
                            }
                            atot.ApprovedByID         = LoggedInUser.UserID;
                            atot.OTProcessingPeriodID = CurrentPeriodID;
                            atot.FtoARDateTime        = DateTime.Now;
                            atot.FtoARUserID          = LoggedInUser.UserID;
                        }
                    }
                    db.SaveChanges();

                    // Cancel All others
                    foreach (var item in attOts.Where(aa => aa.EmpID == emp.EmployeeID && aa.StatusID == "F").ToList())
                    {
                        item.StatusID             = "C";
                        item.FtoFCDateTime        = DateTime.Now;
                        item.FtoFCUserID          = LoggedInUser.UserID;
                        item.CancelByID           = LoggedInUser.UserID;
                        item.OTProcessingPeriodID = CurrentPeriodID;
                    }
                    db.SaveChanges();
                }
                return(Json("OK"));
            }
            else
            {
            }

            return(Json(messages));
        }
 private void CreateNewPayrollPeriod(PR_FinYear pr_financialyear)
 {
     //DateTime cdt = pr_financialyear.StartDate.Value;
     //int cMonth = 1;
     //while (cdt <= pr_financialyear.EndDate)
     //{
     //    if(cdt.Month)
     //    cdt = cdt.AddDays(1);
     //}
     {
         PR_PayrollPeriod prp = new PR_PayrollPeriod();
         prp.PStartDate = new DateTime(pr_financialyear.StartDate.Value.Year, 7, 1);
         prp.PEndDate   = new DateTime(pr_financialyear.StartDate.Value.Year, 7, 31);
         prp.FinYearID  = pr_financialyear.PFinYearID;
         prp.PStageID   = "H";
         db.PR_PayrollPeriod.Add(prp);
         db.SaveChanges();
     }
     {
         PR_PayrollPeriod prp = new PR_PayrollPeriod();
         prp.PStartDate = new DateTime(pr_financialyear.StartDate.Value.Year, 8, 1);
         prp.PEndDate   = new DateTime(pr_financialyear.StartDate.Value.Year, 8, 31);
         prp.FinYearID  = pr_financialyear.PFinYearID;
         prp.PStageID   = "H";
         db.PR_PayrollPeriod.Add(prp);
         db.SaveChanges();
     }
     {
         PR_PayrollPeriod prp = new PR_PayrollPeriod();
         prp.PStartDate = new DateTime(pr_financialyear.StartDate.Value.Year, 9, 1);
         prp.PEndDate   = new DateTime(pr_financialyear.StartDate.Value.Year, 9, 30);
         prp.FinYearID  = pr_financialyear.PFinYearID;
         prp.PStageID   = "H";
         db.PR_PayrollPeriod.Add(prp);
         db.SaveChanges();
     }
     {
         PR_PayrollPeriod prp = new PR_PayrollPeriod();
         prp.PStartDate = new DateTime(pr_financialyear.StartDate.Value.Year, 10, 1);
         prp.PEndDate   = new DateTime(pr_financialyear.StartDate.Value.Year, 10, 31);
         prp.FinYearID  = pr_financialyear.PFinYearID;
         prp.PStageID   = "H";
         db.PR_PayrollPeriod.Add(prp);
         db.SaveChanges();
     }
     {
         PR_PayrollPeriod prp = new PR_PayrollPeriod();
         prp.PStartDate = new DateTime(pr_financialyear.StartDate.Value.Year, 11, 1);
         prp.PEndDate   = new DateTime(pr_financialyear.StartDate.Value.Year, 11, 30);
         prp.FinYearID  = pr_financialyear.PFinYearID;
         prp.PStageID   = "H";
         db.PR_PayrollPeriod.Add(prp);
         db.SaveChanges();
     }
     {
         PR_PayrollPeriod prp = new PR_PayrollPeriod();
         prp.PStartDate = new DateTime(pr_financialyear.StartDate.Value.Year, 12, 1);
         prp.PEndDate   = new DateTime(pr_financialyear.StartDate.Value.Year, 12, 31);
         prp.FinYearID  = pr_financialyear.PFinYearID;
         prp.PStageID   = "H";
         db.PR_PayrollPeriod.Add(prp);
         db.SaveChanges();
     }
     {
         PR_PayrollPeriod prp = new PR_PayrollPeriod();
         prp.PStartDate = new DateTime(pr_financialyear.EndDate.Value.Year, 1, 1);
         prp.PEndDate   = new DateTime(pr_financialyear.EndDate.Value.Year, 1, 31);
         prp.FinYearID  = pr_financialyear.PFinYearID;
         prp.PStageID   = "H";
         db.PR_PayrollPeriod.Add(prp);
         db.SaveChanges();
     }
     {
         PR_PayrollPeriod prp = new PR_PayrollPeriod();
         prp.PStartDate = new DateTime(pr_financialyear.EndDate.Value.Year, 2, 1);
         int daysInMonths = DateTime.DaysInMonth(prp.PStartDate.Value.Year, 2);
         prp.PEndDate  = new DateTime(pr_financialyear.EndDate.Value.Year, 2, daysInMonths);
         prp.FinYearID = pr_financialyear.PFinYearID;
         prp.PStageID  = "H";
         db.PR_PayrollPeriod.Add(prp);
         db.SaveChanges();
     }
     {
         PR_PayrollPeriod prp = new PR_PayrollPeriod();
         prp.PStartDate = new DateTime(pr_financialyear.EndDate.Value.Year, 3, 1);
         prp.PEndDate   = new DateTime(pr_financialyear.EndDate.Value.Year, 3, 31);
         prp.FinYearID  = pr_financialyear.PFinYearID;
         prp.PStageID   = "H";
         db.PR_PayrollPeriod.Add(prp);
         db.SaveChanges();
     }
     {
         PR_PayrollPeriod prp = new PR_PayrollPeriod();
         prp.PStartDate = new DateTime(pr_financialyear.EndDate.Value.Year, 4, 1);
         prp.PEndDate   = new DateTime(pr_financialyear.EndDate.Value.Year, 4, 30);
         prp.FinYearID  = pr_financialyear.PFinYearID;
         prp.PStageID   = "H";
         db.PR_PayrollPeriod.Add(prp);
         db.SaveChanges();
     }
     {
         PR_PayrollPeriod prp = new PR_PayrollPeriod();
         prp.PStartDate = new DateTime(pr_financialyear.EndDate.Value.Year, 5, 1);
         prp.PEndDate   = new DateTime(pr_financialyear.EndDate.Value.Year, 5, 31);
         prp.FinYearID  = pr_financialyear.PFinYearID;
         prp.PStageID   = "H";
         db.PR_PayrollPeriod.Add(prp);
         db.SaveChanges();
     }
     {
         PR_PayrollPeriod prp = new PR_PayrollPeriod();
         prp.PStartDate = new DateTime(pr_financialyear.EndDate.Value.Year, 6, 1);
         prp.PEndDate   = new DateTime(pr_financialyear.EndDate.Value.Year, 6, 30);
         prp.FinYearID  = pr_financialyear.PFinYearID;
         prp.PStageID   = "H";
         db.PR_PayrollPeriod.Add(prp);
         db.SaveChanges();
     }
 }
Example #16
0
        public ActionResult HROTEmpList(int?PayrollPeriodID)
        {
            ViewUserEmp             LoggedInUser = Session["LoggedUser"] as ViewUserEmp;
            var                     empsChecked  = Request.Form.GetValues("cbEmployee");
            List <EmpView>          emps         = db.EmpViews.Where(aa => aa.Status == "Active").ToList();
            List <EmpView>          tempEmps     = new List <EmpView>();
            PR_PayrollPeriod        prp          = OTHelperManager.GetPayrollPeriod(db.PR_PayrollPeriod.ToList(), (int)PayrollPeriodID);
            List <ViewDailyOTEntry> otList       = new List <ViewDailyOTEntry>();
            List <string>           messages     = new List <string>();
            string                  val          = Request.Form["Certified"].ToString();
            int                     DeptID       = Convert.ToInt32(Request.Form["DeptID"].ToString());

            if (val == "true,false")
            {
                foreach (var id in empsChecked)
                {
                    int chNo = Convert.ToInt32(id);
                    tempEmps.Add(emps.First(aa => aa.EmployeeID == chNo));
                }
                otList = db.ViewDailyOTEntries.Where(aa => aa.OTDate >= prp.PStartDate && aa.OTDate <= prp.PEndDate && (aa.StatusID == "P")).ToList();
                if (LoggedInUser.UserType == "N" || LoggedInUser.UserType == "R")
                {
                    List <ViewDailyOTEntry> vdat = OTHelperManager.GetOTListEmp(otList, tempEmps);
                    foreach (var emp in tempEmps)
                    {
                        //DeptID = (int)emp.SecID;
                        if (emp.DaysInMonth > 0)
                        {
                            // check for Monthly Limit
                            if (vdat.Where(aa => aa.EmpID == emp.EmployeeID).Count() > emp.DaysInMonth)
                            {
                                messages.Add("Your Monthly overtime claim limit exceeds.");
                            }
                            else
                            {
                                // check for weekly limit
                                if (emp.DaysInWeek > 0)
                                {
                                    if (OTHelperManager.IsValidWeekPolicy(vdat.Where(aa => aa.EmpID == emp.EmployeeID).OrderByDescending(aa => aa.OTDate).ToList(), prp, emp.DaysInWeek))
                                    {
                                        messages.Add("Your weekly overtime claim limit exceeds.");
                                    }
                                }
                            }
                        }
                        // check for daily ot limit
                        {
                            if (OTHelperManager.IsValidDailyOT(vdat.Where(aa => aa.EmpID == emp.EmployeeID), emp))
                            {
                                messages.Add("Your daily overtime claim limit exceeds.");
                            }
                        }
                    }
                    if (messages.Count == 0)
                    {
                        List <Att_OTDailyEntry> attOts = db.Att_OTDailyEntry.Where(aa => aa.OTDate >= prp.PStartDate && aa.OTDate <= prp.PEndDate).ToList();

                        foreach (var emp in tempEmps)
                        {
                            foreach (var atot in attOts.Where(aa => aa.EmpID == emp.EmployeeID).ToList())
                            {
                                atot.StatusID = Request.Form["DecisionID"].ToString();
                                if (atot.StatusID == "C")
                                {
                                    //atot.NtoPDateTime = DateTime.Now;
                                    atot.CancelByID = LoggedInUser.UserID;
                                }
                                else
                                {
                                    atot.ForwardToID = Convert.ToInt32(Request.Form["RecommendID"]);
                                    //atot.NtoPDateTime = DateTime.Now;
                                    //atot.NtoPUserID = LoggedInUser.UserID;
                                    //atot.OTProcessingPeriod = PayrollPeriodID;
                                }
                            }
                            db.SaveChanges();
                        }
                    }
                    else
                    {
                    }
                }
            }
            else
            {
                messages.Add("Please verify, this employee does not claim daily allowance on these dates");
            }

            //
            ModelSOTEmpList vm = new ModelSOTEmpList();

            //vm = GetEmpPending(LoggedInUser, (int)PayrollPeriodID, (int)DeptID);
            vm.Message = messages;
            return(View(vm));
        }
Example #17
0
        public ActionResult HROTDetailList(ModelSOTPEmpDetail model)
        {
            List <string>    messages        = new List <string>();
            ViewUserEmp      LoggedInUser    = Session["LoggedUser"] as ViewUserEmp;
            var              checkedEmpDates = Request.Form.GetValues("cbEmployee");
            HR_Employee      emp             = db.HR_Employee.First(aa => aa.EmployeeID == model.EmpID);
            PR_PayrollPeriod prp             = OTHelperManager.GetPayrollPeriod(db.PR_PayrollPeriod.ToList(), model.PeriodID);

            //messages = IsValidate(model);
            if (messages.Count == 0)
            {
                List <Att_OTDailyEntry> attOts     = db.Att_OTDailyEntry.Where(aa => aa.EmpID == model.EmpID && aa.OTDate >= prp.PStartDate && aa.OTDate <= prp.PEndDate).ToList();
                List <Att_OTDailyEntry> TempattOts = new List <Att_OTDailyEntry>();
                foreach (var id in checkedEmpDates)
                {
                    int    chNo    = Convert.ToInt32(id);
                    string EmpDate = Request.Form["ED" + (chNo - 1).ToString()].ToString();
                    string COTHour = Request.Form["ClaimOT" + (chNo - 1).ToString()].ToString();
                    TempattOts.Add(attOts.First(aa => aa.EmpDate == EmpDate));
                }
                if (emp.Att_OTPolicy.DaysInMonth > 0)
                {
                    // check for Monthly Limit
                    if (TempattOts.Count > emp.Att_OTPolicy.DaysInMonth)
                    {
                        messages.Add("Your Monthly overtime claim limit exceeds.");
                    }
                    else
                    {
                        // check for weekly limit
                        if (emp.Att_OTPolicy.DaysInWeek > 0)
                        {
                            if (OTHelperManager.IsValidWeekPolicy(TempattOts.OrderByDescending(aa => aa.OTDate).ToList(), prp, emp.Att_OTPolicy.DaysInWeek))
                            {
                                messages.Add("Your weekly overtime claim limit exceeds.");
                            }
                        }
                    }
                }
                // check for daily ot limit
                {
                    //if (OTHelperManager.IsValidDailyOT(TempattOts, emp.Att_OTPolicy))
                    //    messages.Add("Your daily overtime claim limit exceeds.");
                }
                if (checkedEmpDates != null)
                {
                    if (messages.Count == 0)
                    {
                        foreach (var id in checkedEmpDates)
                        {
                            int              chNo    = Convert.ToInt32(id);
                            string           EmpDate = Request.Form["ED" + (chNo - 1).ToString()].ToString();
                            string           COTHour = Request.Form["ClaimOT" + (chNo - 1).ToString()].ToString();
                            Att_OTDailyEntry atot    = attOts.First(aa => aa.EmpDate == EmpDate);
                            atot.StatusID = Request.Form["DecisionID"].ToString();
                            if (LoggedInUser.UserType == "N")
                            {
                                if (atot.StatusID == "C")
                                {
                                    //atot.NtoPDateTime = DateTime.Now;
                                    atot.CancelByID = LoggedInUser.UserID;
                                }
                                else
                                {
                                    atot.ForwardToID = Convert.ToInt32(Request.Form["RecommendID"]);
                                    //atot.NtoPDateTime = DateTime.Now;
                                    //atot.NtoPUserID = LoggedInUser.UserID;
                                    //atot.OTProcessingPeriod = model.PeriodID;
                                }
                            }
                            else if (LoggedInUser.UserType == "R")
                            {
                                if (atot.StatusID == "R")
                                {
                                    atot.PtoFCDateTime = DateTime.Now;
                                    atot.RejectByID    = LoggedInUser.UserID;
                                }
                                else
                                {
                                    atot.ForwardToID          = Convert.ToInt32(Request.Form["RecommendID"]);
                                    atot.PtoFCDateTime        = DateTime.Now;
                                    atot.PtoFCUserID          = LoggedInUser.UserID;
                                    atot.OTProcessingPeriodID = model.PeriodID;
                                }
                            }
                            else if (LoggedInUser.UserType == "P")
                            {
                                if (atot.StatusID == "R")
                                {
                                    atot.FtoARDateTime = DateTime.Now;
                                    atot.RejectByID    = LoggedInUser.UserID;
                                }
                                else
                                {
                                    atot.ApprovedByID         = LoggedInUser.UserID;
                                    atot.FtoARDateTime        = DateTime.Now;
                                    atot.FtoARUserID          = LoggedInUser.UserID;
                                    atot.OTProcessingPeriodID = model.PeriodID;
                                }
                            }
                            db.SaveChanges();
                        }
                        return(RedirectToAction("REmpPending", new { DeptID = emp.SectionID, PayrollPeriodID = prp.PID }));
                    }
                }
            }
            ModelSOTPEmpDetail vm = new ModelSOTPEmpDetail();

            //vm = GetDetailPending(model.PeriodID, (int)emp.EmployeeID, LoggedInUser);
            vm.Message = messages;
            return(View(vm));
        }