public async Task <IActionResult> Get([FromBody] SearchBookinationFormModel searchFormModel) { return(Ok(GetRequestResult(await _bookinationService.GetAsync(searchFormModel)))); }
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); } }