コード例 #1
0
        // returns all theme categories.
        public Collection<CategoriasTematica> getThemeCategoriesList()
        {
            // only get theme categories from this movement.
            IndignadoDBDataContext indignadoContext = new IndignadoDBDataContext();
            IEnumerable<CategoriasTematica> themeCategoriesEnum = indignadoContext.ExecuteQuery<CategoriasTematica>("SELECT id, idMovimiento, titulo, descripcion FROM CategoriasTematicas WHERE idMovimiento = {0}", IdMovement);

            Collection<CategoriasTematica> themeCategoriesCol = new Collection<CategoriasTematica>();
            foreach (CategoriasTematica themeCategory in themeCategoriesEnum)
            {
                // get own interest
                if (UserInfo != null)
                {
                    IEnumerable<int> myInterests = indignadoContext.ExecuteQuery<int>("SELECT COUNT(*) FROM Intereses WHERE (idCategoriaTematica = {0}) AND (idUsuario = {1})", themeCategory.id, UserInfo.Id);
                    foreach (int myInterest in myInterests)
                    {
                        themeCategory.miInteres = myInterest;
                    }
                }

                // add item to the collection
                themeCategoriesCol.Add(themeCategory);
            }

            // return the collection
            return themeCategoriesCol;
        }
コード例 #2
0
        // ******************
        // controller methods
        // ******************
        // creates a movement.
        public void createMovement(Movimiento movement)
        {
            // fixes the movement settings
            movement.habilitado = true;
            movement.url.Replace(' ', '_');
            if (movement.maxMarcasInadecuadasRecursoX < 1)
            {
                movement.maxMarcasInadecuadasRecursoX = 5;
            }
            if (movement.maxRecursosInadecuadosUsuarioZ < 1)
            {
                movement.maxRecursosInadecuadosUsuarioZ = 5;
            }
            if (movement.maxRecursosPopularesN < 1)
            {
                movement.maxRecursosPopularesN = 5;
            }
            if (movement.maxUltimosRecursosM < 1)
            {
                movement.maxUltimosRecursosM = 5;
            }

            // creates the movement.
            IndignadoDBDataContext indignadoContext = new IndignadoDBDataContext();
            indignadoContext.Movimientos.InsertOnSubmit(movement);
            indignadoContext.SubmitChanges();

            // get the movement's id.
            IEnumerable<Movimiento> movementsEnum = indignadoContext.ExecuteQuery<Movimiento> ("SELECT id FROM Movimiento WHERE nombre = {0}", movement.nombre);

            int idMov = -1;
            foreach (Movimiento mov in movementsEnum)
            {
                if (mov.nombre == movement.nombre)
                {
                    idMov = mov.id;
                }
            }

            // creates the movement admin.
            DTRegisterModel user = new DTRegisterModel();
            user.nombre = "movadmin";
            user.apodo = "movadmin";
            user.contraseña = "1234";
            user.idMovimiento = idMov;
            user.latitud = (float)movement.latitud;
            user.longitud = (float)movement.longitud;
            user.mail = movement.nombre + "@tsi1.com.uy";

            Usuario userDb = DTToClass.DTToUsuario(user);
            userDb.banned = false;
            userDb.privilegio = (short) Roles.MovAdminMask;
            userDb.fechaRegistro = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, DateTime.UtcNow.Hour, DateTime.UtcNow.Minute, 0);
            indignadoContext.Usuarios.InsertOnSubmit(userDb);

            // submit changes to the database
            indignadoContext.SubmitChanges();
        }
