public async System.Threading.Tasks.Task <ActionResult> NovaPessoa([Bind(Include = "PrimeiroNome, Sobrenome, CPF, RG, Sexo, DtNascimento, TelPrincipal, TelOpcional, Email, CEP, Logradouro, Complemento, Numero, Bairro, Cidade, Estado, Pais, PerfilID")] RegistrarComumViewModel novaPessoa) { if (ModelState.IsValid) { //Criando pessoa int pID = _userStore.AddPessoa(novaPessoa); //Criando usuario RBAC_Usuario RU = new RBAC_Usuario(); RU.Pessoa_ID = pID; RU.Username = novaPessoa.Email; //Gernado Senha tempraria e salt string tempToken = SecurityMethods.GenerateTempTokenAccess(); string tempSalt = SecurityMethods.GenerateSalt(); string tempPass = SecurityMethods.HashPasswordPBKDF2(tempToken, tempSalt); //Criando usuario RU.Senha_Hash = tempPass; RU.Salt = tempSalt; RU.Dt_Criacao = DateTime.Now.Date; RU.Dt_Ultima_Modif = DateTime.Now.Date; RU.Bloqueado = false; db.RBAC_Usuario.Add(RU); db.SaveChanges(); //Enviando Email da senha EmailMessage message = new EmailMessage(novaPessoa.Email, "Bem-vindo ao NimbusAcad!", "Olá, seja bem-vindo ao NimbusAcad \n Esta é sua senha: " + tempToken + "\nRecomenda-se que altere a senha para uma, com fácil memorização."); await _emailService.Send(message); //Enviando Email de confirmação de email var callbackUrl = Url.Action("ConfirmarEmail", "Account", new { novaPessoa.Email }, null); EmailMessage confirmacao = new EmailMessage(novaPessoa.Email, "Confirmar email", "Por favor, confirme seu email clicando neste link: <a href=\"" + callbackUrl + "\">Confirmar</a>"); await _emailService.Send(confirmacao); //Assimilando perfil de acesso int uID = _userStore.GetUsuarioID(novaPessoa.Email); //VinculoPerfilUsuarioViewModel VPUVM = new VinculoPerfilUsuarioViewModel(); //VPUVM.UsuarioID = uID; //VPUVM.PerfilID = novaPessoa.PerfilID; RBAC_Link_Usuario_Perfil linkUP = new RBAC_Link_Usuario_Perfil(); linkUP.Usuario_ID = uID; linkUP.Perfil_ID = novaPessoa.PerfilID; _roleStore.AddUsuarioPerfil(linkUP); return(RedirectToAction("RegistrarDocumento", "Funcionario", new { id = pID })); } PopulatePerfilDropDownList(novaPessoa.PerfilID); return(View(novaPessoa)); }
//Add usuario será feito no AccountController, para enviar o email com a senha temporaria. public int AddPessoa(RegistrarComumViewModel pessoa) { using (NimbusAcad_DB_Entities db = new NimbusAcad_DB_Entities()) { Negocio_Pessoa NP = new Negocio_Pessoa(); Negocio_Endereco NE = new Negocio_Endereco(); Negocio_Base_Endereco NBE = new Negocio_Base_Endereco(); NP.Primeiro_Nome = pessoa.PrimeiroNome; NP.Sobrenome = pessoa.Sobrenome; NP.CPF = pessoa.CPF; NP.RG = pessoa.RG; NP.Sexo = pessoa.Sexo; NP.Dt_Nascimento = pessoa.DtNascimento; NP.Tel_Principal = pessoa.TelPrincipal; NP.Tel_Opcional = pessoa.TelOpcional; NP.Email = pessoa.Email; NP.Email_Confirmado = false; NP.Tot_Notif_NL = 0; db.Negocio_Pessoa.Add(NP); db.SaveChanges(); //Endereço --> Verificar se já existe endereço no CEP informado var endereco = db.Negocio_Base_Endereco.Where(o => o.CEP.Equals(pessoa.CEP)).FirstOrDefault(); if (endereco == null) { //Negocio_Base_Endereco NBE.CEP = pessoa.CEP; NBE.Logradouro = pessoa.Logradouro; NBE.Bairro = pessoa.Bairro; NBE.Cidade = pessoa.Cidade; NBE.Estado = pessoa.Estado; NBE.Pais = pessoa.Pais; db.Negocio_Base_Endereco.Add(NBE); db.SaveChanges(); //Negocio_Endereco int pessoaID = GetPessoaIDporEmail(pessoa.Email); if (pessoaID != 0) { NE.CEP = pessoa.CEP; NE.Complemento = pessoa.Complemento; NE.Numero = pessoa.Numero; NE.Ativo = true; NE.Pessoa_ID = pessoaID; db.Negocio_Endereco.Add(NE); db.SaveChanges(); } } else { int pessoaID = GetPessoaIDporEmail(pessoa.Email); if (pessoaID != 0) { NE.CEP = pessoa.CEP; NE.Complemento = pessoa.Complemento; NE.Numero = pessoa.Numero; NE.Ativo = true; NE.Pessoa_ID = pessoaID; db.Negocio_Endereco.Add(NE); db.SaveChanges(); } } return(GetPessoaIDporEmail(pessoa.Email)); } }