public async Task <ActionResult <EstablishmentDto> > GetById([FromRoute(Name = "EstablishmentId")] Guid establishmentId, [FromQuery(Name = "Includes")] List <string> includes, [FromServices] EstablishmentParametersValidator validator) { if (validator is null) { throw new ArgumentNullException(nameof(validator)); } // Create an EstablishmentParameters instance containing only the requested Includes var parameters = new EstablishmentParameters { Includes = includes }; // Manual validation var validationResult = validator.Validate(parameters); validationResult.AddToModelState(ModelState, null); if (!ModelState.IsValid) { return(ValidationProblem(ModelState)); } var establishment = await _establishmentService.GetById(establishmentId, parameters); if (establishment == null) { return(NotFound()); } return(Ok(establishment)); }
public async Task <ActionResult <IEnumerable <EstablishmentDto> > > GetAll([CustomizeValidator(Skip = true)][FromQuery] EstablishmentParameters establishmentParameters, [FromQuery(Name = "Includes")] List <string> includes, [FromServices] EstablishmentParametersValidator validator) { if (establishmentParameters is null) { throw new ArgumentNullException(nameof(establishmentParameters)); } if (validator is null) { throw new ArgumentNullException(nameof(validator)); } // Add requested Includes to EstablishmentParameters before validation establishmentParameters.Includes = includes; // Perform manual validation now that EstablishmentParameters is complete var validationResult = validator.Validate(establishmentParameters); validationResult.AddToModelState(ModelState, null); if (!ModelState.IsValid) { return(ValidationProblem(ModelState)); } var establishments = await _establishmentService.GetAll(establishmentParameters); return(Ok(establishments)); }
public async Task <IEnumerable <EstablishmentDto> > GetAll(EstablishmentParameters parameters) { if (parameters is null) { throw new ArgumentNullException(nameof(parameters)); } var establishments = _unitOfWork.EstablishmentRepo.GetAll(); if (parameters.Includes != null) { establishments = parameters.Includes.Aggregate(establishments, (current, include) => current.Include(include)); } if (parameters.UserId != Guid.Empty) { establishments = establishments.Where(e => e.UserId == parameters.UserId); } if (!string.IsNullOrWhiteSpace(parameters.ShortCode)) { var shortCode = parameters.ShortCode.Trim(); establishments = establishments.Where(e => e.ShortCode == shortCode); } if (parameters.Type != null) { establishments = establishments.Where(e => e.Type == parameters.Type); } if (parameters.Status != null) { establishments = establishments.Where(e => e.Status == parameters.Status); } if (parameters.Day != null) { establishments = establishments.Include(e => e.BusinessHours).Where(e => e.BusinessHours.Any(bh => bh.Day == parameters.Day && bh.OpeningHour != null)); } establishments = establishments.Paginate(parameters); establishments = establishments.OrderBy(e => e.AddedDate); var result = await establishments.ToListAsync(); foreach (var establishment in result) { establishment.BusinessHours = establishment.BusinessHours?.OrderBy(bh => bh.Day).ToList(); } return(_mapper.Map <IEnumerable <EstablishmentDto> >(result)); }
public async Task <EstablishmentDto> GetById(Guid establishmentId, EstablishmentParameters parameters = default) { var establishments = _unitOfWork.EstablishmentRepo.GetById(establishmentId); if (parameters?.Includes != null) { establishments = parameters.Includes.Aggregate(establishments, (current, include) => current.Include(include)); } var establishment = await establishments.SingleOrDefaultAsync(); return(_mapper.Map <EstablishmentDto>(establishment)); }