public ActionResult GetPage(int page)
        {
            int total;
            List<TrackingInfo> list = (List<TrackingInfo>)Session["ListTrackingProcess"];
            model = new TrackingProgressModel() { ListTrackingInfo = this.Get(page, out total, list) };

            ViewData["page"] = page;
            ViewData["total"] = total;

            return PartialView("_TrackingList", model);
        }
        public ActionResult Index(TrackingProgressModel trackingProgress)
        {
            DateTime fromDate;
            DateTime toDate;

            if (model == null)
            {
                model = new TrackingProgressModel();

                List<ProjectMaster> l = new List<ProjectMaster>();

                var projectList = (from trp in db.TimeRecordProject
                                   join trpu in db.TimeRecordProjectUser on trp.TimeRecordProjectID equals trpu.TimeRecordProjectID
                                   //where trpu.UserID == CurrentUser.UserID && trp.TimeRecordProjectStatus == 1
                                   where trpu.UserID == "400195" && trp.TimeRecordProjectStatus == 1
                                   select trp.TimeRecordProjectName).ToList();

                var projectList1 = (from trp in db.TimeRecordProject
                                    join trpu in db.TimeRecordProjectUser on trp.TimeRecordProjectID equals trpu.TimeRecordProjectID
                                    join pm in db.ProjectMaster on trp.TimeRecordProjectName equals pm.TimeRecordProjectName
                                    //where trpu.UserID == CurrentUser.UserID && trp.TimeRecordProjectStatus == 1 && pm.DelFlag == 0
                                    where trpu.UserID == "400195" && trp.TimeRecordProjectStatus == 1 && pm.DelFlag == 0
                                    select pm.ProjectName).Union(projectList).ToList();

                foreach (var item in projectList1)
                {
                    l.Add(new ProjectMaster { ProjectName = item });
                }

                l.Add(new ProjectMaster { ProjectName = "All" });

                l.Reverse();

                model.ListProject = l;

                model.FromDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).ToString("yyyy/MM/dd");
                model.EndDate = DateTime.Now.ToString("yyyy/MM/dd");
                model.TaskStatus = new String[] { "All", "Approved", "Unapproved" };
            }

            String approvedFlag = trackingProgress.Status;
            String projectName = trackingProgress.ProjectName;

            try
            {
                fromDate = this.GetDate(trackingProgress.FromDate, 1);
                toDate = this.GetDate(trackingProgress.EndDate, 2);
            }
            catch
            {
                Session["CheckDate"] = "Please input correct date format to 'Date'";
                return View(model);
            }

            if (fromDate > toDate)
            {
                Session[SessionKeyConstant.DateTimeFromTo] = "From date' must before 'To date'";
                return View(model);
            }

            if (trackingProgress != null && approvedFlag != null && projectName != null)
            {

                IQueryable<TrackingInfo> trackingInfoQuery = db.TrackingInfo.AsQueryable();
                if (projectName != "All")
                {
                    trackingInfoQuery = trackingInfoQuery.Where(track => track.ProjectName.Equals(projectName));
                }
                if (approvedFlag.Equals("Approved"))
                {
                    trackingInfoQuery = trackingInfoQuery.Where(
                        track => track.ApprovedFlag == 1
                    );
                }
                else if (approvedFlag.Equals("Unapproved"))
                {
                    trackingInfoQuery = trackingInfoQuery.Where(
                        track => track.ApprovedFlag == 0
                    );
                }
                if (fromDate != DateTime.MinValue)
                {
                    trackingInfoQuery = trackingInfoQuery.Where(track => track.Date >= fromDate);
                }
                if (toDate != DateTime.MaxValue)
                {
                    trackingInfoQuery = trackingInfoQuery.Where(track => track.Date <= toDate);
                }

                //listTracking = trackingInfoQuery.Where(d => d.UserID == CurrentUser.UserID).OrderBy(order => order.ApprovedFlag).ThenByDescending(order => order.Date).ToList();
                listTracking = trackingInfoQuery.Where(d => d.UserID == "400195").OrderBy(order => order.ApprovedFlag).ThenByDescending(order => order.Date).ToList();

                int total;

                model.ListTrackingInfo = this.Get(1, out total, listTracking);

                Session["ListTrackingProcess"] = listTracking;

                ViewData["page"] = 1;
                ViewData["total"] = total;

                if (model.ListTrackingInfo.Count() == 0) Session[SessionKeyConstant.NotFoundTracking] = "Not found tracking.";

            }
            return View(model);
        }