public BaseReturn CadastrarUsuario(string nome, DateTime?datanascimento, string email, string cpf, Sexo sexo, string telefone, string celular
                                           , string rua, string bairro, string cep, string cidade, int numero, string uf, string complemento
                                           , int codigotipousuario, int codigodepartamento)
        {
            if (PesquisarUsuario().Where(y => y.CPF == cpf).FirstOrDefault() != null)
            {
                return(new BaseReturn("Usuario", Library.Class.Resources.Message.JA_EXISTE_UM_X0_COM_O_X1_X2.ToFormat("Usuario", "CPF: ", cpf), false));
            }

            Usuarios DadosUsuarios = new Usuarios(nome, datanascimento, email, cpf, sexo, telefone, celular);

            if (DadosUsuarios.IsInvalid())
            {
                return(new BaseReturn(DadosUsuarios.Notifications.FirstOrDefault().Property, DadosUsuarios.Notifications.FirstOrDefault().Message, false));
            }

            // Cadastro de endereço
            Enderecos DadosEndereco = new Enderecos(rua, bairro, cep, cidade, numero, uf, complemento);

            if (DadosEndereco.IsInvalid())
            {
                return(new BaseReturn(DadosEndereco.Notifications.FirstOrDefault().Property, DadosEndereco.Notifications.FirstOrDefault().Message, false));
            }

            DadosEndereco.Usuario.Add(DadosUsuarios);

            //Não salvar, somente adicionar
            _RepositoryEndereco.AddNotSave(DadosEndereco);

            //// Tipo de Usuarios
            TipoUsuarios TipoUsuario = _RepositoryTipoUsuario.Find(codigotipousuario);

            //cadastro tipo de usuario
            TipoUsuario.Usuario.Add(DadosUsuarios);
            //Adicionar
            _RepositoryTipoUsuario.Edit(TipoUsuario);

            //Library.Class.Utils.ExtensionEmail.EnviarEmail("Caro "+ DadosUsuarios.Nome.ToString() + " \n \n Obrigado por entrar em contato. \n Usuario cadastrado.", DadosUsuarios.Email);

            return(AlterarUsuario(DadosUsuarios.CodigoUsuario, nome, datanascimento, email, cpf, sexo, telefone, celular, rua, bairro, cep, cidade, numero, uf, complemento, codigotipousuario, codigodepartamento));
        }