コード例 #3
0
        public static void RefreshNewsList(object o)
        {
            try
            {
                var controller = o as NewsResourcesController;

                IndignadoDBDataContext indignadoContext = new IndignadoDBDataContext();

                List<Movimiento> movimientos = indignadoContext.Movimientos.ToList();

                foreach (Movimiento mov in movimientos)
                {
                    IEnumerable<RssFeed> fuentesEnum = indignadoContext.ExecuteQuery<RssFeed>
                        ("SELECT * FROM RssFeeds WHERE idMovimiento = {0}", mov.id);

                    // get items from the sources.
                    Collection<List<RssItem>> ColRssLists = new Collection<List<RssItem>>();
                    Collection<String> colRssSourceTitle = new Collection<String>();
                    Collection<String> colRssSourceUrl = new Collection<String>();
                    foreach (RssFeed source in fuentesEnum)
                    {
                        List<RssItem> rssItemsList = RssDocument.Load(new System.Uri(source.url)).Channel.Items;
                        ColRssLists.Add(rssItemsList);
                        colRssSourceTitle.Add(source.titulo);
                        colRssSourceUrl.Add(source.url);
                        if (ColRssLists.Count > 10)
                        {
                            break;
                        }
                    }

                    // add items to the collection.
                    Collection<DTRssItem> rssItemsCol = new Collection<DTRssItem>();
                    if (ColRssLists.Count > 0)
                    {
                        for (int j = 0; j < 10; j++)
                        {
                            List<RssItem> rssItemsList = ColRssLists[j % ColRssLists.Count];
                            if (rssItemsList.Count > (j / ColRssLists.Count))
                            {
                                DTRssItem dtRssItem = ClassToDT.RssItemToDT(rssItemsList[j / ColRssLists.Count]);
                                dtRssItem.sourceTitle = colRssSourceTitle[j % colRssSourceTitle.Count];
                                dtRssItem.sourceUrl = colRssSourceUrl[j % colRssSourceTitle.Count];
                                rssItemsCol.Add(dtRssItem);
                            }
                        }

                        controller._rssItemsCol[mov.id] = rssItemsCol;
                    }
                }
            }
            catch (Exception error) {
            }
        }
コード例 #4
0
 // returns the data of the user.
 public Usuario getUser()
 {
     IndignadoDBDataContext indignadoContext = new IndignadoDBDataContext();
     IEnumerable<Usuario> usersEnum = indignadoContext.ExecuteQuery<Usuario>
         ("SELECT * FROM Usuarios WHERE (id = {0})", UserInfo.Id);
     return usersEnum.First();
 }
コード例 #5
0
 // returns all resources.
 public DTResourcesCol_NewsResources getResourcesList(int pageNumber)
 {
     // get all resources from this movement.
     IndignadoDBDataContext indignadoContext = new IndignadoDBDataContext();
     IEnumerable<Recurso> recursosEnum = indignadoContext.ExecuteQuery<Recurso>
         ("SELECT Recursos.id, Recursos.idUsuario, Usuarios.apodo AS apodoUsuario, titulo, descripcion, fecha, tipo, urlLink, urlImage, urlVideo, urlThumb, CantAprobaciones.cantAprobaciones FROM Recursos LEFT JOIN Usuarios ON (Usuarios.id = Recursos.idUsuario) LEFT JOIN (SELECT idRecurso, COUNT (idUsuario) AS cantAprobaciones FROM Aprobaciones GROUP BY idRecurso) CantAprobaciones ON (CantAprobaciones.idRecurso = Recursos.id) WHERE (Usuarios.idMovimiento = {0}) AND (Recursos.deshabilitado = {1}) ORDER BY Recursos.id DESC", IdMovement, 0);
     Movimiento movement = indignadoContext.Movimientos.Single(x => x.id == IdMovement);
     return toResourcesCol(recursosEnum, movement.maxUltimosRecursosM, pageNumber);
 }
