// Atualizar cesta de compras do usuário // se ela não existir retornar uma nova cesta public async Task <CestaCliente> UpdateBasketAsync(CestaCliente basket) { var created = await _database.StringSetAsync(basket.Id, JsonConvert.SerializeObject(basket), TimeSpan.FromDays(30)); if (!created) { return(null); } return(await GetBasketAsync(basket.Id)); }
public async Task <Ordem> CriarOrdemAsync(string emailComprador, string cestaId) { // Obter cesta de compras CestaCliente cesta = await _basketRepository.GetBasketAsync(cestaId); // Obter itens var itens = new List <VagaAlugada>(); foreach (BasketItem item in cesta.ItensCestaCliente) { //Estacionamento estacionamento = await _dataContext.Estacionamentos.FindAsync(item.Id); //Estacionamento estacionamento = await _context.Estacionamentos.Include(e => e.Endereco).FirstOrDefaultAsync(x => x.Id == item.Id); var spec = new EstacionamentoComEnderecoSpecification(item.Id); Estacionamento estacionamento = await _unitOfWork.Repositorio <Estacionamento>().ObterEntidadeComSpec(spec); VagaOrdenada vagaOrdenada = new VagaOrdenada(estacionamento.NomeEstacionamento, estacionamento.Endereco.NomeLogradouro, estacionamento.Endereco.Numero, estacionamento.Endereco.Cep, estacionamento.Endereco.Bairro, estacionamento.Endereco.Cidade, estacionamento.Endereco.Estado); VagaAlugada vagaAlugada = new VagaAlugada(vagaOrdenada, (decimal)estacionamento.PrecoHora, item.Quantidade); itens.Add(vagaAlugada); } // Calcular total var total = itens.Sum(ItensCestaCliente => ItensCestaCliente.Preco * ItensCestaCliente.Quantidade); // verificar se a ordem já existe // Criar ordem nova Ordem ordem = new Ordem(itens, emailComprador, total /*cestaCliente.PaymentIntentId*/); _unitOfWork.Repositorio <Ordem>().Adicionar(ordem); // salvar no banco de dados var resultado = await _unitOfWork.Complete(); // Se o resultado for zero retornar null if (resultado <= 0) { return(null); } // Deletar cesta de compras (por que a ordem já foi retornada e salva) await _basketRepository.DeleteBasketAsync(cestaId); //retorna nova ordem return(ordem); }
public async Task <ActionResult <CestaCliente> > UpdateBasket(CestaCliente basket) { CestaCliente updatedBasket = await _basketRepository.UpdateBasketAsync(basket); return(Ok(updatedBasket)); }
public async Task <ActionResult <CestaCliente> > GetBasketById(string id) { CestaCliente basket = await _basketRepository.GetBasketAsync(id); return(Ok(basket ?? new CestaCliente(id))); }