private async Task <GenericCommandResult> CreateRequest(EnderecoModel endereco) { var sabores = new List <Sabor> { new Sabor("Mussarela", 10), new Sabor("Frango", 15) }; var pizzas = new List <PizzaSaborModel> { new PizzaSaborModel { Ordem = 0, Sabores = sabores.Select(x => x.Id).ToList() } }; var handler = new NewPedidoHandler(_pedidoRepository, _enderecoRepository, _saborRepository); await _enderecoRepository.Create(Arg.Any <Endereco>()); await _pedidoRepository.Create(Arg.Any <Pedido>()); _saborRepository.Get().ReturnsForAnyArgs(sabores); var request = new NewPedidoCommand(pizzas, null, endereco); var result = await handler.Handle(request, CancellationToken.None); return(result); }
public Task <ResultCalcular> Calcular(Pizza pizza) { try { ResultCalcular resultCalcular = new ResultCalcular(); Sabor sabor = _iSaborRepository.Get().ToList().Where(x => x.Descricao == pizza.Sabor).FirstOrDefault(); Tamanho tamanho = _iTamanhoRepository.Get().Where(x => x.Descricao == pizza.Tamanho).FirstOrDefault(); if (pizza.adicionalPizza != null) { foreach (var item in pizza.adicionalPizza) { pizza.TempoPreparo = pizza.TempoPreparo + item.Tempo; pizza.ValorTotal = pizza.ValorTotal + item.Valor; } } pizza.ValorTotal = pizza.ValorTotal + tamanho.Valor; if (sabor.Tempo != 0) { pizza.TempoPreparo = pizza.TempoPreparo + tamanho.Tempo + sabor.Tempo; } else { pizza.TempoPreparo = pizza.TempoPreparo + tamanho.Tempo; } resultCalcular.ValorTotal = pizza.ValorTotal; resultCalcular.TempoPreparo = pizza.TempoPreparo; return(Task.FromResult <ResultCalcular>(resultCalcular)); } catch (Exception) { throw; } }
public async Task <GenericCommandResult> Handle(NewPedidoCommand request, CancellationToken cancellationToken) { if (request.Pizzas == null || !request.Pizzas.Any()) { return(GenericCommandResult.Failure(new List <string> { ErrorMessages.EmptyPizzas })); } var validator = new NewPedidoCommandValidator(); var results = validator.Validate(request); if (!results.IsValid) { return(GenericCommandResult.Failure(results.Errors)); } List <Pizza> pizzas = new List <Pizza>(); Pedido pedido; if (!request.IdUsuario.HasValue) { var validatorEndereco = new EnderecoModelValidation(); var resultEndereco = validatorEndereco.Validate(request.Endereco); if (!resultEndereco.IsValid) { return(GenericCommandResult.Failure(resultEndereco.Errors)); } var endereco = new Endereco(request.Endereco.Rua, request.Endereco.Numero, request.Endereco.Complemento, request.Endereco.Bairro, request.Endereco.Cep, request.Endereco.Cidade, request.Endereco.Estado); await _enderecoRepository.Create(endereco); pedido = new Pedido(pizzas, request.IdUsuario, endereco.Id, DateTime.Now); } else { pedido = new Pedido(pizzas, request.IdUsuario, null, DateTime.Now); } var sabores = await _saborRepository.Get(); foreach (var p in request.Pizzas) { var pizza = new Pizza(pedido, sabores.Where(x => p.Sabores.Contains(x.Id)).Sum(s => s.Valor) / p.Sabores.Count); pizza.PizzaSabores = p.Sabores.Select(s => new PizzaSabor(pizza.Id, s)).ToList(); pizzas.Add(pizza); } await _pedidoRepository.Create(pedido); return(GenericCommandResult.Success(pedido.Id)); }
public IEnumerable <Sabor> Get() { return(_repository.Get()); }