public async Task <TotalResponseModel <AdminListItemUser> > GetUsers(AdminFilterModel model) { string text = model.Search?.Trim(); if (!string.IsNullOrEmpty(text)) { text = $"%{text}%"; } var query = _context.Users.AsNoTracking().Where(x => string.IsNullOrEmpty(model.Search) || EF.Functions.ILike(x.Name, text)); Expression <Func <ApplicationUser, object> > orderExp = x => x.Id; orderExp = model.Sort switch { "name" => x => x.Name, "role" => x => _userManager.GetRolesAsync(x).Result.First(), "date" => x => x.CreatedAt, _ => x => x.Id }; int total = await query.CountAsync(); query = model.Sort == "date" ? query.OrderByDescending(orderExp) : query.OrderBy(orderExp); var users = await query.PaginateAsync(model); var result = new List <AdminListItemUser>(); foreach (var item in users) { result.Add(new AdminListItemUser { Id = item.Id, CreatedAt = item.CreatedAt, Email = item.Email, IsBlock = item.IsBlock, Name = item.Name, Phone = item.PhoneNumber, Role = (await _userManager.GetRolesAsync(item)).First() }); } return(new TotalResponseModel <AdminListItemUser> { Total = total, Items = result }); }
public async Task <TotalResponseModel <AdminRestaurantItem> > GetRestaurantsAsync(AdminFilterModel model) { string text = model.Search?.Trim(); if (!string.IsNullOrEmpty(text)) { text = $"%{text}%"; } var query = _context.Restaurants .AsNoTracking() .Where(x => string.IsNullOrEmpty(model.Search) || EF.Functions.ILike(x.Name, text)); Expression <Func <RestaurantEntity, object> > orderExp = x => x.Id; orderExp = model.Sort switch { "name" => x => x.Name, "popular" => x => x.Rating, _ => x => x.Id }; query = model.Sort == "popular" ? query.OrderByDescending(orderExp) : query.OrderBy(orderExp); var restaurants = await query.PaginateAsync(model); return(new TotalResponseModel <AdminRestaurantItem> { Total = await query.CountAsync(), Items = _mapper.Map <List <AdminRestaurantItem> >(restaurants) }); }
public async Task <IActionResult> GetAll([FromQuery] AdminFilterModel model) { TotalResponseModel <AdminRestaurantItem> result = await _restaurantService.GetRestaurantsAsync(model); return(Ok(result)); }
public async Task <IActionResult> Users([FromQuery] AdminFilterModel model) { TotalResponseModel <AdminListItemUser> result = await _adminService.GetUsers(model); return(Ok(result)); }