public async Task <Cliente> Add(Cliente cliente)
        {
            int tipoEnd;

            var Verifica_cliente = await _repo.GetAllAsyncDapper(new ClienteConsulta
            {
                Cod_empresa = cliente.Cod_empresa,
                CPF         = cliente.CPF
            });

            if (Verifica_cliente.Count != 0)
            {
                throw new Exception("Cliente já cadastrado na mesma empresa");
            }

            for (int x = 0; x < cliente.clienteEndereco.Count; x++)
            {
                tipoEnd = cliente.clienteEndereco[x].endereco.Tipo_endereco;

                for (int y = x + 1; y < cliente.clienteEndereco.Count; y++)
                {
                    if (tipoEnd == cliente.clienteEndereco[y].endereco.Tipo_endereco)
                    {
                        throw new Exception("Não é possível cadastrar dois endereços do mesmo tipo para o mesmo cliente");
                    }
                }
            }

            return(await _repo.AddAsync(cliente));
        }
        public async Task TestSaveClient()
        {
            var context = ContextProvider <Cliente> .GetContext(null);

            var clienteRepository = new ClienteRepository(context);
            await clienteRepository.AddAsync(SetupTests.GetCliente(1));

            await context.SaveChangesAsync();
        }
        public async Task GetCliente()
        {
            var cliente = SetupTests.GetCliente(2);
            var context = ContextProvider <Cliente> .GetContext(null);

            var clienteRepository = new ClienteRepository(context);
            await clienteRepository.AddAsync(cliente);

            var result = await clienteRepository.GetByIdAsync(cliente.Id);

            Assert.True(cliente.Equals(result));
        }
        public async Task <IActionResult> Create(Cliente cliente)
        {
            if (!ModelState.IsValid)
            {
                return(View(cliente));
            }

            await VerificarEndereco(cliente);

            await _clienteServico.AddAsync(cliente);

            TempData["Concluido"] = "Cliente Cadastrado!";
            return(RedirectToAction(nameof(Index)));
        }