Ejemplo n.º 1
0
        public async Task <Result <Freight> > Create(CreateFreightViewModel viewModel)
        {
            var maybeState = await _stateRepository.FindById(viewModel.StateId);

            if (maybeState.HasNoValue)
            {
                return(Result.Fail <Freight>("Estado não existe"));
            }

            var state = maybeState.Value;

            var value = new FreightValue
            {
                Name         = $"{viewModel.Name} {state.Name}",
                Price        = viewModel.Price,
                BeginZipCode = state.BeginZipCode,
                EndZipCode   = state.EndZipCode,
                BeginWeight  = 0,
                EndWeight    = 0,
                Deadline     = viewModel.Deadline
            };

            var values = new List <FreightValue>
            {
                value
            };

            var freight = new Freight
            {
                Name   = viewModel.Name,
                Values = values
            };

            return(Result.Ok(freight));
        }
Ejemplo n.º 2
0
        public Task <Result <Freight> > Create(CreateFreightViewModel viewModel)
        {
            var value = new FreightValue
            {
                Name         = viewModel.Name,
                Price        = viewModel.Price,
                BeginZipCode = "0",
                EndZipCode   = "0",
                BeginWeight  = 0,
                EndWeight    = 0,
                Deadline     = viewModel.Deadline
            };

            var values = new List <FreightValue>()
            {
                value
            };

            var freight = new Freight
            {
                Name   = viewModel.Name,
                Values = values
            };

            var result = Result.Ok(freight);

            return(Task.FromResult(result));
        }
        public async Task <Result <Freight> > Create(CreateFreightViewModel viewModel)
        {
            var maybeState = await _stateRepository.FindById(viewModel.StateId);

            if (maybeState.HasNoValue)
            {
                return(Result.Fail <Freight>("Estado não existe"));
            }

            var state = maybeState.Value;

            var tasks = viewModel.CitiesId.Select(async it =>
            {
                var maybeCity = await _cityRepository.FindById(viewModel.StateId, it);

                if (maybeCity.HasNoValue)
                {
                    return(Result.Fail <FreightValue>("Cidade não existe"));
                }

                var city = maybeCity.Value;

                var value = new FreightValue
                {
                    Name         = $"{viewModel.Name} {state.Name} {city.Name}",
                    Price        = viewModel.Price,
                    BeginZipCode = city.BeginZipCode,
                    EndZipCode   = city.EndZipCode,
                    BeginWeight  = 0,
                    EndWeight    = 0,
                    Deadline     = viewModel.Deadline
                };

                return(Result.Ok(value));
            });

            var results = await Task.WhenAll(tasks);

            var result = Result.Combine(results);

            if (result.Failure)
            {
                return(Result.Fail <Freight>(result.Message));
            }

            var values = results.Select(it => it.Value);

            var freigth = new Freight
            {
                Name   = viewModel.Name,
                Values = values
            };

            return(Result.Ok(freigth));
        }
Ejemplo n.º 4
0
        public async Task <Result> Create(CreateFreightViewModel viewModel, ICreateFreightStrategy strategy)
        {
            var freightResult = await strategy.Create(viewModel);

            if (freightResult.Failure)
            {
                return(Result.Fail(freightResult.Message));
            }

            var saveResult = await _freightRepository.Save(freightResult.Value);

            return(saveResult);
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> Create([FromBody] CreateFreightViewModel viewModel, [FromServices] ICreateFreightStrategyFactory strategyFactory)
        {
            var strategy = strategyFactory.Create(viewModel.Region);

            var result = await _freightApplication.Create(viewModel, strategy);

            if (result.Failure)
            {
                _uow.Rollback();

                return(BadRequest(result.Message));
            }

            _uow.Commit();

            return(Ok());
        }