public async Task <WrapperSimpleTypesDTO> CrearAnunciante(Anunciantes anuncianteParaCrear, string urlLogo, string urlBanner) { using (SportsGoEntities context = new SportsGoEntities(false)) { PlanesRepository planRepo = new PlanesRepository(context); int?codigoPlanDefault = await planRepo.BuscarCodigoPlanDefault(TipoPerfil.Anunciante); if (!codigoPlanDefault.HasValue) { throw new InvalidOperationException("No existe un plan default para los anunciantes!."); } PlanesUsuarios planUsuarioDefault = new PlanesUsuarios { CodigoPlan = codigoPlanDefault.Value, Adquisicion = DateTime.Now, Vencimiento = DateTime.MaxValue }; anuncianteParaCrear.Personas.Anunciantes = null; anuncianteParaCrear.Personas.Usuarios.Personas = null; anuncianteParaCrear.Personas.Usuarios.CuentaActiva = 0; anuncianteParaCrear.Personas.Usuarios.PlanesUsuarios = planUsuarioDefault; anuncianteParaCrear.Personas.Usuarios.TipoPerfil = anuncianteParaCrear.Personas.TipoPerfil; anuncianteParaCrear.Personas.Candidatos = null; anuncianteParaCrear.Personas.Paises = null; anuncianteParaCrear.Personas.Idiomas = null; anuncianteParaCrear.Personas.Anunciantes = null; anuncianteParaCrear.Personas.Grupos = null; anuncianteParaCrear.Personas.Representantes = null; anuncianteParaCrear.Personas.Usuarios.Personas = null; AnunciantesRepository anuncianteRepo = new AnunciantesRepository(context); anuncianteRepo.CrearAnunciante(anuncianteParaCrear); WrapperSimpleTypesDTO wrapperCrearAnunciante = new WrapperSimpleTypesDTO(); wrapperCrearAnunciante.NumeroRegistrosAfectados = await context.SaveChangesAsync(); if (wrapperCrearAnunciante.NumeroRegistrosAfectados > 0) { wrapperCrearAnunciante.ConsecutivoCreado = anuncianteParaCrear.Consecutivo; wrapperCrearAnunciante.ConsecutivoPersonaCreado = anuncianteParaCrear.Personas.Consecutivo; wrapperCrearAnunciante.ConsecutivoUsuarioCreado = anuncianteParaCrear.Personas.Usuarios.Consecutivo; AuthenticateRepository authenticateRepo = new AuthenticateRepository(context); string formatoEmail = await authenticateRepo.BuscarFormatoCorreoPorCodigoIdioma(anuncianteParaCrear.Personas.CodigoIdioma, TipoFormatosEnum.ConfirmacionCuenta); if (!string.IsNullOrWhiteSpace(formatoEmail)) { formatoEmail = formatoEmail.Replace(AppConstants.PlaceHolderNombre, anuncianteParaCrear.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}", anuncianteParaCrear.Personas.Usuarios.Consecutivo, anuncianteParaCrear.Personas.CodigoIdioma); formatoEmail = formatoEmail.Replace(AppConstants.PlaceHolderUrlPaginaConfirmacion, urlConfirmacionFormated); string tema = string.Empty; switch (anuncianteParaCrear.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(anuncianteParaCrear.Personas.Usuarios.Email.Trim(), AppConstants.CorreoAplicacion, AppConstants.ClaveCorreoAplicacion); wrapperCrearAnunciante.Exitoso = correoHelper.EnviarCorreoConHTML(formatoEmail, Correo.Gmail, tema, "SportsGo"); } else { throw new InvalidOperationException("No hay formatos parametrizados para la confirmacion de la clave"); } } return(wrapperCrearAnunciante); } }