public async Task <List <CandidatosVideosDTO> > ListarCandidatosVideosDeUnCandidato(CandidatosVideos candidatoVideoParaListar) { using (SportsGoEntities context = new SportsGoEntities(false)) { CandidatosRepository candidatosRepo = new CandidatosRepository(context); DateTimeHelperNoPortable helper = new DateTimeHelperNoPortable(); if (candidatoVideoParaListar.FechaFiltroBase != DateTime.MinValue) { candidatoVideoParaListar.FechaFiltroBase = helper.ConvertDateTimeFromAnotherTimeZone(candidatoVideoParaListar.ZonaHorariaGMTBase, helper.DifferenceBetweenGMTAndLocalTimeZone, candidatoVideoParaListar.FechaFiltroBase); } List <CandidatosVideosDTO> listaVideosCandidato = await candidatosRepo.ListarCandidatosVideosDeUnCandidato(candidatoVideoParaListar); if (listaVideosCandidato != null && listaVideosCandidato.Count > 0) { foreach (var videoCandidato in listaVideosCandidato) { videoCandidato.Creacion = helper.ConvertDateTimeFromAnotherTimeZone(candidatoVideoParaListar.ZonaHorariaGMTBase, helper.DifferenceBetweenGMTAndLocalTimeZone, videoCandidato.Creacion); } } return(listaVideosCandidato); } }
public async Task <WrapperSimpleTypesDTO> EliminarCandidatoVideo(CandidatosVideos candidatoVideosParaEliminar) { using (SportsGoEntities context = new SportsGoEntities(false)) { Archivos archivoParaEliminar = new Archivos { Consecutivo = candidatoVideosParaEliminar.CodigoArchivo, }; CandidatosRepository candidatosRepo = new CandidatosRepository(context); candidatosRepo.EliminarCandidatoVideo(candidatoVideosParaEliminar); ArchivosRepository archivoRepo = new ArchivosRepository(context); archivoRepo.EliminarArchivo(archivoParaEliminar); WrapperSimpleTypesDTO wrapperEliminarCandidatoVideo = new WrapperSimpleTypesDTO(); wrapperEliminarCandidatoVideo.NumeroRegistrosAfectados = await context.SaveChangesAsync(); if (wrapperEliminarCandidatoVideo.NumeroRegistrosAfectados > 0) { wrapperEliminarCandidatoVideo.Exitoso = true; } return(wrapperEliminarCandidatoVideo); } }
public async Task <WrapperSimpleTypesDTO> EliminarCandidatoResponsable(Candidatos candidatoResponsableParaBorrar) { using (SportsGoEntities context = new SportsGoEntities(false)) { CandidatosRepository candidatosRepo = new CandidatosRepository(context); Candidatos candidatoExistente = await candidatosRepo.DesasignarResponsableDeUnCandidato(candidatoResponsableParaBorrar); CandidatosResponsables responsableABorrar = new CandidatosResponsables { Consecutivo = candidatoResponsableParaBorrar.CodigoResponsable.Value }; candidatosRepo.EliminarCandidatoResponsable(responsableABorrar); WrapperSimpleTypesDTO wrapperEliminarCandidatoResponsable = new WrapperSimpleTypesDTO(); wrapperEliminarCandidatoResponsable.NumeroRegistrosAfectados = await context.SaveChangesAsync(); if (wrapperEliminarCandidatoResponsable.NumeroRegistrosAfectados > 0) { wrapperEliminarCandidatoResponsable.Exitoso = true; } return(wrapperEliminarCandidatoResponsable); } }
public async Task CandidatoRepository_ModificarCandidato_ShouldModify() { using (SportsGoEntities context = new SportsGoEntities(false)) using (DbContextTransaction dbContextTransaction = context.Database.BeginTransaction()) { CandidatosRepository candidatoRepository = new CandidatosRepository(context); Candidatos candidatoParaCrear = new Candidatos { Consecutivo = 4, CodigoPersona = 8, CodigoGenero = 1, Estatura = 180, Peso = 70, Biografia = "Yo ser Niño MVC Angular y no leer comentarios trollo yo ser", FechaNacimiento = new DateTime(1995, 11, 9), }; var hola = context.Personas.Find(8); candidatoParaCrear.Personas = hola; candidatoParaCrear.Personas.Nombres = "Sergioo"; Candidatos candidatoExistente = await candidatoRepository.ModificarInformacionCandidato(candidatoParaCrear); Assert.IsNotNull(candidatoExistente); } }
public async Task <WrapperSimpleTypesDTO> AsignarCandidatoResponsable(CandidatosResponsables candidatoResponsableParaAsignar) { using (SportsGoEntities context = new SportsGoEntities(false)) { CandidatosRepository candidatosRepo = new CandidatosRepository(context); Candidatos candidatoExistente = await candidatosRepo.BuscarCandidatoParaAsignar(candidatoResponsableParaAsignar); candidatoResponsableParaAsignar.Consecutivo = candidatoExistente.CodigoResponsable.HasValue ? candidatoExistente.CodigoResponsable.Value : 0; if (candidatoExistente.CodigoResponsable.HasValue) { CandidatosResponsables candidatoResponsableExistente = await candidatosRepo.ModificarCandidatoResponsable(candidatoResponsableParaAsignar); } else { candidatoExistente.CandidatosResponsables = candidatoResponsableParaAsignar; } WrapperSimpleTypesDTO wrapperCrearCandidatoResponsable = new WrapperSimpleTypesDTO(); wrapperCrearCandidatoResponsable.NumeroRegistrosAfectados = await context.SaveChangesAsync(); if (wrapperCrearCandidatoResponsable.NumeroRegistrosAfectados > 0) { wrapperCrearCandidatoResponsable.Exitoso = true; wrapperCrearCandidatoResponsable.ConsecutivoCreado = candidatoExistente.CodigoResponsable.Value; } return(wrapperCrearCandidatoResponsable); } }
public async Task <PersonasDTO> BuscarPersona(Personas personaParaBuscar) { using (SportsGoEntities context = new SportsGoEntities(false)) { PersonasRepository personaRepo = new PersonasRepository(context); PersonasDTO personaBuscada = await personaRepo.BuscarPersona(personaParaBuscar); if (personaBuscada.CandidatoDeLaPersona != null) { if (personaBuscada.CandidatoDeLaPersona.CodigoResponsable.HasValue) { CandidatosRepository candidatoRepo = new CandidatosRepository(context); CandidatosResponsables candidatoReponsable = new CandidatosResponsables { Consecutivo = personaBuscada.CandidatoDeLaPersona.CodigoResponsable.Value }; personaBuscada.CandidatoDeLaPersona.CandidatosResponsables = await candidatoRepo.BuscarSoloCandidatoResponsableDTO(candidatoReponsable); } } return(personaBuscada); } }
public async Task <WrapperSimpleTypesDTO> ModificarArchivoCandidatoVideos(int codigoTipoArchivo, int codigoCandidatoVideo, int codigoArchivo, Stream sourceStream) { using (SportsGoEntities context = new SportsGoEntities(false)) using (DbContextTransaction transaction = context.Database.BeginTransaction()) { ArchivosRepository archivoRepo = new ArchivosRepository(context); Archivos archivoParaCrear = new Archivos { CodigoTipoArchivo = codigoTipoArchivo, ArchivoContenido = new byte[] { 0, 1, 2 } }; archivoRepo.CrearArchivo(archivoParaCrear); WrapperSimpleTypesDTO wrapper = new WrapperSimpleTypesDTO(); wrapper.NumeroRegistrosAfectados = await context.SaveChangesAsync(); await archivoRepo.ModificarArchivoContenidoStream(archivoParaCrear.Consecutivo, sourceStream); if (wrapper.NumeroRegistrosAfectados > 0 || archivoParaCrear.Consecutivo > 0) { wrapper.Exitoso = true; wrapper.ConsecutivoCreado = archivoParaCrear.Consecutivo; wrapper.ConsecutivoArchivoCreado = archivoParaCrear.Consecutivo; CandidatosRepository candidatosRepo = new CandidatosRepository(context); // Meto el consecutivo del archivo generado por el EF por la creacion CandidatosVideos candidatoVideo = new CandidatosVideos { Consecutivo = codigoCandidatoVideo, CodigoArchivo = archivoParaCrear.Consecutivo }; CandidatosVideos candidatoVideoExistente = await candidatosRepo.ModificarCodigoArchivoCandidatoVideo(candidatoVideo); // Elimino el viejo archivo if (codigoArchivo > 0) { Archivos archivoParaBorrar = new Archivos { Consecutivo = codigoArchivo }; archivoRepo.EliminarArchivo(archivoParaBorrar); } wrapper.NumeroRegistrosAfectados += await context.SaveChangesAsync(); transaction.Commit(); } return(wrapper); } }
public async Task <CandidatosResponsables> BuscarCandidatoResponsable(CandidatosResponsables candidatoResponsableParaBuscar) { using (SportsGoEntities context = new SportsGoEntities(false)) { CandidatosRepository candidatosRepo = new CandidatosRepository(context); CandidatosResponsables candidatoResponsableBuscado = await candidatosRepo.BuscarCandidatoResponsable(candidatoResponsableParaBuscar); return(candidatoResponsableBuscado); } }
public async Task <List <CandidatosDTO> > ListarCandidatos(BuscadorDTO buscador) { using (SportsGoEntities context = new SportsGoEntities(false)) { CandidatosRepository candidatosRepo = new CandidatosRepository(context); List <CandidatosDTO> listaInformacionCandidatos = await candidatosRepo.ListarCandidatos(buscador); return(listaInformacionCandidatos); } }
public async Task <Candidatos> BuscarCandidatoPorCodigoCandidato(Candidatos candidatoParaBuscar) { using (SportsGoEntities context = new SportsGoEntities(false)) { CandidatosRepository candidatosRepo = new CandidatosRepository(context); Candidatos informacionCandidato = await candidatosRepo.BuscarCandidatoPorCodigoCandidato(candidatoParaBuscar); return(informacionCandidato); } }
public async Task <int> CalcularDuracionPermitidaVideoParaUnaPublicacionCandidato(int codigoCandidatoVideo) { using (SportsGoEntities context = new SportsGoEntities(false)) { CandidatosRepository candidatosRepo = new CandidatosRepository(context); int?duracionVideoPermitida = await candidatosRepo.ConsultarDuracionVideoParaElPlanDeEstaPublicacionCandidato(codigoCandidatoVideo); if (!duracionVideoPermitida.HasValue) { throw new InvalidOperationException("No se encontro la duracion del video permitida del candidato para esta publicacion!."); } return(duracionVideoPermitida.Value); } }
public async Task <CandidatosVideos> BuscarCandidatoVideo(CandidatosVideos candidatoVideoParaBuscar) { using (SportsGoEntities context = new SportsGoEntities(false)) { CandidatosRepository candidatosRepo = new CandidatosRepository(context); CandidatosVideos candidatoVideoBuscado = await candidatosRepo.BuscarCandidatoVideo(candidatoVideoParaBuscar); if (candidatoVideoBuscado != null) { DateTimeHelperNoPortable helper = new DateTimeHelperNoPortable(); candidatoVideoBuscado.Creacion = helper.ConvertDateTimeFromAnotherTimeZone(candidatoVideoParaBuscar.ZonaHorariaGMTBase, helper.DifferenceBetweenGMTAndLocalTimeZone, candidatoVideoBuscado.Creacion); } return(candidatoVideoBuscado); } }
public async Task <WrapperSimpleTypesDTO> ModificarCandidatoResponsable(CandidatosResponsables candidatoResponsableParaModificar) { using (SportsGoEntities context = new SportsGoEntities(false)) { CandidatosRepository candidatosRepo = new CandidatosRepository(context); CandidatosResponsables candidatoResponsableExistente = await candidatosRepo.ModificarCandidatoResponsable(candidatoResponsableParaModificar); WrapperSimpleTypesDTO wrapperModificarCandidatoResponsable = new WrapperSimpleTypesDTO(); wrapperModificarCandidatoResponsable.NumeroRegistrosAfectados = await context.SaveChangesAsync(); if (wrapperModificarCandidatoResponsable.NumeroRegistrosAfectados > 0) { wrapperModificarCandidatoResponsable.Exitoso = true; } return(wrapperModificarCandidatoResponsable); } }
public async Task CandidatoRepository_BuscarInformacionCandidato_ShouldVerify() { using (SportsGoEntities context = new SportsGoEntities(false)) { CandidatosRepository candidatoRepository = new CandidatosRepository(context); Candidatos candidatoABuscar = new Candidatos(); candidatoABuscar.Personas = new Personas(); candidatoABuscar.Personas.Consecutivo = 8; Candidatos informacionCandidato = await candidatoRepository.BuscarCandidatoPorCodigoPersona(candidatoABuscar); Assert.IsNotNull(informacionCandidato); Assert.AreNotEqual(informacionCandidato.Consecutivo, 0); Assert.AreNotEqual(informacionCandidato.CodigoPersona, 0); Assert.AreNotEqual(informacionCandidato.CodigoGenero, 0); Assert.AreNotEqual(informacionCandidato.Estatura, 0); Assert.AreNotEqual(informacionCandidato.Peso, 0); Assert.AreNotEqual(informacionCandidato.FechaNacimiento, DateTime.MinValue); } }
public async Task <WrapperSimpleTypesDTO> CrearCandidatoResponsable(CandidatosResponsables candidatoResponsableParaCrear) { using (SportsGoEntities context = new SportsGoEntities(false)) { CandidatosRepository candidatosRepo = new CandidatosRepository(context); candidatosRepo.CrearCandidatoResponsable(candidatoResponsableParaCrear); WrapperSimpleTypesDTO wrapperCrearCandidatoResponsable = new WrapperSimpleTypesDTO(); wrapperCrearCandidatoResponsable.NumeroRegistrosAfectados = await context.SaveChangesAsync(); if (wrapperCrearCandidatoResponsable.NumeroRegistrosAfectados > 0) { wrapperCrearCandidatoResponsable.Exitoso = true; wrapperCrearCandidatoResponsable.ConsecutivoCreado = candidatoResponsableParaCrear.Consecutivo; } return(wrapperCrearCandidatoResponsable); } }
public async Task CandidatosServices_ListarCandidatos_ShouldList() { using (SportsGoEntities context = new SportsGoEntities(false)) { CandidatosRepository candidatosRepo = new CandidatosRepository(context); BuscadorDTO buscador = new BuscadorDTO { SkipIndexBase = 0, TakeIndexBase = 20, EstaturaInicial = 1, EstaturaFinal = 200 }; List <CandidatosDTO> listaCandidatos = await candidatosRepo.ListarCandidatos(buscador); Assert.IsNotNull(listaCandidatos); Assert.IsTrue(listaCandidatos.TrueForAll(x => x.CandidatosVideos.Count == 0)); Assert.IsTrue(listaCandidatos.TrueForAll(x => x.CategoriasCandidatos.All(y => y.Candidatos == null && y.Categorias == null && y.HabilidadesCandidatos.Count == 0))); Assert.IsTrue(listaCandidatos.TrueForAll(x => x.Generos == null || x.Generos.Candidatos.Count == 0)); } }
public void CandidatoRepository_CrearCandidato_ShouldCreate() { using (SportsGoEntities context = new SportsGoEntities(false)) using (DbContextTransaction dbContextTransaction = context.Database.BeginTransaction()) { CandidatosRepository candidatoRepository = new CandidatosRepository(context); Candidatos candidatoParaCrear = new Candidatos { CodigoPersona = 8, CodigoGenero = 2, Estatura = 170, Peso = 60, Biografia = "Yo ser Niño MVC Angular y no leer comentarios", FechaNacimiento = new DateTime(1995, 11, 9) }; candidatoRepository.CrearCandidato(candidatoParaCrear); //Assert.IsNotNull(wrapperCrearCandidato); //Assert.IsTrue(wrapperCrearCandidato.Exitoso); //Assert.AreNotEqual(wrapperCrearCandidato.NumeroRegistrosAfectados, 0); } }
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); } }