public DeliveryRequestPromoteCommandValidator(IGenericReadRepository readRepository, IDeliveryRequestFiltersProvider deliveryRequestFiltersProvider) : base(readRepository) { _deliveryRequestFiltersProvider = deliveryRequestFiltersProvider; RuleFor(x => x.DeliveryRequestId) .NotEmptyWithMessage() .MustExistsWithMessageAsync(DeliveryRequestExists) .CustomAsync(async(deliveryRequestId, context, cancellationToken) => { var query = await ReadRepository.GetQueryableAsync(deliveryRequestFiltersProvider.ById(deliveryRequestId)); var deliveryRequestStatus = (DeliveryRequestStatuses)query.Select(x => x.StatusId).FirstOrDefault(); string errorMessage; switch (deliveryRequestStatus) { case DeliveryRequestStatuses.Opened: errorMessage = "Delivery request is not assigned to the user."; break; case DeliveryRequestStatuses.Closed: errorMessage = "Delivery request is closed."; break; default: errorMessage = string.Empty; break; } if (!string.IsNullOrEmpty(errorMessage)) { context.AddFailure(nameof(DeliveryRequestAssignCommand.DeliveryRequestId), errorMessage); } }); }
public DeliveryRequestQueryFunctionality(IUnitOfWork unitOfWork, IMapperFactory mapperFactory, IGenericReadRepository readRepository, IDeliveryRequestFiltersProvider filtersProvider, IDeliveryRequestRelationsProvider relationsProvider) : base(unitOfWork, mapperFactory, readRepository) { _filtersProvider = filtersProvider; _relationsProvider = relationsProvider; }