示例#1
0
 public async Task <IActionResult> Get([FromBody] SearchBookinationFormModel searchFormModel)
 {
     return(Ok(GetRequestResult(await _bookinationService.GetAsync(searchFormModel))));
 }
示例#2
0
        public async Task <SearchBookinationViewModel> GetAsync(SearchBookinationFormModel searchFormModel)
        {
            try
            {
                var queryable = _context.Bookinations.AsQueryable();

                if (!string.IsNullOrEmpty(searchFormModel.FirstName))
                {
                    queryable = queryable.Where(q => q.FirstName.Contains(searchFormModel.FirstName));
                }

                if (!string.IsNullOrEmpty(searchFormModel.LastName))
                {
                    queryable = queryable.Where(q => q.LastName.Contains(searchFormModel.LastName));
                }

                if (!string.IsNullOrEmpty(searchFormModel.Mobile))
                {
                    queryable = queryable.Where(q => q.Mobile == searchFormModel.Mobile);
                }

                if (!string.IsNullOrEmpty(searchFormModel.NationalityCode))
                {
                    queryable = queryable.Where(q => q.NationalityCode == searchFormModel.NationalityCode);
                }

                if (searchFormModel.SortModel != null)
                {
                    switch (searchFormModel.SortModel.Col + "|" + searchFormModel.SortModel.Sort)
                    {
                    case "firstname|asc":
                        queryable = queryable.OrderBy(x => x.FirstName);
                        break;

                    case "lastname|asc":
                        queryable = queryable.OrderBy(x => x.LastName);
                        break;

                    case "lastname|desc":
                        queryable = queryable.OrderByDescending(x => x.LastName);
                        break;

                    case "mobile|asc":
                        queryable = queryable.OrderBy(x => x.Mobile);
                        break;

                    case "mobile|desc":
                        queryable = queryable.OrderByDescending(x => x.Mobile);
                        break;

                    case "nationalityCode|asc":
                        queryable = queryable.OrderBy(x => x.NationalityCode);
                        break;

                    case "nationalityCode|desc":
                        queryable = queryable.OrderByDescending(x => x.NationalityCode);
                        break;

                    default:
                        queryable = queryable.OrderBy(x => x.NationalityCode);
                        break;
                    }
                }
                else
                {
                    queryable = queryable.OrderBy(x => x.NationalityCode);
                }
                var resp = await queryable.Skip((searchFormModel.PageIndex - 1) *searchFormModel.PageSize).Take(searchFormModel.PageSize).ToListAsync();

                var count = await queryable.CountAsync();

                var searchViewModel = new SearchBookinationViewModel
                {
                    bookinationViewModels = resp.Select(respBook => new BookinationViewModel()
                    {
                        Id              = respBook.Id,
                        FirstName       = respBook.FirstName,
                        LastName        = respBook.LastName,
                        NationalityCode = respBook.NationalityCode,
                        Description     = respBook.Description,
                        Mobile          = respBook.Mobile,
                        StartDate       = respBook.StartDate,
                        EndDate         = respBook.EndDate,
                        ReserveCode     = respBook.ReserveCode
                    }).ToList(),
                    PageIndex  = searchFormModel.PageIndex,
                    PageSize   = searchFormModel.PageSize,
                    TotalCount = count
                };
                return(searchViewModel);
            }
            catch (Exception ex)
            {
                throw new ReservationGlobalException(BookinationServiceErrors.GetError, ex);
            }
        }