Exemple #1
0
        public async Task <IActionResult> GetAll([FromQuery] HuongDanDoAnParams userParams)
        {
            var result = await _repo.GetAll(userParams);

            var resultToReturn = _mapper.Map <IEnumerable <HuongDanDoAnForListDto> >(result);

            Response.AddPagination(result.CurrentPage, result.PageSize, result.TotalCount, result.TotalPages);

            return(Ok(resultToReturn));
        }
        public async Task <PagedList <HuongDanDoAn> > GetAll(HuongDanDoAnParams userParams)
        {
            var result                 = _context.DanhSachHuongDanDoAn.Include(x => x.GiangVien).Include(x => x.DoAn).AsQueryable();
            var sortField              = userParams.SortField;
            var sortOrder              = userParams.SortOrder;
            var maGiangVien            = userParams.MaGiangVien;
            var maDoAn                 = userParams.MaDoAn;
            var keyword                = userParams.Keyword;
            var thoiGianTaoBatDau      = userParams.ThoiGianTaoBatDau;
            var thoiGianTaoKetThuc     = userParams.ThoiGianTaoKetThuc;
            var thoiGianCapNhatBatDau  = userParams.ThoiGianCapNhatBatDau;
            var thoiGianCapNhatKetThuc = userParams.ThoiGianCapNhatKetThuc;
            var trangThai              = userParams.TrangThai;

            if (!string.IsNullOrEmpty(keyword))
            {
                result = result.Where(x => x.NhanXet.ToLower().Contains(keyword.ToLower()));
            }

            if (!string.IsNullOrEmpty(maGiangVien))
            {
                result = result.Where(x => x.MaGiangVien.ToLower().Contains(keyword.ToLower()));
            }

            if (maDoAn > -1)
            {
                result = result.Where(x => x.MaDoAn == maDoAn);
            }

            if (thoiGianTaoBatDau.GetHashCode() != 0 && thoiGianTaoKetThuc.GetHashCode() != 0)
            {
                result = result.Where(x => x.ThoiGianTao >= thoiGianTaoBatDau && x.ThoiGianTao <= thoiGianTaoKetThuc);
            }

            if (thoiGianCapNhatBatDau.GetHashCode() != 0 && thoiGianCapNhatKetThuc.GetHashCode() != 0)
            {
                result = result.Where(x => x.ThoiGianCapNhat >= thoiGianCapNhatBatDau && x.ThoiGianCapNhat <= thoiGianCapNhatKetThuc);
            }

            if (trangThai > -1)
            {
                result = result.Where(x => x.TrangThai == trangThai);
            }

            if (!string.IsNullOrEmpty(sortField) && !string.IsNullOrEmpty(sortOrder))
            {
                switch (sortField)
                {
                case "MaGiangVien":
                    if (string.Equals(sortOrder, "ASC", StringComparison.OrdinalIgnoreCase))
                    {
                        result = result.OrderBy(x => x.MaGiangVien);
                    }
                    else
                    {
                        result = result.OrderByDescending(x => x.MaGiangVien);
                    }
                    break;

                case "MaDoAn":
                    if (string.Equals(sortOrder, "ASC", StringComparison.OrdinalIgnoreCase))
                    {
                        result = result.OrderBy(x => x.MaDoAn);
                    }
                    else
                    {
                        result = result.OrderByDescending(x => x.MaDoAn);
                    }
                    break;

                /* //case "Diem":
                 * //   if (string.Equals(sortOrder, "ASC", StringComparison.OrdinalIgnoreCase))
                 *   {
                 *       result = result.OrderBy(x => x.Diem);
                 *   }
                 *   else
                 *   {
                 *       result = result.OrderByDescending(x => x.Diem);
                 *   }
                 *   break;*/

                case "NhanXet":
                    if (string.Equals(sortOrder, "ASC", StringComparison.OrdinalIgnoreCase))
                    {
                        result = result.OrderBy(x => x.NhanXet);
                    }
                    else
                    {
                        result = result.OrderByDescending(x => x.NhanXet);
                    }
                    break;

                case "ThoiGianTao":
                    if (string.Equals(sortOrder, "ASC", StringComparison.OrdinalIgnoreCase))
                    {
                        result = result.OrderBy(x => x.ThoiGianTao);
                    }
                    else
                    {
                        result = result.OrderByDescending(x => x.ThoiGianTao);
                    }
                    break;

                case "ThoiGianCapNhat":
                    if (string.Equals(sortOrder, "ASC", StringComparison.OrdinalIgnoreCase))
                    {
                        result = result.OrderBy(x => x.ThoiGianCapNhat);
                    }
                    else
                    {
                        result = result.OrderByDescending(x => x.ThoiGianCapNhat);
                    }
                    break;

                case "TrangThai":
                    if (string.Equals(sortOrder, "ASC", StringComparison.OrdinalIgnoreCase))
                    {
                        result = result.OrderBy(x => x.TrangThai);
                    }
                    else
                    {
                        result = result.OrderByDescending(x => x.TrangThai);
                    }
                    break;

                default:
                    result = result.OrderByDescending(x => x.ThoiGianTao);
                    break;
                }
            }
            _total = result.Count();

            var totalPages  = (_total / userParams.PageSize) + 1;
            var hasNextPage = userParams.PageNumber < totalPages ? true : false;

            _hasNextPage = hasNextPage;
            return(await PagedList <HuongDanDoAn> .CreateAsync(result, userParams.PageNumber, userParams.PageSize));
        }