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);
            }
        }
Example #4
0
        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);
            }
        }
Example #6
0
        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);
            }
        }
Example #14
0
        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);
            }
        }
Example #16
0
        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));
            }
        }
Example #17
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);
            }
        }