public async Task <SearchAccommodationViewModel> GetAsync(SearchAccommodationFormModel searchAccommodationForm)
        {
            try
            {
                var queryable = _context.Accommodations.AsQueryable();

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

                if (searchAccommodationForm.IsActivated.HasValue)
                {
                    queryable = queryable.Where(q => q.IsActivated == searchAccommodationForm.IsActivated.Value);
                }

                if (searchAccommodationForm.CityId.HasValue)
                {
                    queryable = queryable.Where(q => q.CityId == searchAccommodationForm.CityId.Value);
                }


                queryable = queryable.OrderBy(x => x.CityId);

                var resp = await queryable.Skip((searchAccommodationForm.PageIndex - 1) *searchAccommodationForm.PageSize).Take(searchAccommodationForm.PageSize).ToListAsync();

                var count = await queryable.CountAsync();

                var searchViewModel = new SearchAccommodationViewModel
                {
                    searchAccommodationViewModels = resp.Select(respAcc => new AccommodationViewModel()
                    {
                        Id          = respAcc.Id,
                        Caption     = respAcc.Caption,
                        Address     = respAcc.Address,
                        CityTitle   = $"{respAcc.City.Title} ({respAcc.City.Province.Title})",
                        Code        = respAcc.Code,
                        District    = respAcc.District,
                        IsActivated = respAcc.IsActivated,
                        FileId      = respAcc.FileId,
                        Number      = respAcc.Number
                    }).ToList(),
                    PageIndex  = searchAccommodationForm.PageIndex,
                    PageSize   = searchAccommodationForm.PageSize,
                    TotalCount = count
                };
                return(searchViewModel);
            }
            catch (Exception ex)
            {
                throw new ReservationGlobalException(AccommodationServiceErrors.GetAccommodationError, ex);
            }
        }
Esempio n. 2
0
 //[Authorize(Roles = "Accommodation-Get")]
 public async Task <IActionResult> Get([FromBody] SearchAccommodationFormModel searchAccommodationForm)
 {
     return(Ok(GetRequestResult(await _accommodationService.GetAsync(searchAccommodationForm))));
 }