Exemplo n.º 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);
                }
            });
        }
Exemplo n.º 2
0
        public OrderPromoteCommandValidator(IGenericReadRepository readRepository, IOrderFiltersProvider orderFiltersProvider, IOrderRelationsProvider orderRelationsProvider) : base(readRepository)
        {
            _orderFiltersProvider = orderFiltersProvider;

            RuleFor(x => x.OrderId)
            .NotEmptyWithMessage()
            .MustExistsWithMessageAsync(OrderExists)
            .CustomAsync(async(orderId, context, cancellationToken) =>
            {
                var query     = await ReadRepository.GetQueryableAsync(_orderFiltersProvider.ById(orderId), orderRelationsProvider.JoinDeliveryRequest);
                var orderInfo = query
                                .Select(x => new
                {
                    OrderStatus           = x.StatusId,
                    DeliveryRequestStatus = x.DeliveryRequest != null ? x.DeliveryRequest.StatusId : (int?)null
                })
                                .FirstOrDefault();

                if ((OrderStatuses)orderInfo.OrderStatus == OrderStatuses.Completed)
                {
                    context.AddFailure(nameof(OrderPromoteCommand.OrderId), "Order is completed.");
                    return;
                }

                if (orderInfo.DeliveryRequestStatus.HasValue && (DeliveryRequestStatuses)orderInfo.DeliveryRequestStatus != DeliveryRequestStatuses.Closed)
                {
                    context.AddFailure(nameof(OrderPromoteCommand.OrderId), "You cannot promote the order until the corresponding delivery request is completed.");
                }
            });
        }
Exemplo n.º 3
0
        public async Task <IEnumerable <StatisticsDateCountModel> > GetStatisticsForLastDays(uint daysCount)
        {
            var endDate   = DateTime.UtcNow.Date;
            var startDate = endDate.AddDays(-daysCount);
            var query     = await ReadRepository.GetQueryableAsync(_filtersProvider.ByCreatedDate(startDate, endDate));

            var items = await query
                        .GroupBy(x => x.CreateDate.Date)
                        .Select(x => new { Date = x.Key, Count = x.Count() })
                        .ToDictionaryAsync(x => x.Date, x => x.Count);

            for (var date = startDate; date < endDate; date = date.AddDays(1))
            {
                if (!items.ContainsKey(date))
                {
                    items.Add(date, 0);
                }
            }

            return(items
                   .Select(x => new StatisticsDateCountModel {
                Date = x.Key, Count = x.Value
            })
                   .OrderBy(x => x.Date));
        }
        private async Task <bool> CarAmountIsValid(OrderFromStockCreateCommand command, CancellationToken cancellationToken)
        {
            var query = await ReadRepository.GetQueryableAsync(_carStockFiltersProvider.ById(command.CarId));

            var amount = query.Select(x => x.Amount).FirstOrDefault();

            return(amount >= 1);
        }
Exemplo n.º 5
0
        public async Task <int?> GetAssignedSupplierManagerByDeliveryRequestId(int id)
        {
            var query = await ReadRepository.GetQueryableAsync(_filtersProvider.ById(id));

            return(query.Select(x => x.SupplierManagerId).FirstOrDefault());
        }
        public async Task <IEnumerable <WorkOrderModel> > GetByWorkerIdAsync(int workerId)
        {
            var items = await ReadRepository.GetQueryableAsync(_filtersProvider.ByWorkerId(workerId), _relationProvider.JoinAll);

            return(Mapper.Map <IEnumerable <WorkOrderModel> >(items));
        }