public async Task <WrapperSimpleTypesDTO> EliminarPais(Paises paisParaEliminar)
        {
            using (SportsGoEntities context = new SportsGoEntities(false))
            {
                Archivos archivo = new Archivos
                {
                    Consecutivo = paisParaEliminar.CodigoArchivo
                };

                AdministracionRepository adminRepo = new AdministracionRepository(context);
                PaisesContenidos         paisContenidoParaBorrar = new PaisesContenidos
                {
                    CodigoPais = paisParaEliminar.Consecutivo
                };

                adminRepo.EliminarMultiplesPaisesContenidos(paisContenidoParaBorrar);
                adminRepo.EliminarPais(paisParaEliminar);

                ArchivosRepository archivoRepo = new ArchivosRepository(context);
                archivoRepo.EliminarArchivo(archivo);

                WrapperSimpleTypesDTO wrapperEliminarPais = new WrapperSimpleTypesDTO();

                wrapperEliminarPais.NumeroRegistrosAfectados = await context.SaveChangesAsync();

                if (wrapperEliminarPais.NumeroRegistrosAfectados > 0)
                {
                    wrapperEliminarPais.Exitoso = true;
                }

                return(wrapperEliminarPais);
            }
        }
        public async Task <WrapperSimpleTypesDTO> AsignarTerminosCondicionesLista(List <TerminosCondiciones> terminosCondicionesParaAsignar)
        {
            using (SportsGoEntities context = new SportsGoEntities(false))
            {
                AdministracionRepository adminRepo = new AdministracionRepository(context);

                foreach (TerminosCondiciones terminos in terminosCondicionesParaAsignar)
                {
                    bool existe = await adminRepo.BuscarSiExisteTerminosYCondiciones(terminos);

                    if (existe)
                    {
                        TerminosCondiciones terminosCondicionesExistentes = await adminRepo.ModificarTerminosCondiciones(terminos);
                    }
                    else
                    {
                        adminRepo.CrearTerminosCondiciones(terminos);
                    }
                }

                WrapperSimpleTypesDTO wrapperAsignarTerminosCondicionesLista = new WrapperSimpleTypesDTO();

                wrapperAsignarTerminosCondicionesLista.NumeroRegistrosAfectados = await context.SaveChangesAsync();

                if (wrapperAsignarTerminosCondicionesLista.NumeroRegistrosAfectados > 0)
                {
                    wrapperAsignarTerminosCondicionesLista.Exitoso = true;
                }

                return(wrapperAsignarTerminosCondicionesLista);
            }
        }
        public async Task <Tuple <WrapperSimpleTypesDTO, TimeLineNotificaciones> > ModificarUsuario(Usuarios usuarioParamodificar)
        {
            using (SportsGoEntities context = new SportsGoEntities(false))
            {
                AdministracionRepository adminRepo = new AdministracionRepository(context);

                Usuarios usuarioExistente = await adminRepo.ModificarUsuario(usuarioParamodificar);

                Notificaciones notificacion = null;
                if (usuarioExistente.PlanesUsuarios.CodigoPlan != usuarioParamodificar.PlanesUsuarios.CodigoPlanDeseado)
                {
                    PlanesBusiness planBusiness = new PlanesBusiness();

                    // Cambio el plan para esa persona
                    await planBusiness.CambiarDePlanUsuario(usuarioParamodificar.PlanesUsuarios);

                    // Armamos una notificacion para el nuevo plan
                    NoticiasRepository noticiasRepo = new NoticiasRepository(context);
                    notificacion = new Notificaciones
                    {
                        CodigoTipoNotificacion     = (int)TipoNotificacionEnum.PlanAprobado,
                        CodigoPlanNuevo            = usuarioParamodificar.PlanesUsuarios.CodigoPlanDeseado,
                        CodigoPersonaDestinoAccion = usuarioExistente.Personas.First().Consecutivo,
                        Creacion = DateTime.Now
                    };

                    noticiasRepo.CrearNotificacion(notificacion);
                }

                WrapperSimpleTypesDTO  wrapperModificarUsuario = new WrapperSimpleTypesDTO();
                TimeLineNotificaciones timeLineNotificacion    = null;

                wrapperModificarUsuario.NumeroRegistrosAfectados = await context.SaveChangesAsync();

                if (wrapperModificarUsuario.NumeroRegistrosAfectados > 0)
                {
                    wrapperModificarUsuario.Exitoso = true;

                    if (notificacion != null && notificacion.Consecutivo > 0)
                    {
                        NoticiasRepository noticiasRepo = new NoticiasRepository(context);

                        if (notificacion.CodigoPersonaDestinoAccion.HasValue && notificacion.CodigoPersonaDestinoAccion > 0)
                        {
                            PersonasRepository personaRepo = new PersonasRepository(context);

                            int codigoIdioma = await personaRepo.BuscarCodigoIdiomaDeLaPersona(notificacion.CodigoPersonaDestinoAccion.Value);

                            notificacion.CodigoIdiomaUsuarioBase = codigoIdioma;
                        }

                        timeLineNotificacion = new TimeLineNotificaciones(await noticiasRepo.BuscarNotificacion(notificacion));
                    }
                }

                return(Tuple.Create(wrapperModificarUsuario, timeLineNotificacion));
            }
        }
        public async Task <WrapperSimpleTypesDTO> AsignarImagenPerfilAdministrador(int codigoUsuario, Stream streamSource)
        {
            using (SportsGoEntities context = new SportsGoEntities(false))
            {
                AdministracionRepository adminRepo   = new AdministracionRepository(context);
                ArchivosBusiness         archivoBuss = new ArchivosBusiness();

                ImagenesPerfilAdministradores imagenPerfilExistente = await adminRepo.BuscarImagenPerfilAdministrador(codigoUsuario);

                int?codigoArchivoExistente = null;

                WrapperSimpleTypesDTO wrapper = await archivoBuss.CrearArchivoStream((int)TipoArchivo.Imagen, streamSource);

                if (imagenPerfilExistente == null)
                {
                    ImagenesPerfilAdministradores imagenParaCrear = new ImagenesPerfilAdministradores
                    {
                        CodigoUsuario = codigoUsuario,
                        CodigoArchivo = Convert.ToInt32(wrapper.ConsecutivoArchivoCreado)
                    };

                    adminRepo.CrearImagenPerfilAdministrador(imagenParaCrear);
                }
                else
                {
                    // Guardo el viejo codigo de archivo para borrarlo luego
                    codigoArchivoExistente = imagenPerfilExistente.CodigoArchivo;

                    imagenPerfilExistente = await adminRepo.AsignarImagenPerfil(codigoUsuario, Convert.ToInt32(wrapper.ConsecutivoArchivoCreado));
                }

                // Borro el archivo viejo
                if (codigoArchivoExistente.HasValue)
                {
                    ArchivosRepository archivoRepo       = new ArchivosRepository(context);
                    Archivos           archivoParaBorrar = new Archivos
                    {
                        Consecutivo = codigoArchivoExistente.Value
                    };

                    archivoRepo.EliminarArchivo(archivoParaBorrar);
                }

                WrapperSimpleTypesDTO wrapperAsignarImagenPerfilAdministrador = new WrapperSimpleTypesDTO();

                wrapperAsignarImagenPerfilAdministrador.NumeroRegistrosAfectados = await context.SaveChangesAsync();

                if (wrapperAsignarImagenPerfilAdministrador.NumeroRegistrosAfectados > 0)
                {
                    wrapperAsignarImagenPerfilAdministrador.Exitoso                  = true;
                    wrapperAsignarImagenPerfilAdministrador.ConsecutivoCreado        = imagenPerfilExistente.Consecutivo;
                    wrapperAsignarImagenPerfilAdministrador.ConsecutivoArchivoCreado = wrapper.ConsecutivoArchivoCreado;
                }

                return(wrapperAsignarImagenPerfilAdministrador);
            }
        }
        public async Task <List <PaisesDTO> > ListarPaisesPorIdioma(Paises paisParaListar)
        {
            using (SportsGoEntities context = new SportsGoEntities(false))
            {
                AdministracionRepository adminRepo   = new AdministracionRepository(context);
                List <PaisesDTO>         listaPaises = await adminRepo.ListarPaisesPorIdioma(paisParaListar);

                return(listaPaises);
            }
        }
        public async Task <PaisesContenidos> BuscarPaisContenido(PaisesContenidos paisContenidoParaBuscar)
        {
            using (SportsGoEntities context = new SportsGoEntities(false))
            {
                AdministracionRepository adminRepo            = new AdministracionRepository(context);
                PaisesContenidos         paisContenidoBuscado = await adminRepo.BuscarPaisContenido(paisContenidoParaBuscar);

                return(paisContenidoBuscado);
            }
        }
        public async Task <List <PaisesContenidos> > ListarContenidoDeUnPais(PaisesContenidos paisContenidoParaListar)
        {
            using (SportsGoEntities context = new SportsGoEntities(false))
            {
                AdministracionRepository adminRepo   = new AdministracionRepository(context);
                List <PaisesContenidos>  listaPaises = await adminRepo.ListarContenidoDeUnPais(paisContenidoParaListar);

                return(listaPaises);
            }
        }
        public async Task <List <TerminosCondiciones> > ListarTerminosCondiciones()
        {
            using (SportsGoEntities context = new SportsGoEntities(false))
            {
                AdministracionRepository adminRepo = new AdministracionRepository(context);

                List <TerminosCondiciones> listaTerminosCondicionesBuscados = await adminRepo.ListarTerminosCondiciones();

                return(listaTerminosCondicionesBuscados);
            }
        }
        public async Task <TerminosCondiciones> BuscarTerminosCondiciones(TerminosCondiciones terminosCondicionesParaBuscar)
        {
            using (SportsGoEntities context = new SportsGoEntities(false))
            {
                AdministracionRepository adminRepo = new AdministracionRepository(context);

                TerminosCondiciones terminosCondicionesBuscados = await adminRepo.BuscarTerminosCondiciones(terminosCondicionesParaBuscar);

                return(terminosCondicionesBuscados);
            }
        }
        async Task EliminarRepresentante(AdministracionRepository adminRepo, int?codigoPersona)
        {
            int?codigoRepresentante = await adminRepo.BuscarCodigoRepresentanteDeUnaPersona(codigoPersona.Value);

            if (codigoRepresentante.HasValue)
            {
                adminRepo.EliminarCategoriaRepresentantesDeUnRepresentante(codigoRepresentante.Value);
                adminRepo.EliminarRepresentante(codigoRepresentante.Value);
            }
            else
            {
                throw new InvalidOperationException("No existe un Representante para esta persona que se quiere borrar, BUUUGGG BUAAGHHH!.");
            }
        }
        async Task EliminarCandidato(AdministracionRepository adminRepo, int?codigoPersona)
        {
            int?codigoCandidato = await adminRepo.BuscarCodigoCandidatoDeUnaPersona(codigoPersona.Value);

            if (codigoCandidato.HasValue)
            {
                List <int> listaCodigoCategorias = await adminRepo.ListarCodigoCategoriasDeUnCandidato(codigoCandidato.Value);

                if (listaCodigoCategorias != null && listaCodigoCategorias.Count > 0)
                {
                    foreach (var codigoCategoria in listaCodigoCategorias)
                    {
                        adminRepo.EliminarHabilidadesDeUnaCategoriaCandidato(codigoCategoria);
                    }
                }

                adminRepo.EliminarCategoriasCandidatoDeUnCandidato(codigoCandidato.Value);
                adminRepo.EliminarCandidatosVideoDeUnCandidato(codigoCandidato.Value);

                int?codigoResponsable = await adminRepo.BuscarCodigoResponsableDeUnCandidato(codigoCandidato.Value);

                List <int> listaCodigoArchivoVideosCandidatos = await adminRepo.ListarCodigoArchivosDeTodosLosCandidatoVideosDeUnaCandidato(codigoCandidato.Value);

                adminRepo.EliminarCandidato(codigoCandidato.Value);

                if (codigoResponsable.HasValue)
                {
                    adminRepo.EliminarCandidatosResponsables(codigoResponsable.Value);
                }

                if (listaCodigoArchivoVideosCandidatos != null && listaCodigoArchivoVideosCandidatos.Count > 0)
                {
                    foreach (var codigoArchivo in listaCodigoArchivoVideosCandidatos)
                    {
                        adminRepo.EliminarArchivo(codigoArchivo);
                    }
                }
            }
            else
            {
                throw new InvalidOperationException("No existe un Candidato para esta persona que se quiere borrar, BUUUGGG BUAAGHHH!.");
            }
        }
        public async Task <WrapperSimpleTypesDTO> EliminarPaisContenido(PaisesContenidos paisContenidoParaEliminar)
        {
            using (SportsGoEntities context = new SportsGoEntities(false))
            {
                AdministracionRepository adminRepo = new AdministracionRepository(context);
                adminRepo.EliminarPaisContenido(paisContenidoParaEliminar);

                WrapperSimpleTypesDTO wrapperEliminarPaisContenido = new WrapperSimpleTypesDTO();

                wrapperEliminarPaisContenido.NumeroRegistrosAfectados = await context.SaveChangesAsync();

                if (wrapperEliminarPaisContenido.NumeroRegistrosAfectados > 0)
                {
                    wrapperEliminarPaisContenido.Exitoso = true;
                }

                return(wrapperEliminarPaisContenido);
            }
        }
        public async Task <UsuariosDTO> VerificarUsuario(Usuarios usuarioParaVerificar)
        {
            using (SportsGoEntities context = new SportsGoEntities(false))
            {
                AuthenticateRepository authenticateRepo  = new AuthenticateRepository(context);
                UsuariosDTO            usuarioVerificado = await authenticateRepo.VerificarUsuario(usuarioParaVerificar);

                if (usuarioVerificado != null)
                {
                    Usuarios usuarioExistente = await authenticateRepo.ActualizarFechaUltimoAcceso(usuarioVerificado.Consecutivo);

                    // Se vencio el plan
                    if (usuarioVerificado.PlanesUsuarios.Vencimiento < DateTime.Now && usuarioVerificado.TipoPerfil != TipoPerfil.Administrador)
                    {
                        PlanesBusiness        planBusiness       = new PlanesBusiness();
                        WrapperSimpleTypesDTO wrapperCambiarPlan = await planBusiness.CambiarPlanUsuarioADefaultPerfilPorVencimiento(usuarioVerificado.PlanesUsuarios);

                        usuarioVerificado = await authenticateRepo.VerificarUsuario(usuarioParaVerificar);
                    }

                    await context.SaveChangesAsync();

                    if (usuarioVerificado.TipoPerfil == TipoPerfil.Administrador)
                    {
                        AdministracionRepository adminRepo = new AdministracionRepository(context);

                        ImagenesPerfilAdministradores imagenPerfilBuscada = await adminRepo.BuscarImagenPerfilAdministrador(usuarioVerificado.Consecutivo);

                        if (imagenPerfilBuscada != null)
                        {
                            usuarioVerificado.CodigoImagenPerfilAdmin = imagenPerfilBuscada.CodigoArchivo;
                        }
                    }
                }

                return(usuarioVerificado);
            }
        }
        public async Task <WrapperSimpleTypesDTO> CrearPais(Paises paisParaCrear)
        {
            using (SportsGoEntities context = new SportsGoEntities(false))
            {
                AdministracionRepository adminRepo = new AdministracionRepository(context);

                paisParaCrear.Archivos.CodigoTipoArchivo = (int)TipoArchivo.Imagen;
                adminRepo.CrearPais(paisParaCrear);

                WrapperSimpleTypesDTO wrapperCrearPais = new WrapperSimpleTypesDTO();

                wrapperCrearPais.NumeroRegistrosAfectados = await context.SaveChangesAsync();

                if (wrapperCrearPais.NumeroRegistrosAfectados > 0)
                {
                    wrapperCrearPais.Exitoso                  = true;
                    wrapperCrearPais.ConsecutivoCreado        = paisParaCrear.Consecutivo;
                    wrapperCrearPais.ConsecutivoArchivoCreado = paisParaCrear.CodigoArchivo;
                }

                return(wrapperCrearPais);
            }
        }
        async Task EliminarAnunciante(AdministracionRepository adminRepo, int?codigoPersona)
        {
            int?codigoAnunciante = await adminRepo.BuscarCodigoAnuncianteDeUnaPersona(codigoPersona.Value);

            if (codigoAnunciante.HasValue)
            {
                List <int> listaCodigoAnuncios = await adminRepo.ListarCodigoAnunciosDeUnAnunciante(codigoAnunciante.Value);

                if (listaCodigoAnuncios != null && listaCodigoAnuncios.Count > 0)
                {
                    foreach (var codigoAnuncio in listaCodigoAnuncios)
                    {
                        adminRepo.EliminarAnunciosContenidosDeUnAnuncio(codigoAnuncio);
                        adminRepo.EliminarAnunciosPaisesDeUnAnuncio(codigoAnuncio);
                        adminRepo.EliminarCategoriasAnunciosDeUnAnuncio(codigoAnuncio);
                    }
                }

                adminRepo.EliminarAnunciosDeUnAnunciante(codigoAnunciante.Value);

                List <int> listaCodigoArchivoAnuncios = await adminRepo.ListarCodigoArchivosDeTodosLosAnunciosDeUnAnunciante(codigoAnunciante.Value);

                adminRepo.EliminarAnunciante(codigoAnunciante.Value);

                if (listaCodigoArchivoAnuncios != null && listaCodigoArchivoAnuncios.Count > 0)
                {
                    foreach (var codigoArchivo in listaCodigoArchivoAnuncios)
                    {
                        adminRepo.EliminarArchivo(codigoArchivo);
                    }
                }
            }
            else
            {
                throw new InvalidOperationException("No existe un Anunciante para esta persona que se quiere borrar, BUUUGGG BUAAGHHH!.");
            }
        }
        async Task EliminarGrupo(AdministracionRepository adminRepo, int?codigoPersona)
        {
            int?codigoGrupo = await adminRepo.BuscarCodigoGrupoDeUnaPersona(codigoPersona.Value);

            if (codigoGrupo.HasValue)
            {
                List <int> listaCodigoEventos = await adminRepo.ListarCodigoEventosDeUnGrupo(codigoGrupo.Value);

                if (listaCodigoEventos != null && listaCodigoEventos.Count > 0)
                {
                    foreach (var codigoEvento in listaCodigoEventos)
                    {
                        adminRepo.EliminarGruposAsistentesDeUnEvento(codigoEvento);
                        adminRepo.EliminarCategoriasEventosDeUnEvento(codigoEvento);
                    }
                }

                adminRepo.EliminarEventosDeUnGrupo(codigoGrupo.Value);
                adminRepo.EliminarCategoriasGruposDeUnGrupo(codigoGrupo.Value);

                List <int> listaCodigoArchivoGrupo = await adminRepo.ListarCodigoArchivosDeTodosLosGrupoEventosDeUnGrupo(codigoGrupo.Value);

                adminRepo.EliminarGrupo(codigoGrupo.Value);

                if (listaCodigoArchivoGrupo != null && listaCodigoArchivoGrupo.Count > 0)
                {
                    foreach (var codigoArchivo in listaCodigoArchivoGrupo)
                    {
                        adminRepo.EliminarArchivo(codigoArchivo);
                    }
                }
            }
            else
            {
                throw new InvalidOperationException("No existe un Grupo para esta persona que se quiere borrar, BUUUGGG BUAAGHHH!.");
            }
        }
        public async Task <WrapperSimpleTypesDTO> ModificarPais(Paises paisParaModificar)
        {
            using (SportsGoEntities context = new SportsGoEntities(false))
            {
                AdministracionRepository adminRepo = new AdministracionRepository(context);
                Paises paisExistente = await adminRepo.ModificarPais(paisParaModificar);

                foreach (var item in paisParaModificar.PaisesContenidos)
                {
                    await adminRepo.ModificarPaisContenido(item);
                }

                WrapperSimpleTypesDTO wrapperModificarPais = new WrapperSimpleTypesDTO();

                wrapperModificarPais.NumeroRegistrosAfectados = await context.SaveChangesAsync();

                if (wrapperModificarPais.NumeroRegistrosAfectados > 0)
                {
                    wrapperModificarPais.Exitoso = true;
                }

                return(wrapperModificarPais);
            }
        }
