public BaseResponse <string> sendCorreoRecuperarPasswordAdmin(string email) { BaseResponse <string> result = new BaseResponse <string>(); using (MesaDineroContext context = new MesaDineroContext()) { using (var transaction = context.Database.BeginTransaction()) { try { Guid SecredId = Guid.NewGuid(); DateTime ahora = DateTime.Now; Tb_MD_Mae_Usuarios usuario = null; usuario = context.Tb_MD_Mae_Usuarios.FirstOrDefault(x => x.vEstadoRegistro == EstadoRegistroTabla.Activo && x.vEmailUsuario.Equals(email)); Tb_MD_Per_Natural persona = null; persona = context.Tb_MD_Per_Natural.FirstOrDefault(y => y.vNumDocumento == usuario.vNroDocumento); if (usuario == null) { throw new Exception("No se encontro un cliente de LMD con este Email"); } Tb_MD_RecuperarPassword entity = new Tb_MD_RecuperarPassword { Email = usuario.vEmailUsuario, FechaCreacion = ahora, FechaExpiracion = ahora.AddDays(1), IdUsuario = usuario.iIdUsuario, SecredId = SecredId, TipoUsuario = "CL" }; context.Tb_MD_RecuperarPassword.Add(entity); context.SaveChanges(); transaction.Commit(); result.success = true; CorreoHelper.SedCorreoRecuperarContrasenhaAdmin(usuario.vEmailUsuario, SecredId.ToString(), persona.vNombre + " " + persona.vApellido + " " + persona.vApellidoMat); } catch (Exception ex) { result.success = false; result.error = ex.InnerException != null ? ex.InnerException.Message : ex.Message; transaction.Rollback(); } } } return(result); }
public ActionResult DetalleCorreo(String idSugerencia) { CorreoHelper correoHelper = new CorreoHelper(); try { /*tb_sugerencia sugerencia = db.tb_sugerencia.Find(11); * segurenciaHelper.idSugerencia = sugerencia.id; * segurenciaHelper.detalleSugerencia = sugerencia.descripcion; * segurenciaHelper.fechaIngreso = sugerencia.fechaIngreso.ToString();*/ return(PartialView("_Correo", correoHelper)); } catch (Exception ex) { return(Json(new { status = false, message = ex.Message.ToString() }, JsonRequestBehavior.AllowGet)); } }
public async Task <WrapperSimpleTypesDTO> CrearGrupo(Grupos grupoParaCrear, string urlLogo, string urlBanner) { using (SportsGoEntities context = new SportsGoEntities(false)) { PlanesRepository planRepo = new PlanesRepository(context); int?codigoPlanDefault = await planRepo.BuscarCodigoPlanDefault(TipoPerfil.Representante); if (!codigoPlanDefault.HasValue) { throw new InvalidOperationException("No existe un plan default para los grupo!."); } PlanesUsuarios planUsuarioDefault = new PlanesUsuarios { CodigoPlan = codigoPlanDefault.Value, Adquisicion = DateTime.Now, Vencimiento = DateTime.MaxValue }; grupoParaCrear.Personas.Usuarios.CuentaActiva = 0; grupoParaCrear.Personas.Usuarios.PlanesUsuarios = planUsuarioDefault; grupoParaCrear.Personas.Usuarios.TipoPerfil = grupoParaCrear.Personas.TipoPerfil; grupoParaCrear.Personas.Candidatos = null; grupoParaCrear.Personas.Paises = null; grupoParaCrear.Personas.Idiomas = null; grupoParaCrear.Personas.Anunciantes = null; grupoParaCrear.Personas.Grupos = null; grupoParaCrear.Personas.Representantes = null; grupoParaCrear.Personas.Usuarios.Personas = null; grupoParaCrear.Personas.Paises = null; grupoParaCrear.Personas.Idiomas = null; foreach (var categoriaGrupo in grupoParaCrear.CategoriasGrupos) { categoriaGrupo.Categorias = null; } GruposRepository grupoRepository = new GruposRepository(context); grupoRepository.CrearGrupo(grupoParaCrear); WrapperSimpleTypesDTO wrapperCrearGrupo = new WrapperSimpleTypesDTO(); wrapperCrearGrupo.NumeroRegistrosAfectados = await context.SaveChangesAsync(); if (wrapperCrearGrupo.NumeroRegistrosAfectados > 0) { wrapperCrearGrupo.Exitoso = true; wrapperCrearGrupo.ConsecutivoCreado = grupoParaCrear.Consecutivo; wrapperCrearGrupo.ConsecutivoPersonaCreado = grupoParaCrear.Personas.Consecutivo; wrapperCrearGrupo.ConsecutivoUsuarioCreado = grupoParaCrear.Personas.Usuarios.Consecutivo; AuthenticateRepository authenticateRepo = new AuthenticateRepository(context); string formatoEmail = await authenticateRepo.BuscarFormatoCorreoPorCodigoIdioma(grupoParaCrear.Personas.CodigoIdioma, TipoFormatosEnum.ConfirmacionCuenta); if (!string.IsNullOrWhiteSpace(formatoEmail)) { formatoEmail = formatoEmail.Replace(AppConstants.PlaceHolderNombre, grupoParaCrear.Personas.Nombres); formatoEmail = formatoEmail.Replace(AppConstants.PlaceHolderImagenLogo, urlLogo); formatoEmail = formatoEmail.Replace(AppConstants.PlaceHolderImagenBanner, urlBanner); formatoEmail = formatoEmail.Replace(AppConstants.PlaceHolderUrlWeb, URL.UrlWeb); string urlConfirmacionFormated = string.Format(URL.UrlWeb + @"Authenticate/ConfirmationOfRegistration?ID={0}&Language={1}", grupoParaCrear.Personas.Usuarios.Consecutivo, grupoParaCrear.Personas.CodigoIdioma); formatoEmail = formatoEmail.Replace(AppConstants.PlaceHolderUrlPaginaConfirmacion, urlConfirmacionFormated); string tema = string.Empty; switch (grupoParaCrear.Personas.IdiomaDeLaPersona) { case Idioma.Español: tema = "Confirmacion de registro"; break; case Idioma.Ingles: tema = "Confirmation of registration"; break; case Idioma.Portugues: tema = "Confirmação da inscrição"; break; } // Recordar configurar la cuenta Gmail en este caso para que permita el logeo de manera insegura y poder mandar correos // https://myaccount.google.com/lesssecureapps?pli=1 CorreoHelper correoHelper = new CorreoHelper(grupoParaCrear.Personas.Usuarios.Email.Trim(), AppConstants.CorreoAplicacion, AppConstants.ClaveCorreoAplicacion); wrapperCrearGrupo.Exitoso = correoHelper.EnviarCorreoConHTML(formatoEmail, Correo.Gmail, tema, "SportsGo"); } else { throw new InvalidOperationException("No hay formatos parametrizados para la confirmacion de la clave"); } } return(wrapperCrearGrupo); } }
public async Task <WrapperSimpleTypesDTO> RecuperarClave(Usuarios usuarioParaRecuperar, string urlLogo, string urlBanner) { using (SportsGoEntities context = new SportsGoEntities(false)) { AuthenticateRepository authenticateRepo = new AuthenticateRepository(context); string nuevaClave = string.Empty; bool exitoso = false; UsuariosDTO usuarioExistente = await authenticateRepo.VerificarSiUsuarioExisteYPertenecesAlEmail(usuarioParaRecuperar); if (usuarioExistente != null) { string formatoEmail = await authenticateRepo.BuscarFormatoCorreoPorCodigoIdioma(usuarioExistente.PersonaDelUsuario.CodigoIdioma, TipoFormatosEnum.RecuperacionClave); if (!string.IsNullOrWhiteSpace(formatoEmail)) { nuevaClave = Membership.GeneratePassword(10, 2); Usuarios usuarioModificado = await authenticateRepo.ModificarClave(usuarioExistente.Consecutivo, nuevaClave); usuarioModificado.CuentaActiva = (int)SiNoEnum.Si; formatoEmail = formatoEmail.Replace(AppConstants.PlaceHolderNombre, usuarioExistente.PersonaDelUsuario.NombreYApellido); formatoEmail = formatoEmail.Replace(AppConstants.PlaceHolderUsuario, usuarioExistente.Usuario); formatoEmail = formatoEmail.Replace(AppConstants.PlaceHolderClave, nuevaClave); formatoEmail = formatoEmail.Replace(AppConstants.PlaceHolderImagenLogo, urlLogo); formatoEmail = formatoEmail.Replace(AppConstants.PlaceHolderImagenBanner, urlBanner); formatoEmail = formatoEmail.Replace(AppConstants.PlaceHolderUrlWeb, URL.UrlWeb); string tema = string.Empty; switch (usuarioExistente.PersonaDelUsuario.IdiomaDeLaPersona) { case Idioma.Español: tema = "Recuperacion Contraseña"; break; case Idioma.Ingles: tema = "Password Recovery"; break; case Idioma.Portugues: tema = "Recuperação de Senha"; break; } // Recordar configurar la cuenta Gmail en este caso para que permita el logeo de manera insegura y poder mandar correos // https://myaccount.google.com/lesssecureapps?pli=1 CorreoHelper correoHelper = new CorreoHelper(usuarioExistente.Email.Trim(), AppConstants.CorreoAplicacion, AppConstants.ClaveCorreoAplicacion); exitoso = correoHelper.EnviarCorreoConHTML(formatoEmail, Correo.Gmail, tema, "SportsGo"); } else { throw new InvalidOperationException("No hay formatos parametrizados para recuperar la clave"); } } WrapperSimpleTypesDTO wrapperRecuperarClave = new WrapperSimpleTypesDTO(); if (exitoso) { wrapperRecuperarClave.NumeroRegistrosAfectados = await context.SaveChangesAsync(); } if (wrapperRecuperarClave.NumeroRegistrosAfectados > 0 && exitoso) { wrapperRecuperarClave.ClaveCreada = nuevaClave; wrapperRecuperarClave.Exitoso = true; } return(wrapperRecuperarClave); } }
public BaseResponse <string> actualizarEstadoVerificado(List <SubastaRequest> model, string nombreusuario) { BaseResponse <string> result = new BaseResponse <string>(); using (MesaDineroContext context = new MesaDineroContext()) { using (var transaccion = context.Database.BeginTransaction()) { try { if (model.Count == 0) { throw new Exception("Seleccione una Transaccion"); } //string [] codigoTransaccion=model.idTransaccion.Split(','); for (int i = 0; i < model.Count; i++) { Tb_MD_Subasta entidad = context.Tb_MD_Subasta.Find(Convert.ToInt16(model[i].idTransaccion)); Tb_MD_ClientesDatosBancos banco = context.Tb_MD_ClientesDatosBancos.Find(entidad.cuentaBancoDestino); Tb_MD_ClientesDatosBancos bancoOrigen = context.Tb_MD_ClientesDatosBancos.Find(entidad.cuentaBancoOrigen); //Tb_MD_Pre_Clientes cliente = context.Tb_MD_Pre_Clientes.Find(entidad.IdCliente); if (entidad == null) { throw new Exception("Codigo no exite"); } entidad.vNumInsPago = model[i].idPago; entidad.vEstadoSubasta = model[i].estado; context.SaveChanges(); /*Insertar a la tabla pagos*/ if (model[i].tipoValidacion != null && model[i].tipoValidacion != "") { int idSubasta = entidad.nNumeroSubasta; DateTime fechaInformePago = DateTime.Now; if (model[i].tipoValidacion.Trim() == "VO") { /*ACTUALIZAR AHORA*/ Tb_MD_Notificacion limpNot = new Tb_MD_Notificacion(); string nrsubasta = entidad.nNumeroSubasta.ToString(); limpNot = context.Tb_MD_Notificacion.Where(x => x.vNumeroSubasta == nrsubasta && x.vEstadoSubasta == EstadoSubasta.PagadaXCliente).FirstOrDefault(); string estadoOperador = ""; if (model[i].estado.Trim() == "G") { estadoOperador = "A"; if (limpNot != null) { limpNot.Titulo = "Operación Verificada"; } } else { estadoOperador = "O"; if (limpNot != null) { limpNot.Titulo = "Operación Observada"; } } /*ACTUALIZAR AHORA*/ Tb_MD_Subasta_Pago subasta_pago_val = context.Tb_MD_Subasta_Pago.Find(idSubasta); if (subasta_pago_val == null) { Tb_MD_Subasta_Pago subasta_pago = new Tb_MD_Subasta_Pago(); subasta_pago.nNumeroSubasta = idSubasta; subasta_pago.vCodBancoCliente = bancoOrigen.vBanco; subasta_pago.vNumeroCuenta = bancoOrigen.vNroCuenta; subasta_pago.dFechaInformePago = DateTime.Now; subasta_pago.vNumOperacionPago = entidad.NroOperacionPago; subasta_pago.vTipoMonedaTransferida = entidad.vMonedaEnviaCliente; subasta_pago.nMontoTransferido = entidad.nMontoEnviaCliente; //subasta_pago.vTipoPersona = cliente.vTipoCliente.ToString(); //subasta_pago.vCodBancoFideicomiso = ""; //subasta_pago.vNumeroCuentaFideicomiso = ""; //subasta_pago.vNroDocumento = cliente.vNroDocumento; subasta_pago.iEstadoRegistro = EstadoRegistroTabla.Activo; context.Tb_MD_Subasta_Pago.Add(subasta_pago); } Tb_MD_Subasta_Pago subasta_pago_find = context.Tb_MD_Subasta_Pago.Find(idSubasta); if (subasta_pago_find != null) { subasta_pago_find.dFechaValidacionOperaciones = fechaInformePago; subasta_pago_find.vNumDocValidaDepositoOperaciones = nombreusuario; subasta_pago_find.vEstadoValOperador = estadoOperador; context.SaveChanges(); } } //if (model[i].tipoValidacion.Trim() == "VF") //{ // string estadoOperador = ""; // if (model[i].estado.Trim() == "G") // { // estadoOperador = "A"; // } // else // { // estadoOperador = "O"; // } // Tb_MD_Subasta_Pago subasta_pago_find = context.Tb_MD_Subasta_Pago.Find(idSubasta); // if (subasta_pago_find != null) // { // subasta_pago_find.dFechaValidacionFideicomiso = fechaInformePago; // subasta_pago_find.vNumDocValidaDepositoFideicomiso = nombreusuario; // subasta_pago_find.vEstadoValFideicomiso = estadoOperador; // context.SaveChanges(); // } //} if (model[i].tipoValidacion.Trim() == "EC") { Tb_MD_Subasta_Pago subasta_pago_find = context.Tb_MD_Subasta_Pago.Find(idSubasta); if (subasta_pago_find != null) { subasta_pago_find.dFechaEnvioCorfid = DateTime.Now; context.SaveChanges(); } } if (model[i].tipoValidacion.Trim() == "AP") { Tb_MD_Subasta_Pago subasta_pago_find = context.Tb_MD_Subasta_Pago.Find(idSubasta); if (subasta_pago_find != null) { subasta_pago_find.dFechaInformeContravalor = DateTime.Now; subasta_pago_find.vNumOpeBancoACliente = model[i].idPago; subasta_pago_find.vObservacion = model[i].observacion; subasta_pago_find.vCodBancoDestinoCliente = banco.vBanco; subasta_pago_find.nMontoTransferidoACliente = entidad.nMontiRecibeCliente; subasta_pago_find.vTipoMonedaDestinoCliente = entidad.vMonedaRecibeCliente; subasta_pago_find.vNumeroCuentaDestinoCliente = banco.vNroCuenta; context.SaveChanges(); /*Enviar Correo*/ Tb_MD_Clientes cliente = context.Tb_MD_Clientes.Where(x => x.iIdCliente == entidad.IdCliente).FirstOrDefault(); if (cliente != null) { string nombre = cliente.vNombre + " " + cliente.vApellido; string correo = cliente.vEmail; string monto = String.Format("{0:###,###,###,##0.00##}", entidad.nMontiRecibeCliente); string moneda = entidad.vMonedaRecibeCliente.ToString().ToUpper(); CorreoHelper.SendCorreoPagoCliente(correo, nombre, monto, moneda, entidad.SecredId.ToString()); //if (respuesta == true) { //} Tb_MD_Notificacion limpNot = new Tb_MD_Notificacion(); string nrsubasta = entidad.nNumeroSubasta.ToString(); limpNot = context.Tb_MD_Notificacion.Where(x => x.vNumeroSubasta == nrsubasta && x.vEstadoSubasta == EstadoSubasta.PagadaXCliente).FirstOrDefault(); if (limpNot != null) { limpNot.iEstadoRegistro = EstadoRegistroTabla.NoActivo; } Tb_MD_Notificacion notificacion = new Tb_MD_Notificacion(); notificacion.IdUsuario = ""; notificacion.IdCliente = cliente.iIdCliente; notificacion.Titulo = "Envio de Pago"; notificacion.Mensaje = "Tu número de transaccion es: " + String.Format("{0:000000000}", entidad.nNumeroSubasta) + ". Se le deposito el tipo de cambio solicitado."; notificacion.Tipo = 0; notificacion.vNumeroSubasta = entidad.nNumeroSubasta.ToString(); notificacion.vEstadoSubasta = EstadoSubasta.PagadaALCliente; notificacion.Url = "/Subasta/recibes/" + entidad.SecredId; notificacion.Fecha = DateTime.Now.AddDays(1); notificacion.iEstadoRegistro = EstadoRegistroTabla.Activo; context.Tb_MD_Notificacion.Add(notificacion); context.SaveChanges(); } else { throw new Exception("No se encontro Datos del Cliente"); } } } } } //Tb_MD_Subasta_Pago transaccion.Commit(); result.success = true; } catch (System.Data.Entity.Validation.DbEntityValidationException ex) { #region Error EntityFramework var errorMessages = ex.EntityValidationErrors .SelectMany(x => x.ValidationErrors) .Select(x => x.ErrorMessage); var fullErrorMessage = string.Join("; ", errorMessages); result.success = false; result.error = fullErrorMessage; transaccion.Rollback(); #endregion } catch (Exception ex) { result.success = false; result.error = ex.InnerException != null ? ex.InnerException.Message : ex.Message; } } } return(result); }
public async Task <WrapperSimpleTypesDTO> CrearCandidato(Candidatos candidatoParaCrear, string urlLogo, string urlBanner) { using (SportsGoEntities context = new SportsGoEntities(false)) { PlanesRepository planRepo = new PlanesRepository(context); int?codigoPlanDefault = await planRepo.BuscarCodigoPlanDefault(TipoPerfil.Candidato); if (!codigoPlanDefault.HasValue) { throw new InvalidOperationException("No existe un plan default para los candidatos!."); } PlanesUsuarios planUsuarioDefault = new PlanesUsuarios { CodigoPlan = codigoPlanDefault.Value, Adquisicion = DateTime.Now, Vencimiento = DateTime.MaxValue }; candidatoParaCrear.Personas.Usuarios.CuentaActiva = 0; candidatoParaCrear.Personas.Usuarios.PlanesUsuarios = planUsuarioDefault; candidatoParaCrear.Personas.Usuarios.TipoPerfil = candidatoParaCrear.Personas.TipoPerfil; bool soyMenorDeEdad = DateTimeHelper.DiferenciaEntreDosFechasAños(DateTime.Now, candidatoParaCrear.FechaNacimiento) < AppConstants.MayoriaEdad; // Si soy menor de edad y no tengo tutor o el tutor no tiene email, explota if (soyMenorDeEdad && (candidatoParaCrear.CandidatosResponsables == null || string.IsNullOrWhiteSpace(candidatoParaCrear.CandidatosResponsables.Email))) { throw new InvalidOperationException("Falta informacion para el tutor, esta persona es menor de edad!."); } // Si no requiero tutor no lo guardo if (soyMenorDeEdad) { candidatoParaCrear.CandidatosResponsables.Candidatos = null; } else { candidatoParaCrear.CandidatosResponsables = null; } candidatoParaCrear.Personas.Candidatos = null; candidatoParaCrear.Personas.Paises = null; candidatoParaCrear.Personas.Idiomas = null; candidatoParaCrear.Generos = null; candidatoParaCrear.Personas.Anunciantes = null; candidatoParaCrear.Personas.Grupos = null; candidatoParaCrear.Personas.Representantes = null; candidatoParaCrear.Personas.Usuarios.Personas = null; foreach (var categoriaCandidato in candidatoParaCrear.CategoriasCandidatos) { categoriaCandidato.Categorias = null; categoriaCandidato.Candidatos = null; foreach (var habilidadCandidato in categoriaCandidato.HabilidadesCandidatos) { habilidadCandidato.Habilidades = null; } } CandidatosRepository candidatosRepo = new CandidatosRepository(context); candidatosRepo.CrearCandidato(candidatoParaCrear); WrapperSimpleTypesDTO wrapperCrearCandidato = new WrapperSimpleTypesDTO(); wrapperCrearCandidato.NumeroRegistrosAfectados = await context.SaveChangesAsync(); if (wrapperCrearCandidato.NumeroRegistrosAfectados > 0) { wrapperCrearCandidato.ConsecutivoCreado = candidatoParaCrear.Consecutivo; wrapperCrearCandidato.ConsecutivoPersonaCreado = candidatoParaCrear.Personas.Consecutivo; wrapperCrearCandidato.ConsecutivoUsuarioCreado = candidatoParaCrear.Personas.Usuarios.Consecutivo; AuthenticateRepository authenticateRepo = new AuthenticateRepository(context); string formatoEmail = await authenticateRepo.BuscarFormatoCorreoPorCodigoIdioma(candidatoParaCrear.Personas.CodigoIdioma, TipoFormatosEnum.ConfirmacionCuenta); if (!string.IsNullOrWhiteSpace(formatoEmail)) { formatoEmail = formatoEmail.Replace(AppConstants.PlaceHolderNombre, candidatoParaCrear.Personas.Nombres); formatoEmail = formatoEmail.Replace(AppConstants.PlaceHolderImagenLogo, urlLogo); formatoEmail = formatoEmail.Replace(AppConstants.PlaceHolderImagenBanner, urlBanner); formatoEmail = formatoEmail.Replace(AppConstants.PlaceHolderUrlWeb, URL.UrlWeb); string urlConfirmacionFormated = string.Format(URL.UrlWeb + @"Authenticate/ConfirmationOfRegistration?ID={0}&Language={1}", candidatoParaCrear.Personas.Usuarios.Consecutivo, candidatoParaCrear.Personas.CodigoIdioma); formatoEmail = formatoEmail.Replace(AppConstants.PlaceHolderUrlPaginaConfirmacion, urlConfirmacionFormated); string tema = string.Empty; switch (candidatoParaCrear.Personas.IdiomaDeLaPersona) { case Idioma.Español: tema = "Confirmacion de registro"; break; case Idioma.Ingles: tema = "Confirmation of registration"; break; case Idioma.Portugues: tema = "Confirmação da inscrição"; break; } string emailParaEnviarConfirmacion = string.Empty; // Si soy menor de edad el correo de confirmacion va hacia el tutor, si no va normal como siempre if (soyMenorDeEdad) { emailParaEnviarConfirmacion = candidatoParaCrear.CandidatosResponsables.Email.Trim(); } else { emailParaEnviarConfirmacion = candidatoParaCrear.Personas.Usuarios.Email.Trim(); } // Recordar configurar la cuenta Gmail en este caso para que permita el logeo de manera insegura y poder mandar correos // https://myaccount.google.com/lesssecureapps?pli=1 CorreoHelper correoHelper = new CorreoHelper(emailParaEnviarConfirmacion, AppConstants.CorreoAplicacion, AppConstants.ClaveCorreoAplicacion); wrapperCrearCandidato.Exitoso = correoHelper.EnviarCorreoConHTML(formatoEmail, Correo.Gmail, tema, "SportsGo"); } else { throw new InvalidOperationException("No hay formatos parametrizados para la confirmacion de la clave"); } } return(wrapperCrearCandidato); } }
public async Task <BaseResponse <string> > insertUsuario(UsuarioRequest model, string usuarioDoc) { BaseResponse <string> result = new BaseResponse <string>(); using (MesaDineroContext context = new MesaDineroContext()) { using (var transaccion = context.Database.BeginTransaction()) { try { Tb_MD_Mae_Usuarios usuariovalida = context.Tb_MD_Mae_Usuarios.Where(x => x.vEmailUsuario == model.email && x.vRucEmpresa == model.rucEmpresa).FirstOrDefault(); if (usuariovalida != null) { throw new Exception("Ya existe un usuario con el mismo correo en esa empresa"); } Tb_MD_Per_Natural persona = null; persona = context.Tb_MD_Per_Natural.FirstOrDefault(x => x.vNumDocumento.Equals(model.nroDocumento)); { if (persona == null) { persona = new Tb_MD_Per_Natural(); persona.dFechaCreacion = DateTime.Now; persona.vTipoDocumento = model.tipoDocumento; persona.vNumDocumento = model.nroDocumento; persona.vNombre = model.nombre; persona.vApellido = model.apellidoPat; persona.vApellidoMat = model.apellidoMat; persona.vPreCelular = model.prefijo; persona.vTelefonoMovil = model.celular; persona.vMailContacto = model.email; persona.vEstadoRegistro = EstadoRegistroTabla.Activo; persona.vFlgExpuestoPoliticamente = "N"; context.Tb_MD_Per_Natural.Add(persona); } } Tb_MD_Mae_Usuarios usuario = new Tb_MD_Mae_Usuarios(); usuario.vEmailUsuario = model.email; usuario.vTipoUsuario = model.tipoUsuario; usuario.dFechaCreacion = DateTime.Now; usuario.vUsuarioCreacion = usuarioDoc; usuario.SecretId = Guid.NewGuid(); usuario.vRucEmpresa = model.rucEmpresa; usuario.vNroDocumento = model.nroDocumento; usuario.vEstadoRegistro = EstadoRegistroTabla.NoActivo; context.Tb_MD_Mae_Usuarios.Add(usuario); string cliente = model.nombre + " " + model.apellidoPat + " " + model.apellidoMat; bool resul = await CorreoHelper.SendCorreoRegistroAdmExitoso(usuario.vEmailUsuario, usuario.SecretId.ToString(), cliente); if (resul == false) { throw new Exception("No se pudo enviar Correo, Revise su conexion"); } context.SaveChanges(); transaccion.Commit(); result.success = true; } catch (System.Data.Entity.Validation.DbEntityValidationException ex) { #region Error EntityFramework var errorMessages = ex.EntityValidationErrors .SelectMany(x => x.ValidationErrors) .Select(x => x.ErrorMessage); var fullErrorMessage = string.Join("; ", errorMessages); result.success = false; result.error = fullErrorMessage; transaccion.Rollback(); #endregion } catch (Exception ex) { result.success = false; transaccion.Rollback(); result.error = ex.InnerException != null ? ex.InnerException.Message : ex.Message; } } } return(result); }