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)); }
public override async Task <UseCaseResult <GetAllResponse <Product> > > Execute() { var availableProducts = await _products.GetAll(p => !p.IsAvailable); return(UseCasesResponses.GetUseCaseResult(availableProducts)); }
public override async Task <UseCaseResult <GetAllResponse <RenterRentalHistory> > > Execute(Guid renterId) { var getRentalHistory = await _rentersRentalHistories.GetAll(history => history.RenterId == renterId); return(UseCasesResponses.GetUseCaseResult(getRentalHistory)); }