public IActionResult date_search(int?cate, int?status, DateTime?start, DateTime?end)
        {
            int DepId = int.Parse(HttpContext.Session.GetString(CDictionary.CURRENT_LOGINED_USERDEPARTMENTID));

            var table = DB.TLeaveApplications.Join(DB.TUsers,
                                                   l => l.CEmployeeId,
                                                   u => u.CEmployeeId,
                                                   (l, u) => new {
                CEmployeeId     = l.CEmployeeId,
                CApplyNumber    = l.CApplyNumber,
                CApplyDate      = l.CApplyDate,
                CLeaveCategory  = l.CLeaveCategory,
                CLeaveStartTime = l.CLeaveStartTime,
                CLeaveEndTime   = l.CLeaveEndTime,
                CCheckStatus    = l.CCheckStatus,
                CReason         = l.CReason,
                employeeName    = u.CEmployeeName,
                CDepartmentId   = u.CDepartmentId
            }).OrderByDescending(l => l.CApplyDate).AsEnumerable().Where(sc =>
                                                                         sc.CDepartmentId == DepId &&
                                                                         (sc.CEmployeeId != 1) &&
                                                                         (cate != null?sc.CLeaveCategory == cate:true) &&
                                                                         (status != null?sc.CCheckStatus == status:true) &&
                                                                         (start != null? DateTime.Parse(sc.CApplyDate) >= start:true) &&
                                                                         (end != null? DateTime.Parse(sc.CApplyDate) <= end:true)).ToList();

            List <TLeaveApplicationViewModel> list = new List <TLeaveApplicationViewModel>();

            foreach (var item in table)
            {
                TLeaveApplicationViewModel leaObj = new TLeaveApplicationViewModel()
                {
                    CApplyNumber    = item.CApplyNumber,
                    CEmployeeId     = item.CEmployeeId,
                    employeeName    = item.employeeName,
                    CApplyDate      = item.CApplyDate,
                    CLeaveCategory  = item.CLeaveCategory,
                    CLeaveStartTime = item.CLeaveStartTime,
                    CLeaveEndTime   = item.CLeaveEndTime,
                    CReason         = item.CReason,
                    CCheckStatus    = item.CCheckStatus
                };
                list.Add(leaObj);
            }
            return(PartialView("date_search", list));
        }
        public IActionResult List()
        {
            int DepId = int.Parse(HttpContext.Session.GetString(CDictionary.CURRENT_LOGINED_USERDEPARTMENTID));
            List <TLeaveApplicationViewModel> list = new List <TLeaveApplicationViewModel>();

            List <TLeave> leaveCate = getLeaveCategory();//取得資料庫的類別

            ViewBag.leaveCategory = leaveCate;

            List <TCheckStatus> checkSta = getCheckStatus();//取的資料庫的審核狀態

            ViewBag.leaveStatus = checkSta;

            if (!string.IsNullOrEmpty(Request.ContentType))
            {
                string AppNum = Request.Form["txtAppNum"];
                string Id     = Request.Form["txtId"];
                string Name   = Request.Form["txtName"];

                //AppNum有值
                if (!string.IsNullOrEmpty(AppNum) && string.IsNullOrEmpty(Id) && string.IsNullOrEmpty(Name))
                {
                    var table = from leave in DB.TLeaveApplications
                                join user in DB.TUsers on leave.CEmployeeId equals user.CEmployeeId
                                where leave.CDepartmentId == DepId &&
                                (leave.CEmployeeId != 1) &&
                                leave.CApplyNumber.ToString().Contains(AppNum)
                                orderby leave.CApplyDate descending
                                select new
                    {
                        user.CEmployeeName,
                        leave.CApplyDate,
                        leave.CApplyNumber,
                        leave.CCheckStatus,
                        leave.CLeaveCategory,
                        leave.CLeaveStartTime,
                        leave.CLeaveEndTime,
                        leave.CEmployeeId,
                        leave.CReason
                    };

                    foreach (var item in table)
                    {
                        TLeaveApplicationViewModel newObj = new TLeaveApplicationViewModel()
                        {
                            CApplyNumber    = item.CApplyNumber,
                            CApplyDate      = item.CApplyDate,
                            employeeName    = item.CEmployeeName,
                            CEmployeeId     = item.CEmployeeId,
                            CReason         = item.CReason,
                            CLeaveStartTime = item.CLeaveStartTime,
                            CLeaveEndTime   = item.CLeaveEndTime,
                            CLeaveCategory  = item.CLeaveCategory,
                            CCheckStatus    = item.CCheckStatus
                        };
                        list.Add(newObj);
                    }
                }
                //Id有值
                else if (string.IsNullOrEmpty(AppNum) && !string.IsNullOrEmpty(Id) && string.IsNullOrEmpty(Name))
                {
                    var table = from leave in DB.TLeaveApplications
                                join user in DB.TUsers
                                on leave.CEmployeeId equals user.CEmployeeId
                                where leave.CDepartmentId == DepId &&
                                (leave.CEmployeeId != 1) &&
                                leave.CEmployeeId.ToString().Contains(Id)
                                orderby leave.CApplyDate descending
                                select new
                    {
                        user.CEmployeeName,
                        leave.CApplyDate,
                        leave.CApplyNumber,
                        leave.CCheckStatus,
                        leave.CLeaveCategory,
                        leave.CLeaveStartTime,
                        leave.CLeaveEndTime,
                        leave.CEmployeeId,
                        leave.CReason
                    };

                    foreach (var item in table)
                    {
                        TLeaveApplicationViewModel newObj = new TLeaveApplicationViewModel()
                        {
                            CApplyNumber    = item.CApplyNumber,
                            CApplyDate      = item.CApplyDate,
                            employeeName    = item.CEmployeeName,
                            CEmployeeId     = item.CEmployeeId,
                            CReason         = item.CReason,
                            CLeaveStartTime = item.CLeaveStartTime,
                            CLeaveEndTime   = item.CLeaveEndTime,
                            CLeaveCategory  = item.CLeaveCategory,
                            CCheckStatus    = item.CCheckStatus
                        };
                        list.Add(newObj);
                    }
                }
                //Name有值
                else if (string.IsNullOrEmpty(AppNum) && string.IsNullOrEmpty(Id) && !string.IsNullOrEmpty(Name))
                {
                    var table = from leave in DB.TLeaveApplications
                                join user in DB.TUsers
                                on leave.CEmployeeId equals user.CEmployeeId
                                where leave.CDepartmentId == DepId &&
                                (leave.CEmployeeId != 1) &&
                                user.CEmployeeName.Contains(Name)
                                orderby leave.CApplyDate descending
                                select new
                    {
                        user.CEmployeeName,
                        leave.CApplyDate,
                        leave.CApplyNumber,
                        leave.CCheckStatus,
                        leave.CLeaveCategory,
                        leave.CLeaveStartTime,
                        leave.CLeaveEndTime,
                        leave.CEmployeeId,
                        leave.CReason
                    };

                    foreach (var item in table)
                    {
                        TLeaveApplicationViewModel newObj = new TLeaveApplicationViewModel()
                        {
                            CApplyNumber    = item.CApplyNumber,
                            CApplyDate      = item.CApplyDate,
                            employeeName    = item.CEmployeeName,
                            CEmployeeId     = item.CEmployeeId,
                            CReason         = item.CReason,
                            CLeaveStartTime = item.CLeaveStartTime,
                            CLeaveEndTime   = item.CLeaveEndTime,
                            CLeaveCategory  = item.CLeaveCategory,
                            CCheckStatus    = item.CCheckStatus
                        };
                        list.Add(newObj);
                    }
                }

                //AppNum, Id有值
                else if (!string.IsNullOrEmpty(AppNum) && !string.IsNullOrEmpty(Id) && string.IsNullOrEmpty(Name))
                {
                    var table = from leave in DB.TLeaveApplications
                                join user in DB.TUsers
                                on leave.CEmployeeId equals user.CEmployeeId
                                where leave.CDepartmentId == DepId &&
                                (leave.CEmployeeId != 1) &&
                                leave.CApplyNumber.ToString().Contains(AppNum) &&
                                leave.CEmployeeId.ToString().Contains(Id)
                                orderby leave.CApplyDate descending
                                select new
                    {
                        user.CEmployeeName,
                        leave.CApplyDate,
                        leave.CApplyNumber,
                        leave.CCheckStatus,
                        leave.CLeaveCategory,
                        leave.CLeaveStartTime,
                        leave.CLeaveEndTime,
                        leave.CEmployeeId,
                        leave.CReason
                    };

                    foreach (var item in table)
                    {
                        TLeaveApplicationViewModel newObj = new TLeaveApplicationViewModel()
                        {
                            CApplyNumber    = item.CApplyNumber,
                            CApplyDate      = item.CApplyDate,
                            employeeName    = item.CEmployeeName,
                            CEmployeeId     = item.CEmployeeId,
                            CReason         = item.CReason,
                            CLeaveStartTime = item.CLeaveStartTime,
                            CLeaveEndTime   = item.CLeaveEndTime,
                            CLeaveCategory  = item.CLeaveCategory,
                            CCheckStatus    = item.CCheckStatus
                        };
                        list.Add(newObj);
                    }
                }
                //AppNum, Name有值
                else if (!string.IsNullOrEmpty(AppNum) && string.IsNullOrEmpty(Id) && !string.IsNullOrEmpty(Name))
                {
                    var table = from leave in DB.TLeaveApplications
                                join user in DB.TUsers
                                on leave.CEmployeeId equals user.CEmployeeId
                                where leave.CDepartmentId == DepId &&
                                (leave.CEmployeeId != 1) &&
                                leave.CApplyNumber.ToString().Contains(AppNum) &&
                                user.CEmployeeName.Contains(Name)
                                orderby leave.CApplyDate descending
                                select new
                    {
                        user.CEmployeeName,
                        leave.CApplyDate,
                        leave.CApplyNumber,
                        leave.CCheckStatus,
                        leave.CLeaveCategory,
                        leave.CLeaveStartTime,
                        leave.CLeaveEndTime,
                        leave.CEmployeeId,
                        leave.CReason
                    };

                    foreach (var item in table)
                    {
                        TLeaveApplicationViewModel newObj = new TLeaveApplicationViewModel()
                        {
                            CApplyNumber    = item.CApplyNumber,
                            CApplyDate      = item.CApplyDate,
                            employeeName    = item.CEmployeeName,
                            CEmployeeId     = item.CEmployeeId,
                            CReason         = item.CReason,
                            CLeaveStartTime = item.CLeaveStartTime,
                            CLeaveEndTime   = item.CLeaveEndTime,
                            CLeaveCategory  = item.CLeaveCategory,
                            CCheckStatus    = item.CCheckStatus
                        };
                        list.Add(newObj);
                    }
                }
                //Id, Name有值
                else if (string.IsNullOrEmpty(AppNum) && !string.IsNullOrEmpty(Id) && !string.IsNullOrEmpty(Name))
                {
                    var table = from leave in DB.TLeaveApplications
                                join user in DB.TUsers
                                on leave.CEmployeeId equals user.CEmployeeId
                                where leave.CDepartmentId == DepId &&
                                (leave.CEmployeeId != 1) &&
                                leave.CEmployeeId.ToString().Contains(Id) &&
                                user.CEmployeeName.Contains(Name)
                                orderby leave.CApplyDate descending
                                select new
                    {
                        user.CEmployeeName,
                        leave.CApplyDate,
                        leave.CApplyNumber,
                        leave.CCheckStatus,
                        leave.CLeaveCategory,
                        leave.CLeaveStartTime,
                        leave.CLeaveEndTime,
                        leave.CEmployeeId,
                        leave.CReason
                    };

                    foreach (var item in table)
                    {
                        TLeaveApplicationViewModel newObj = new TLeaveApplicationViewModel()
                        {
                            CApplyNumber    = item.CApplyNumber,
                            CApplyDate      = item.CApplyDate,
                            employeeName    = item.CEmployeeName,
                            CEmployeeId     = item.CEmployeeId,
                            CReason         = item.CReason,
                            CLeaveStartTime = item.CLeaveStartTime,
                            CLeaveEndTime   = item.CLeaveEndTime,
                            CLeaveCategory  = item.CLeaveCategory,
                            CCheckStatus    = item.CCheckStatus
                        };
                        list.Add(newObj);
                    }
                }

                //AppNum, Id, Name有值
                else if (!string.IsNullOrEmpty(AppNum) && !string.IsNullOrEmpty(Id) && !string.IsNullOrEmpty(Name))
                {
                    var table = from leave in DB.TLeaveApplications
                                join user in DB.TUsers
                                on leave.CEmployeeId equals user.CEmployeeId
                                where leave.CDepartmentId == DepId &&
                                (leave.CEmployeeId != 1) &&
                                leave.CApplyNumber.ToString().Contains(AppNum) &&
                                leave.CEmployeeId.ToString().Contains(Id) &&
                                user.CEmployeeName.Contains(Name)
                                orderby leave.CApplyDate descending
                                select new
                    {
                        user.CEmployeeName,
                        leave.CApplyDate,
                        leave.CApplyNumber,
                        leave.CCheckStatus,
                        leave.CLeaveCategory,
                        leave.CLeaveStartTime,
                        leave.CLeaveEndTime,
                        leave.CEmployeeId,
                        leave.CReason
                    };

                    foreach (var item in table)
                    {
                        TLeaveApplicationViewModel newObj = new TLeaveApplicationViewModel()
                        {
                            CApplyNumber    = item.CApplyNumber,
                            CApplyDate      = item.CApplyDate,
                            employeeName    = item.CEmployeeName,
                            CEmployeeId     = item.CEmployeeId,
                            CReason         = item.CReason,
                            CLeaveStartTime = item.CLeaveStartTime,
                            CLeaveEndTime   = item.CLeaveEndTime,
                            CLeaveCategory  = item.CLeaveCategory,
                            CCheckStatus    = item.CCheckStatus
                        };
                        list.Add(newObj);
                    }
                }

                //全部皆為空白
                else if (AppNum == "" && Id == "" && Name == "")
                {
                    var table = from leave in DB.TLeaveApplications
                                join user in DB.TUsers
                                on leave.CEmployeeId equals user.CEmployeeId
                                where leave.CDepartmentId == DepId &&
                                (leave.CEmployeeId != 1)
                                orderby leave.CApplyDate descending
                                select new
                    {
                        user.CEmployeeName,
                        leave.CApplyDate,
                        leave.CApplyNumber,
                        leave.CCheckStatus,
                        leave.CLeaveCategory,
                        leave.CLeaveStartTime,
                        leave.CLeaveEndTime,
                        leave.CEmployeeId,
                        leave.CReason
                    };

                    foreach (var item in table)
                    {
                        TLeaveApplicationViewModel newObj = new TLeaveApplicationViewModel()
                        {
                            CApplyNumber    = item.CApplyNumber,
                            CApplyDate      = item.CApplyDate,
                            employeeName    = item.CEmployeeName,
                            CEmployeeId     = item.CEmployeeId,
                            CReason         = item.CReason,
                            CLeaveStartTime = item.CLeaveStartTime,
                            CLeaveEndTime   = item.CLeaveEndTime,
                            CLeaveCategory  = item.CLeaveCategory,
                            CCheckStatus    = item.CCheckStatus
                        };
                        list.Add(newObj);
                    }
                }
            }
            //全部皆為空白
            else
            {
                var table = from leave in DB.TLeaveApplications
                            join user in DB.TUsers
                            on leave.CEmployeeId equals user.CEmployeeId
                            where leave.CDepartmentId == DepId &&
                            (leave.CEmployeeId != 1)
                            orderby leave.CApplyDate descending
                            select new
                {
                    user.CEmployeeName,
                    leave.CApplyDate,
                    leave.CApplyNumber,
                    leave.CCheckStatus,
                    leave.CLeaveCategory,
                    leave.CLeaveStartTime,
                    leave.CLeaveEndTime,
                    leave.CEmployeeId,
                    leave.CReason
                };

                foreach (var item in table)
                {
                    TLeaveApplicationViewModel newObj = new TLeaveApplicationViewModel()
                    {
                        CApplyNumber    = item.CApplyNumber,
                        CApplyDate      = item.CApplyDate,
                        employeeName    = item.CEmployeeName,
                        CEmployeeId     = item.CEmployeeId,
                        CReason         = item.CReason,
                        CLeaveStartTime = item.CLeaveStartTime,
                        CLeaveEndTime   = item.CLeaveEndTime,
                        CLeaveCategory  = item.CLeaveCategory,
                        CCheckStatus    = item.CCheckStatus
                    };
                    list.Add(newObj);
                }
            }
            return(View(list));
        }
