/// <summary>
        /// Método para retornar 1 cliente baseado no email e senha
        /// </summary>
        /// <param name="email">Email do Cliente</param>
        /// <param name="senha">Senha do Cliente</param>
        /// <returns>Dados do Cliente obtido ou null se nenhum cliente for encontrado</returns>
        public Cliente ObterCliente(string email, string senha)
        {
            senha = MD5Encrypt.GetHash(senha);

            return(unitOfWork.ClienteRepository
                   .GetByEmailSenha(email, senha));
        }
        /// <summary>
        /// Método para cadastro de cliente no ECommerce
        /// </summary>
        /// <param name="cliente">Entidade Cliente</param>
        /// <param name="enderecos">Lista de Endereços do Cliente</param>
        public void CadastrarCliente(Cliente cliente, List <Endereco> enderecos)
        {
            #region Verificar se o email do cliente ja está cadastrado

            if (unitOfWork.ClienteRepository.GetByEmail(cliente.Email) != null)
            {
                throw new EmailDeveSerUnicoException(cliente.Email);
            }

            #endregion

            #region Criptografar a senha do cliente

            cliente.Senha = MD5Encrypt.GetHash(cliente.Senha);

            #endregion

            #region Transação para cadastro do cliente

            try
            {
                unitOfWork.BeginTransaction();

                unitOfWork.ClienteRepository.Insert(cliente);

                foreach (var item in enderecos)
                {
                    item.IdCliente = cliente.IdCliente;
                    unitOfWork.EnderecoRepository.Insert(item);
                }

                unitOfWork.Commit();
            }
            catch (Exception e)
            {
                unitOfWork.Rollback();
                throw new Exception(e.Message);
            }

            #endregion
        }