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 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."); } }); }
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); }
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)); }