示例#1
0
        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);
                }
            });
        }
示例#2
0
 public DeliveryRequestQueryFunctionality(IUnitOfWork unitOfWork, IMapperFactory mapperFactory, IGenericReadRepository readRepository, IDeliveryRequestFiltersProvider filtersProvider, IDeliveryRequestRelationsProvider relationsProvider) : base(unitOfWork, mapperFactory, readRepository)
 {
     _filtersProvider   = filtersProvider;
     _relationsProvider = relationsProvider;
 }