コード例 #6
0
        // mark a resource as inappropriate.
        public void markResourceInappropriate(Recurso resource)
        {
            // create a markInappropriate
            MarcasInadecuado markInappropriate = new MarcasInadecuado();
            markInappropriate.idRecurso = resource.id;
            markInappropriate.idUsuario = UserInfo.Id;

            try
            {
                // get database context.
                IndignadoDBDataContext indignadoContext = new IndignadoDBDataContext();

                // get the movement.
                Movimiento movement = indignadoContext.Movimientos.Single(x => x.id == IdMovement);

                // add markInappropriate to the database.
                indignadoContext.MarcasInadecuados.InsertOnSubmit(markInappropriate);
                indignadoContext.SubmitChanges();
                indignadoContext = new IndignadoDBDataContext();

                // get number of marks of the resource.
                int numberMarksResource = 0;
                IEnumerable<int> numbersMarksR = indignadoContext.ExecuteQuery<int>("SELECT COUNT(*) FROM MarcasInadecuados WHERE (idRecurso = {0})", resource.id);
                foreach (int numberMarksR in numbersMarksR)
                {
                    numberMarksResource = numberMarksR;
                }

                // if number of marks matches X, disable the resource.
                if (numberMarksResource >= movement.maxMarcasInadecuadasRecursoX)
                {
                    indignadoContext.ExecuteQuery<int>("UPDATE Recursos SET deshabilitado = {0} WHERE id = {1}", 1, resource.id);
                }

                // get this resources's user id.
                int thisUserId = -1;
                IEnumerable<int> thisUsersID = indignadoContext.ExecuteQuery<int>("SELECT idUsuario FROM Recursos WHERE (id = {0})", resource.id);
                foreach (int thisUserID in thisUsersID)
                {
                    thisUserId = thisUserID;
                }

                // get number of disabled resources published by this resources's user.
                int numberMarksUser = 0;
                IEnumerable<int> numbersMarksU = indignadoContext.ExecuteQuery<int>
                    ("SELECT COUNT(*) FROM Recursos WHERE (idUsuario = {0}) AND (deshabilitado = {1})", thisUserId, 1);
                foreach (int numberMarksU in numbersMarksU)
                {
                    numberMarksUser = numberMarksU;
                }

                // if number of marks matches Z, ban the user.
                if (numberMarksUser >= movement.maxRecursosInadecuadosUsuarioZ)
                {
                    indignadoContext.ExecuteQuery<int>("UPDATE Usuarios SET banned = {0} WHERE id = {1}", true, thisUserId);
                }

                // commit changes to the database.
                indignadoContext.SubmitChanges();
            }
            catch (Exception error)
            {
            }
        }
コード例 #7
0
        // converts a resources enumerable to a collection.
        private DTResourcesCol_NewsResources toResourcesCol(IEnumerable<Recurso> recursosEnum, int itemsNumber, int pageNumber)
        {
            IndignadoDBDataContext indignadoContext = new IndignadoDBDataContext();

            // create new resources datatypes collection.
            DTResourcesCol_NewsResources dtResourcesCol = new DTResourcesCol_NewsResources();
            dtResourcesCol.items = new Collection<DTResource_NewsResources>();

            Collection<Recurso> colecciontrucha = new Collection<Recurso>();
            foreach (Recurso resource in recursosEnum)
            {
                colecciontrucha.Add(resource);
            }

            // get page number
            int itemsCount = colecciontrucha.Count();
            int maxpag = (itemsCount / itemsNumber);
            if (itemsCount  %   itemsNumber != 0){
                maxpag++;
            }
            if (pageNumber > maxpag) {
                pageNumber = maxpag;
            }
            dtResourcesCol.currentPage = pageNumber;
            dtResourcesCol.maxPage = maxpag;

            //recursosEnum = recursosEnum.Skip((pageNumber-1)*itemsNumber);

            // for each resource, ...
            int counter = 0;
            foreach (Recurso resource in colecciontrucha)
            {
                counter++;
                if (counter <= (pageNumber - 1) * itemsNumber)
                {
                    continue;
                }
                

                // get own like
                if (UserInfo != null)
                {
                    IEnumerable<int> iLikesIt = indignadoContext.ExecuteQuery<int>("SELECT COUNT(*) FROM Aprobaciones WHERE (idRecurso = {0}) AND (idUsuario = {1})", resource.id, UserInfo.Id);
                    foreach (int iLikeIt in iLikesIt)
                    {
                        resource.meGusta = iLikeIt;
                    }
                }

                // get own mark as inappropriate
                if (UserInfo != null)
                {
                    IEnumerable<int> myMarksInappr = indignadoContext.ExecuteQuery<int>("SELECT COUNT(*) FROM MarcasInadecuados WHERE (idRecurso = {0}) AND (idUsuario = {1})", resource.id, UserInfo.Id);
                    foreach (int myMarkInappr in myMarksInappr)
                    {
                        resource.yoMarqueInadecuado = myMarkInappr;
                    }
                }

                // add item to the collection
                dtResourcesCol.items.Add(ClassToDT.ResourceToDT_NewsResources(resource));

                // stop at the desired number of items.
                if (dtResourcesCol.items.Count >= itemsNumber)
                {
                    break;
                }
            }

            return dtResourcesCol;
        }
