Exemplo n.º 1
0
        // TODO Migrate to UseCases
        public async Task <ApiResponse <DateRange> > GetRentPeriod(Guid rentId)
        {
            var rent = await GetById(rentId);

            return(!rent.Success
                ? ApiResponses.Failure(DateRangeProvider.GetDateRange(DateTime.MinValue, DateTime.MinValue.AddTicks(1)).Result, rent.Message)
                : ApiResponses.Success(rent.Response.RentPeriod));
        }
Exemplo n.º 2
0
        // TODO Migrate to UseCases
        public async Task <ApiResponse <GetAllResponse <RentOutput> > > GetOpenRentsFromPeriod(PeriodInput input)
        {
            var period = DateRangeProvider.GetDateRange(input.StartDate, input.EndDate);

            if (!period.Success)
            {
                return(ApiResponses.Failure <GetAllResponse <RentOutput> >(period.Message));
            }

            return(await GetAll(r => r.IsOpen && period.Result.IsOnRange(r.RentPeriod)));
        }
        public async Task <ApiResponse <GetAllResponse <RenterOutput> > > GetBirthDaysOnPeriod(GetBirthDaysOnPeriodInput input)
        {
            var period = DateRangeProvider.GetDateRange(input.StartDate, input.EndDate);

            if (!period.Success)
            {
                return(ApiResponses.Failure <GetAllResponse <RenterOutput> >(period.Message));
            }

            return(await GetAll(r => period.Result.IsMonthOnRange(r.BirthDate.Date.Month)));
        }
        public async Task <UseCaseResult <RentRequirementValidationResult> > ValidateForForecast(RentRequirement requirement)
        {
            var isTryingToRentWithoutProducts = requirement.ProductsIds == null;

            if (isTryingToRentWithoutProducts)
            {
                return(UseCasesResponses.Failure <RentRequirementValidationResult>("Trying to Rent without products"));
            }

            var productsToRent = await _products.GetByIds(requirement.ProductsIds.ToList());

            if (!productsToRent.Success)
            {
                return(UseCasesResponses.Failure <RentRequirementValidationResult>(productsToRent.Message));
            }

            var renter = new PersistenceResponse <Renter>
            {
                Success  = true,
                Response = new Renter(
                    id: Guid.NewGuid(),
                    name: "Forecast",
                    code: "123",
                    creatorId: Guid.NewGuid(),
                    new GovernmentRegistrationDocumentCode("99999999999"),
                    new Email("*****@*****.**"),
                    new Phone("041", "999999999"),
                    new BirthDate(DateTime.Now.AddYears(-20)),
                    personImage: new byte[] {}
                    )
            };

            var rentPeriod = DateRangeProvider.GetDateRange(requirement.StartDate, requirement.EndDate);

            if (!rentPeriod.Success)
            {
                return(UseCasesResponses.Failure <RentRequirementValidationResult>(rentPeriod.Message));
            }

            var validationResult = new RentRequirementValidationResult
            {
                Products   = productsToRent.Response,
                RentPeriod = rentPeriod.Result,
                Renter     = renter.Response
            };

            return(UseCasesResponses.Success(validationResult));
        }
        public override async Task <UseCaseResult <RentRequirementValidationResult> > Validate(RentRequirement requirement)
        {
            var isTryingToRentWithoutProducts = requirement.ProductsIds == null;

            if (isTryingToRentWithoutProducts)
            {
                return(UseCasesResponses.Failure <RentRequirementValidationResult>("Trying to Rent without products"));
            }

            var productsToRent = await _products.GetByIds(requirement.ProductsIds.ToList());

            if (!productsToRent.Success)
            {
                return(UseCasesResponses.Failure <RentRequirementValidationResult>(productsToRent.Message));
            }

            var renter = await _renter.GetById(requirement.RenterId);

            if (!renter.Success)
            {
                return(UseCasesResponses.Failure <RentRequirementValidationResult>(renter.Message));
            }

            var rentPeriod = DateRangeProvider.GetDateRange(requirement.StartDate, requirement.EndDate);

            if (!rentPeriod.Success)
            {
                return(UseCasesResponses.Failure <RentRequirementValidationResult>(rentPeriod.Message));
            }

            var validationResult = new RentRequirementValidationResult
            {
                Products   = productsToRent.Response,
                RentPeriod = rentPeriod.Result,
                Renter     = renter.Response
            };

            return(UseCasesResponses.Success(validationResult));
        }