Exemple #3
0
        public IActionResult Mutiple_search(int?cate, int?status, string?start, string?end)
        {
            //List<TLeaveApplication> table = MyHr.TLeaveApplications.Where(n => n.CLeaveCategory == cate).ToList();


            //string str_json = JsonConvert.SerializeObject(table, Formatting.Indented);
            //return str_json;
            //顯示JSON字串
            //li_showData.Text = str_json;
            ViewBag.UserId   = int.Parse(HttpContext.Session.GetString(CDictionary.CURRENT_LOGINED_USERID));
            ViewBag.UserName = HttpContext.Session.GetString(CDictionary.CURRENT_LOGINED_USERNAME);


            var table = MyHr.TLeaveApplications
                        .Join(MyHr.TUserDepartments, d => d.CDepartmentId, u => u.CDepartmentId, (d, u) => new
            {
                CApplyNumber = d.CApplyNumber,
                CEmployeeId  = d.CEmployeeId,
                //CEmployeeName = u.CEmployeeName,
                CDepartmentId   = d.CDepartmentId,
                CDepartmentName = u.CDepartment,
                CApplyDate      = d.CApplyDate,
                CLeaveCategory  = d.CLeaveCategory,
                CLeaveStartTime = d.CLeaveStartTime,
                CLeaveEndTime   = d.CLeaveEndTime,
                CReason         = d.CReason,
                CCheckStatus    = d.CCheckStatus,
                CLeaveHours     = d.CLeaveHours,
            }).OrderBy(du => du.CApplyDate).AsEnumerable().Where(du =>
                                                                 (cate != null ? du.CLeaveCategory == cate:true) &&
                                                                 (status != null ? du.CCheckStatus == status : true) &&
                                                                 (start != null ? DateTime.Parse(du.CLeaveEndTime) >= DateTime.Parse(start) : true) &&
                                                                 (end != null? DateTime.Parse(du.CLeaveStartTime) <= DateTime.Parse(end):true) &&
                                                                 ((end != null && start != null)? DateTime.Parse(du.CLeaveEndTime) >= DateTime.Parse(start) && DateTime.Parse(du.CLeaveStartTime) <= DateTime.Parse(end) : true)
                                                                 ).ToList();

            //int abc = table.Count;   ■ 這邊搜尋的資料並未針對USER,當沒有資料想要在前端做變化時,應當加入此條件。
            List <TLeaveApplicationViewModel> T = new List <TLeaveApplicationViewModel>();

            foreach (var item in table)
            {
                TLeaveApplicationViewModel obj = new TLeaveApplicationViewModel()
                {
                    CApplyNumber    = item.CApplyNumber,
                    CEmployeeId     = item.CEmployeeId,
                    CDepartmentId   = item.CDepartmentId,
                    CDepartmentName = item.CDepartmentName,
                    CApplyDate      = item.CApplyDate,
                    CLeaveCategory  = item.CLeaveCategory,
                    CLeaveStartTime = item.CLeaveStartTime,
                    CLeaveEndTime   = item.CLeaveEndTime,
                    CReason         = item.CReason,
                    CCheckStatus    = item.CCheckStatus,
                    CLeaveHours     = item.CLeaveHours
                };
                T.Add(obj);
            }


            //foreach (TLeaveApplication C in table)
            //    T.Add(new TLeaveApplicationViewModel(C,null));



            return(PartialView("Mutiple_search", T));
        }