コード例 #8
0
 // returns all resources published by the movement admin.
 public DTResourcesCol_NewsResources getResourcesListMovAdmin(int pageNumber)
 {
     IndignadoDBDataContext indignadoContext = new IndignadoDBDataContext();
     Usuario movAdmin = indignadoContext.Usuarios.SingleOrDefault(u => (u.idMovimiento == IdMovement) && ((u.privilegio & IndignadoServer.Roles.MovAdminMask) == IndignadoServer.Roles.MovAdminMask));
     IEnumerable<Recurso> resourcesEnum = indignadoContext.ExecuteQuery<Recurso>
         ("SELECT Recursos.id, Recursos.idUsuario, Usuarios.apodo AS apodoUsuario, titulo, descripcion, fecha, tipo, urlLink, urlImage, urlVideo, urlThumb, CantAprobaciones.cantAprobaciones FROM Recursos LEFT JOIN Usuarios ON (Usuarios.id = Recursos.idUsuario) LEFT JOIN (SELECT idRecurso, COUNT (idUsuario) AS cantAprobaciones FROM Aprobaciones GROUP BY idRecurso) CantAprobaciones ON (CantAprobaciones.idRecurso = Recursos.id) WHERE (Usuarios.idMovimiento = {0}) AND (Usuarios.id = {1}) ORDER BY Recursos.id DESC", IdMovement, movAdmin.id);
     Movimiento movement = indignadoContext.Movimientos.Single(x => x.id == IdMovement);
     return toResourcesCol(resourcesEnum, movement.maxUltimosRecursosM, pageNumber);
 }
コード例 #9
0
        // convert users enumerable to collection.
        private Collection<Usuario> toUsersCol(IEnumerable<Usuario> usersEnum)
        {
            IndignadoDBDataContext indignadoContext = new IndignadoDBDataContext();

            // create new users collection.
            Collection<Usuario> usersCol = new Collection<Usuario>();

            // for each user in the enumerable, ...
            foreach (Usuario user in usersEnum)
            {
                // get number of resources marked as inappropriate.
                IEnumerable<int> numbersMarksInappropriateResources = indignadoContext.ExecuteQuery<int>
                    ("SELECT COUNT(*) FROM (SELECT idRecurso FROM MarcasInadecuados GROUP BY idRecurso) RecursosMarcadosInadecuado LEFT JOIN Recursos ON Recursos.id = RecursosMarcadosInadecuado.idRecurso WHERE Recursos.idUsuario = {0}", user.id);
                foreach (int numberMarksInappropriateResources in numbersMarksInappropriateResources)
                {
                    user.cantRecursosMarcadosInadecuados = numberMarksInappropriateResources;
                }

                // get number of disabled resources.
                IEnumerable<int> numbersDisabledResources = indignadoContext.ExecuteQuery<int>
                    ("SELECT COUNT(*) FROM Recursos WHERE (idUsuario = {0}) AND (deshabilitado = {1})", user.id, 1);
                foreach (int numberDisabledResources in numbersDisabledResources)
                {
                    user.cantRecursosDeshabilitados = numberDisabledResources;
                }

                // add user to the collection.
                usersCol.Add(user);
            }

            // return the users collection.
            return usersCol;
        }
