示例#1
0
        public override async Task <UseCaseResult <GetProductsPerRentAverageResult> > Execute(Guid requirement)
        {
            var history = await _rentersRentalHistories.GetAll(r => r.RenterId == requirement);

            if (!history.Success)
            {
                return(UseCasesResponses.Failure <GetProductsPerRentAverageResult>(history.Message));
            }

            var rentIds = history.Response.Items.Select(r => r.RentId).ToList();
            var rents   = await _rentReadOnlyUseCases.GetByIds(rentIds);

            if (!rents.Success)
            {
                return(UseCasesResponses.Failure <GetProductsPerRentAverageResult>(rents.Message));
            }

            var hasAnyRent = rents.Result.Count != 0;

            if (!hasAnyRent)
            {
                return(UseCasesResponses.Success(new GetProductsPerRentAverageResult {
                    ProductsPerRentAverage = 0M
                }, "Doesnt have any rent yet"));
            }

            var productsPerRentAverage = (decimal)rents.Result.Sum(r => r.RentedProductsCount) / rents.Result.Count;
            var result = new GetProductsPerRentAverageResult
            {
                ProductsPerRentAverage = productsPerRentAverage
            };

            return(UseCasesResponses.Success(result));
        }
        public override async Task <UseCaseResult <GetOpenRentsPaymentForecastResult> > Execute(GetOpenRentsPaymentForecastRequirement requirement)
        {
            var openRents = await _rents.GetAll(
                r => !r.IsFinished && r.RentPeriod.EndDate <= requirement.TargetDate.Date.AddDays(1).AddTicks(-1)
                );

            if (!openRents.Success)
            {
                return(UseCasesResponses.Failure <GetOpenRentsPaymentForecastResult>(openRents.Message));
            }

            var openRentsPaymentForecast = openRents.Response.Items.Sum(r => r.CurrentRentPaymentValue);
            var result = new GetOpenRentsPaymentForecastResult(openRentsPaymentForecast);

            return(UseCasesResponses.Success(result));
        }
        public async Task <UseCaseResult <GetAllResponse <TEntity> > > GetAll(Func <TEntity, bool> whereExpression = null)
        {
            var persistenceResponse = await ReadOnlyPersistenceGateway.GetAll(whereExpression);

            return(UseCasesResponses.GetUseCaseResult(persistenceResponse));
        }
        public override async Task <UseCaseResult <GetAllResponse <ProductRentalHistory> > > Execute(Guid productId)
        {
            var getRentalHistory = await _productRentalHistories.GetAll(history => history.ProductId == productId);

            return(UseCasesResponses.GetUseCaseResult(getRentalHistory));
        }
示例#5
0
        public override async Task <UseCaseResult <GetAllResponse <Product> > > Execute()
        {
            var availableProducts = await _products.GetAll(p => !p.IsAvailable);

            return(UseCasesResponses.GetUseCaseResult(availableProducts));
        }
示例#6
0
        public override async Task <UseCaseResult <GetAllResponse <RenterRentalHistory> > > Execute(Guid renterId)
        {
            var getRentalHistory = await _rentersRentalHistories.GetAll(history => history.RenterId == renterId);

            return(UseCasesResponses.GetUseCaseResult(getRentalHistory));
        }