public async Task GetReservationsTestAsync() { await AddReservationsAsync(); var options = new ApiQueryOptions { Page = 1, PageSize = 2, }; var actionResuolt = await _reservationsController.GetReservations(options); var okResult = actionResuolt as OkObjectResult; var apiResult = okResult.Value as ApiResult; Assert.AreEqual(apiResult.Page, 1); Assert.AreEqual(apiResult.Pages, 2); Assert.AreEqual(apiResult.Total, 3); var data = apiResult.Data as List <ReservationDto>; Assert.AreEqual(data.Count, 2); options.PageSize = 10; actionResuolt = await _reservationsController.GetReservations(options); okResult = actionResuolt as OkObjectResult; apiResult = okResult.Value as ApiResult; Assert.AreEqual(apiResult.Pages, 1); data = apiResult.Data as List <ReservationDto>; Assert.AreEqual(data.Count, 3); }
protected Result <T[]> Query <T>(SqlSelect select, Action <ApiQueryOptions <T> > options, Func <SqlRow, T> create) { if (select == null) { return(NotFound()); } var opt = new ApiQueryOptions <T>(); options?.Invoke(opt); Values <string> fields = null; List <string> displayFields = null; if (create != null) { } else { var idBuilderStack = select.GetBuilderStack(Sql.Id); if (idBuilderStack == null) { return(Unavailable($"Builder with the identifier key ({Sql.Id}) is not found in the current builders. Please review the select function for this method.")); } fields = Parameters.Fields; displayFields = new(); if (Parameters.Queries != null && Parameters.Queries.Length > 0) { Dictionary <string, (SqlQueryType, string)[]> queries = new();
/// <summary> /// Get Contacts filteres, ordered and paginated /// </summary> /// <param name="option"></param> /// <returns></returns> public async Task <ApiResult> GetContacts(ApiQueryOptions option) { var query = string.IsNullOrEmpty(option.Search) ? _context.Contacts.Where(x => x.Name != "") : _context.Contacts.Where(x => x.Name.Contains(option.Search)); var count = await query.CountAsync(); switch (option.Sort) { case "0_asc": query = query.OrderBy(x => x.Name); break; case "0_desc": query = query.OrderByDescending(x => x.Name); break; case "1_asc": query = query.OrderBy(x => x.ContactType); break; case "1_desc": query = query.OrderByDescending(x => x.ContactType); break; case "2_asc": query = query.OrderBy(x => x.PhoneNumber); break; case "2_desc": query = query.OrderByDescending(x => x.PhoneNumber); break; case "3_asc": query = query.OrderBy(x => x.BirthDate); break; case "3_desc": query = query.OrderByDescending(x => x.BirthDate); break; } var skip = option.Page == 1 ? 0 : (option.Page - 1) * option.PageSize; var data = await query.Skip(skip).Take(option.PageSize).ToListAsync(); return(new ApiResult { Page = option.Page, Pages = (int)Math.Ceiling(count / (decimal)option.PageSize), Total = count, Data = data }); }
/// <summary> /// Get reservations orderes, filtered and paginated /// </summary> /// <param name="option"></param> /// <returns></returns> public async Task <ApiResult> GetReservations(ApiQueryOptions option) { var query = _context.Reservations.Select(x => new ReservationDto { Id = x.Id, Name = x.Contact.Name, Rating = x.Rating, CreatedDate = x.CreatedDate, IsFavorite = _context.FavoriteReservations.Any(r => r.UserId == option.CurrentUser && r.ReservationId == x.Id) }); var count = await query.CountAsync(); switch (option.Sort) { case "1": query = query.OrderBy(x => x.CreatedDate); break; case "2": query = query.OrderByDescending(x => x.CreatedDate); break; case "3": query = query.OrderBy(x => x.Name); break; case "4": query = query.OrderByDescending(x => x.Name); break; case "5": query = query.OrderBy(x => x.Rating); break; case "6": query = query.OrderByDescending(x => x.Rating); break; } var skip = option.Page == 1 ? 0 : (option.Page - 1) * option.PageSize; var data = await query.Skip(skip).Take(option.PageSize).ToListAsync(); return(new ApiResult { Page = option.Page, Pages = (int)Math.Ceiling(count / (decimal)option.PageSize), Total = count, Data = data }); }
public override ListResult <UserDto> Handle(ApiQueryOptions queryOptions) { var result = Continue <Domain.Processes.Users.List>().With(queryOptions); if (result.IsFaulted) { return(Fail(result)); } var userDtos = result.Result.Select(x => (UserDto)x).ToList(); return(new ListResult <UserDto>(userDtos) { TotalCount = result.TotalCount }); }
public async Task <ActionResult> GetReservations([FromQuery] ApiQueryOptions option) { ApiResult result = await _reservationService.GetReservations(option); return(new OkObjectResult(result)); }
public override ListResult <UserDto> Validate(ApiQueryOptions queryOptions) { return(BeginValidation() .Validate(new NotNullEntity <ApiQueryOptions>(), queryOptions) .ReturnResult()); }
public override ListResult <UserDto> Auth(ApiQueryOptions queryOptions) { return(Ok()); }