コード例 #10
0
        // gets the theme categories.
        public Collection<CategoriasTematica> listThemeCategories()
        {
            // only get theme categories from this movement.
            IndignadoDBDataContext indignadoContext = new IndignadoDBDataContext();
            IEnumerable<CategoriasTematica> themeCategoriesEnum = indignadoContext.ExecuteQuery<CategoriasTematica>
                ("SELECT id, idMovimiento, titulo, descripcion FROM CategoriasTematicas WHERE idMovimiento = {0}", IdMovement);

            Collection<CategoriasTematica> themeCategoriesCol = new Collection<CategoriasTematica>();
            foreach (CategoriasTematica themeCategory in themeCategoriesEnum)
            {
                // add item to the collection
                themeCategoriesCol.Add(themeCategory);
            }

            // return the collection
            return themeCategoriesCol;
        }
コード例 #11
0
        // convert users enumerable to collection.
        private Collection<Recurso> toResourcesCol(IEnumerable<Recurso> resourcesEnum)
        {
            IndignadoDBDataContext indignadoContext = new IndignadoDBDataContext();

            // create new resources collection.
            Collection<Recurso> recursosCol = new Collection<Recurso>();

            // for each resource in the enumerable, ...
            foreach (Recurso resource in resourcesEnum)
            {
                // get number of likes
                IEnumerable<int> numbersLikes = indignadoContext.ExecuteQuery<int>("SELECT COUNT(*) FROM Aprobaciones WHERE idRecurso = {0}", resource.id);
                foreach (int numberLikes in numbersLikes)
                {
                    resource.cantAprobaciones = numberLikes;
                }

                /*
                // get number of marks as inappropriate
                IEnumerable<int> numbersMarksInappropriate = indignadoContext.ExecuteQuery<int>("SELECT COUNT(*) FROM MarcasInadecuados WHERE idRecurso = {0}", resource.id);
                foreach (int numberMarksInappropriate in numbersMarksInappropriate)
                {
                    resource.cantMarcasInadecuado = numberMarksInappropriate;
                }
                 * */

                // add item to the collection
                recursosCol.Add(resource);
            }

            return recursosCol;
        }
コード例 #12
0
 // gets the rss resources.
 public DTRssSourcesCol listRssSources()
 {
     DTRssSourcesCol result = new DTRssSourcesCol();
     result.items = new Collection<DTRssSource>();
     IndignadoDBDataContext indignadoContext = new IndignadoDBDataContext();
     IEnumerable<RssFeed> ressEnum = indignadoContext.ExecuteQuery<RssFeed>("SELECT * FROM RssFeeds WHERE idMovimiento = {0}", IdMovement);
     foreach (RssFeed rss in ressEnum)
     {
         DTRssSource dtRss = new DTRssSource();
         dtRss.tag = rss.tag;
         dtRss.url = rss.url;
         dtRss.title = rss.titulo;
         result.items.Add(dtRss);
     }
     return result;
 }
コード例 #13
0
 // returns all users.
 public Collection<Usuario> getUsersListFull()
 {
     IndignadoDBDataContext indignadoContext = new IndignadoDBDataContext();
     IEnumerable<Usuario> usersEnum = indignadoContext.ExecuteQuery<Usuario>
         ("SELECT * FROM Usuarios WHERE (idMovimiento = {0}) AND (privilegio = {1})", IdMovement, 0);
     return toUsersCol(usersEnum);
 }
コード例 #14
0
        // returns all the data of the user.
        public Usuario getUser(Usuario user)
        {
            IndignadoDBDataContext indignadoContext = new IndignadoDBDataContext();
            Usuario userFull = indignadoContext.Usuarios.SingleOrDefault(u => (u.id == user.id));

            // get number of resources marked as inappropriate.
            IEnumerable<int> numbersMarksInappropriateResources = indignadoContext.ExecuteQuery<int>
                ("SELECT COUNT(*) FROM (SELECT idRecurso FROM MarcasInadecuados GROUP BY idRecurso) RecursosMarcadosInadecuado LEFT JOIN Recursos ON Recursos.id = RecursosMarcadosInadecuado.idRecurso WHERE Recursos.idUsuario = {0}", userFull.id);
            foreach (int numberMarksInappropriateResources in numbersMarksInappropriateResources)
            {
                userFull.cantRecursosMarcadosInadecuados = numberMarksInappropriateResources;
            }

            // get number of disabled resources.
            IEnumerable<int> numbersDisabledResources = indignadoContext.ExecuteQuery<int>
                ("SELECT COUNT(*) FROM Recursos WHERE (idUsuario = {0}) AND (deshabilitado = {1})", userFull.id, 1);
            foreach (int numberDisabledResources in numbersDisabledResources)
            {
                userFull.cantRecursosDeshabilitados = numberDisabledResources;
            }

            return userFull;
        }
