public async Task AuthenticateRepository_BuscarFormatoCorreoPorCodigoIdioma_ShouldSearch() { using (SportsGoEntities context = new SportsGoEntities(false)) { AuthenticateRepository authenticateRepo = new AuthenticateRepository(context); string formatoTexto = await authenticateRepo.BuscarFormatoCorreoPorCodigoIdioma(1, TipoFormatosEnum.ConfirmacionCuenta); Assert.IsNotNull(formatoTexto); } }
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 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); } }