Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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));
            }
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 5
0
        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);
            }
        }
Ejemplo n.º 7
0
        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);
        }