public async Task <JsonResult> GetCheckRecord(SearchCheckModel model, PaginationViewModel pagination)
        {
            ResWithPaginationViewModel res = new ResWithPaginationViewModel();

            try
            {
                var result = await _checkRecord.GetCheckRecord(model, pagination);

                res.Data           = result.Data;
                res.Pagination     = result.Pagination;
                res.Message        = result.Message;
                res.Success        = result.Success;
                res.HttpStatusCode = System.Net.HttpStatusCode.OK;
            }
            catch
            {
                res.Message        = "與伺服器連線發生錯誤";
                res.Success        = false;
                res.HttpStatusCode = System.Net.HttpStatusCode.InternalServerError;
            }
            res.ResponseTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
            return(Json(res, JsonRequestBehavior.DenyGet));
        }
Пример #2
0
        /// <summary>
        /// 取得打卡列表
        /// </summary>
        /// <param name="model"></param>
        /// <param name="pagination"></param>
        /// <returns></returns>
        public async Task <ResWithPaginationViewModel> GetCheckRecord(SearchCheckModel model, PaginationViewModel pagination)
        {
            ResWithPaginationViewModel  pageData     = new ResWithPaginationViewModel();
            List <CheckRecordViewModel> check_inList = new List <CheckRecordViewModel>();

            try
            {
                var query = from a in _check_in.GetAll()
                            join b in _user.GetAll() on a.ur_id equals b.ur_id
                            where a.ci_da >= model.StartDateTime && a.ci_da <= model.EndDateTime
                            select new CheckRecordViewModel
                {
                    ci_sn  = a.ci_sn,
                    ur_id  = a.ur_id,
                    ci_da  = a.ci_da,
                    ci_ut  = a.ci_ut,
                    ci_dt  = a.ci_dt,
                    ur_ac  = b.ur_ac,
                    ci_ct  = a.ci_ct,
                    Remark = a.Remark,
                    ci_hr  = a.ci_hr
                };

                if (!string.IsNullOrEmpty(model.Query))
                {
                    var QueryString = model.Query.ToLower().Trim();
                    query = query.Where(x => x.ur_ac.ToLower().Trim().Contains(QueryString));
                }

                if (!string.IsNullOrEmpty(model.ur_id))
                {
                    query = query.Where(x => x.ur_id == model.ur_id);
                }

                var _TotalCount = query.Count();
                pageData.Pagination = new PaginationViewModel
                {
                    PerPage     = pagination.PerPage,
                    CurrentPage = pagination.CurrentPage,
                    TotalCounts = _TotalCount
                };

                query = query
                        .OrderByDescending(x => x.ci_da)
                        .Skip(pagination.GetSkipLength())
                        .Take(pagination.PerPage);

                if (query.Any())
                {
                    check_inList     = query.OrderByDescending(x => x.ci_da).ToList();
                    pageData.Data    = check_inList;
                    pageData.Success = true;
                    pageData.Message = "取得打卡紀錄成功";
                }
                else
                {
                    pageData.Success = true;
                    pageData.Message = "尚未有任何打卡紀錄";
                }
            }
            catch
            {
                pageData.Success = false;
                pageData.Message = "取得打卡紀錄失敗";
            }
            return(await Task.Run(() => pageData));
        }