Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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));
        }