Пример #18
0
        public async Task <List <TimeLineNotificaciones> > ListaTimeLineNotificaciones(BuscadorDTO buscador)
        {
            using (SportsGoEntities context = new SportsGoEntities(false))
            {
                NoticiasRepository       noticiaRepo = new NoticiasRepository(context);
                DateTimeHelperNoPortable helper      = new DateTimeHelperNoPortable();

                if (buscador.FechaFiltroBase != DateTime.MinValue)
                {
                    buscador.FechaFiltroBase = helper.ConvertDateTimeFromAnotherTimeZone(buscador.ZonaHorariaGMTBase, helper.DifferenceBetweenGMTAndLocalTimeZone, buscador.FechaFiltroBase);
                }

                List <NoticiasDTO> listaNoticias = await noticiaRepo.ListarNoticiasNotificaciones(buscador);

                List <NotificacionesDTO> listarNotificaciones = await noticiaRepo.ListarNotificaciones(buscador);

                List <TimeLineNotificaciones> listaTimeLineNotificacion = TimeLineNotificaciones.CrearListaTimeLineNotificaciones(listaNoticias, listarNotificaciones);

                // Si no es minValue significa que estoy refrescando y no busco feed
                if (buscador.FechaFiltroBase == DateTime.MinValue)
                {
                    RssFeeds rssBuscado = await noticiaRepo.BuscarRssFeedPorCodigoIdioma(buscador.CodigoIdiomaUsuarioBase);

                    if (rssBuscado != null && !string.IsNullOrWhiteSpace(rssBuscado.UrlFeed))
                    {
                        FeedReader             reader = new FeedReader();
                        IEnumerable <FeedItem> items  = reader.RetrieveFeed(rssBuscado.UrlFeed);

                        if (items != null && items.Count() > 0)
                        {
                            IEnumerable <FeedItem> itemsFiltrados = items.Skip(buscador.SkipIndexBase).Take(buscador.TakeIndexBase);

                            if (itemsFiltrados != null && itemsFiltrados.Count() > 0)
                            {
                                foreach (FeedItem item in itemsFiltrados)
                                {
                                    string url = item.Uri != null ? item.Uri.AbsoluteUri : string.Empty;

                                    TimeLineNotificaciones timeLineRss = new TimeLineNotificaciones(item.Title, item.Summary, url, string.Empty, TipoNotificacionEnum.RssFeed);

                                    listaTimeLineNotificacion.Insert(0, timeLineRss);
                                }
                            }
                        }
                    }
                }
                // Cuando Skip este en 0 significa que es la primera consulta, asi no repito su cosa de validar el plan
                // si "FechaFiltroBase" tiene un valor significa que es pull to refresh y no debo agregar las validaciones del plan
                if (buscador.SkipIndexBase == 0 && buscador.FechaFiltroBase == DateTime.MinValue)
                {
                    PlanesRepository         planRepo  = new PlanesRepository(context);
                    AdministracionRepository adminRepo = new AdministracionRepository(context);

                    PlanesUsuarios planUsuario = new PlanesUsuarios
                    {
                        Consecutivo = buscador.CodigoPlanUsuario,
                        IdiomaBase  = buscador.IdiomaBase
                    };
                    PlanesUsuariosDTO planDelUsuarioValidado = await planRepo.BuscarPlanUsuario(planUsuario);

                    ImagenesPerfilAdministradores imagenperfil = await adminRepo.BuscarPrimeraImagenPerfilAdministrador();

                    long mesesFaltantesParaQueSeVenza = DateTimeHelper.DiferenciaEntreDosFechas(planDelUsuarioValidado.Vencimiento, DateTime.Now);

                    if (mesesFaltantesParaQueSeVenza == 1 && planDelUsuarioValidado.Planes.PlanDefault != 1)
                    {
                        TimeLineNotificaciones timeLineCasiVence = new TimeLineNotificaciones
                        {
                            CodigoArchivo        = imagenperfil.CodigoArchivo,
                            UrlArchivo           = imagenperfil.UrlImagenPerfil,
                            DescripcionPlan      = planDelUsuarioValidado.Planes.DescripcionIdiomaBuscado,
                            FechaVencimientoPlan = planDelUsuarioValidado.Vencimiento,
                            TipoDeLaNotificacion = TipoNotificacionEnum.EstaPorVencersePlan,
                            CreacionNotificacion = DateTime.Now
                        };

                        listaTimeLineNotificacion.Insert(0, timeLineCasiVence);
                    }
                    else if (mesesFaltantesParaQueSeVenza < 0 && planDelUsuarioValidado.Planes.PlanDefault != 1)
                    {
                        TimeLineNotificaciones timeLineVencio = new TimeLineNotificaciones
                        {
                            CodigoArchivo        = imagenperfil.CodigoArchivo,
                            UrlArchivo           = imagenperfil.UrlImagenPerfil,
                            DescripcionPlan      = planDelUsuarioValidado.Planes.DescripcionIdiomaBuscado,
                            FechaVencimientoPlan = planDelUsuarioValidado.Vencimiento,
                            TipoDeLaNotificacion = TipoNotificacionEnum.SeVencioPlan,
                            CreacionNotificacion = DateTime.Now
                        };

                        listaTimeLineNotificacion.Insert(0, timeLineVencio);
                    }
                }

                if (listaTimeLineNotificacion != null && listaTimeLineNotificacion.Count > 0)
                {
                    foreach (var notificacion in listaTimeLineNotificacion)
                    {
                        notificacion.CreacionNotificacion   = helper.ConvertDateTimeFromAnotherTimeZone(buscador.ZonaHorariaGMTBase, helper.DifferenceBetweenGMTAndLocalTimeZone, notificacion.CreacionNotificacion);
                        notificacion.FechaInicioEvento      = helper.ConvertDateTimeFromAnotherTimeZone(buscador.ZonaHorariaGMTBase, helper.DifferenceBetweenGMTAndLocalTimeZone, notificacion.FechaInicioEvento);
                        notificacion.FechaTerminacionEvento = helper.ConvertDateTimeFromAnotherTimeZone(buscador.ZonaHorariaGMTBase, helper.DifferenceBetweenGMTAndLocalTimeZone, notificacion.FechaTerminacionEvento);
                        notificacion.FechaVencimientoPlan   = helper.ConvertDateTimeFromAnotherTimeZone(buscador.ZonaHorariaGMTBase, helper.DifferenceBetweenGMTAndLocalTimeZone, notificacion.FechaVencimientoPlan);
                    }
                }

                return(listaTimeLineNotificacion);
            }
        }
        public async Task <WrapperSimpleTypesDTO> EliminarUsuario(Usuarios usuarioParaEliminar)
        {
            using (SportsGoEntities context = new SportsGoEntities(false))
            {
                AdministracionRepository adminRepo = new AdministracionRepository(context);

                int?codigoPersona = await adminRepo.BuscarCodigoPersonaDeUnUsuario(usuarioParaEliminar.Consecutivo);

                if (!codigoPersona.HasValue)
                {
                    throw new InvalidOperationException("La persona que se intenta borrar no existe, BUUUGGG BUAAGHHH!.");
                }

                int?codigoTipoPerfil = await adminRepo.BuscarTipoPerfilDeUnaPersona(codigoPersona.Value);

                if (!codigoTipoPerfil.HasValue)
                {
                    throw new InvalidOperationException("La persona que se intenta borrar no tiene un tipo de perfil valido, BUUUGGG BUAAGHHH!.");
                }

                TipoPerfil tipoPerfilDeEstaPersona = codigoTipoPerfil.Value.ToEnum <TipoPerfil>();

                int?codigoPlanUsuario = await adminRepo.BuscarCodigoPlanUsuarioDeUnUsuario(usuarioParaEliminar.Consecutivo);

                if (!codigoPlanUsuario.HasValue)
                {
                    throw new InvalidOperationException("El usuario que se intenta borrar no tiene un plan de usuario valido, BUUUGGG BUAAGHHH!.");
                }

                adminRepo.EliminarNotificacionesDeUnaPersona(codigoPersona.Value);

                List <int> listaCodigoArchivoHistorialPago = await adminRepo.ListarCodigoArchivosDeTodosLosHistorialPagoDeUnaPersona(codigoPersona.Value);

                adminRepo.EliminarHistorialPagoDeUnaPersona(codigoPersona.Value);

                if (listaCodigoArchivoHistorialPago != null && listaCodigoArchivoHistorialPago.Count > 0)
                {
                    foreach (var codigoArchivo in listaCodigoArchivoHistorialPago)
                    {
                        adminRepo.EliminarArchivo(codigoArchivo);
                    }
                }

                List <int> listaCodigoChats = await adminRepo.ListarCodigoChatDeUnaPersona(codigoPersona.Value);

                if (listaCodigoChats != null && listaCodigoChats.Count > 0)
                {
                    foreach (var codigoChat in listaCodigoChats)
                    {
                        adminRepo.EliminarChatMensajesDeUnChat(codigoChat);
                    }
                }

                adminRepo.EliminarChatsDeUnaPersona(codigoPersona.Value);
                adminRepo.EliminarContactosDeUnaPersona(codigoPersona.Value);
                adminRepo.EliminarGrupoEventosAsistentesDeUnaPersona(codigoPersona.Value);

                switch (tipoPerfilDeEstaPersona)
                {
                case TipoPerfil.Candidato:
                    await EliminarCandidato(adminRepo, codigoPersona);

                    break;

                case TipoPerfil.Grupo:
                    await EliminarGrupo(adminRepo, codigoPersona);

                    break;

                case TipoPerfil.Representante:
                    await EliminarRepresentante(adminRepo, codigoPersona);

                    break;

                case TipoPerfil.Anunciante:
                    await EliminarAnunciante(adminRepo, codigoPersona);

                    break;
                }

                adminRepo.EliminarPersona(codigoPersona.Value);

                int?codigoArchivoImagenPerfil = await adminRepo.BuscarCodigoArchivoDeImagenPerfilDeUnaPersona(codigoPersona.Value);

                int?codigoArchivoImagenBanner = await adminRepo.BuscarCodigoArchivoDeImagenBannerDeUnaPersona(codigoPersona.Value);

                if (codigoArchivoImagenPerfil.HasValue)
                {
                    adminRepo.EliminarArchivo(codigoArchivoImagenPerfil.Value);
                }

                if (codigoArchivoImagenBanner.HasValue)
                {
                    adminRepo.EliminarArchivo(codigoArchivoImagenBanner.Value);
                }

                adminRepo.EliminarPlanUsuario(codigoPlanUsuario.Value);
                adminRepo.EliminarUsuario(usuarioParaEliminar.Consecutivo);

                WrapperSimpleTypesDTO wrapperEliminarUsuario = new WrapperSimpleTypesDTO();

                wrapperEliminarUsuario.NumeroRegistrosAfectados = await context.SaveChangesAsync();

                if (wrapperEliminarUsuario.NumeroRegistrosAfectados > 0)
                {
                    wrapperEliminarUsuario.Exitoso = true;
                }

                return(wrapperEliminarUsuario);
            }
        }