コード例 #15
0
 // returns all resources published by the given user.
 public Collection<Recurso> getResourcesListUser(Usuario user)
 {
     IndignadoDBDataContext indignadoContext = new IndignadoDBDataContext();
     IEnumerable<Recurso> resourcesEnum = indignadoContext.ExecuteQuery<Recurso>
         ("SELECT Recursos.id, Recursos.idUsuario, Usuarios.apodo AS apodoUsuario, titulo, descripcion, fecha, tipo, urlLink, urlImage, urlVideo, urlThumb, deshabilitado, CantAprobaciones.cantAprobaciones, CantMarcasInadecuados.cantMarcasInadecuado FROM Recursos LEFT JOIN Usuarios ON (Usuarios.id = Recursos.idUsuario) LEFT JOIN (SELECT idRecurso, COUNT (idUsuario) AS cantAprobaciones FROM Aprobaciones GROUP BY idRecurso) CantAprobaciones ON (CantAprobaciones.idRecurso = Recursos.id) LEFT JOIN (SELECT idRecurso, COUNT (idUsuario) AS cantMarcasInadecuado FROM MarcasInadecuados GROUP BY idRecurso) CantMarcasInadecuados ON (CantMarcasInadecuados.idRecurso = Recursos.id) WHERE (Usuarios.id = {0}) ORDER BY CantMarcasInadecuados.cantMarcasInadecuado DESC, Recursos.id DESC", user.id);
     return toResourcesCol(resourcesEnum);
 }
コード例 #16
0
 // returns all resources enabled.
 public Collection<Recurso> getResourcesListEnabled()
 {
     // get all resources from this movement.
     IndignadoDBDataContext indignadoContext = new IndignadoDBDataContext();
     IEnumerable<Recurso> resourcesEnum = indignadoContext.ExecuteQuery<Recurso>
         //("SELECT Recursos.id, Recursos.idUsuario, Usuarios.apodo AS apodoUsuario, titulo, descripcion, fecha, tipo, urlLink, urlImage, urlVideo, urlThumb, deshabilitado FROM Recursos LEFT JOIN Usuarios ON (Usuarios.id = Recursos.idUsuario) WHERE (Usuarios.idMovimiento = {0}) AND (Recursos.deshabilitado = {1})", IdMovement, 0);
         ("SELECT Recursos.id, Recursos.idUsuario, Usuarios.apodo AS apodoUsuario, titulo, descripcion, fecha, tipo, urlLink, urlImage, urlVideo, urlThumb, deshabilitado, CantAprobaciones.cantAprobaciones, CantMarcasInadecuados.cantMarcasInadecuado FROM Recursos LEFT JOIN Usuarios ON (Usuarios.id = Recursos.idUsuario) LEFT JOIN (SELECT idRecurso, COUNT (idUsuario) AS cantAprobaciones FROM Aprobaciones GROUP BY idRecurso) CantAprobaciones ON (CantAprobaciones.idRecurso = Recursos.id) LEFT JOIN (SELECT idRecurso, COUNT (idUsuario) AS cantMarcasInadecuado FROM MarcasInadecuados GROUP BY idRecurso) CantMarcasInadecuados ON (CantMarcasInadecuados.idRecurso = Recursos.id) WHERE (Usuarios.idMovimiento = {0}) AND (Recursos.deshabilitado = {1}) ORDER BY CantMarcasInadecuados.cantMarcasInadecuado DESC, Recursos.id DESC", IdMovement, 0);
     return toResourcesCol(resourcesEnum);
 }