public AlmacenadorArticuloTests()
        {
            CategoriaTopicoModel cattop1 = new CategoriaTopicoModel();
            CategoriaTopicoModel cattop2 = new CategoriaTopicoModel();

            cattop1.nombreCategoriaPK = "Fisica";
            cattop1.nombreCategoriaPK = "Fisica nuclear";
            cattop2.nombreCategoriaPK = "Medicina";
            cattop2.nombreTopicoPK    = "Medicina nuclear";

            listaModels = new List <CategoriaTopicoModel>();
            listaModels.Add(cattop1);
            listaModels.Add(cattop2);

            listaAutores = new List <string>();
            listaAutores.Add("kwang");
            listaAutores.Add("kev");

            listaTopicosString = new List <string>();
            listaTopicosString.Add("Fisica: Fisica nuclear");
            listaTopicosString.Add("Medicina: Medicina nuclear");

            articulo                  = new ArticuloModel();
            articulo.contenido        = "Blablablabla";
            articulo.fechaPublicacion = "2020/5/3";
        }
        public List <ArticuloModel> BuscarArticulo(SolicitudBusquedaModel solicitud)
        {
            List <ArticuloModel> articulos = new List <ArticuloModel>();

            if (solicitud.tipoBusqueda == "topicos")
            {
                foreach (string catTop in solicitud.topicos)
                {
                    string[] separacion = catTop.Split(": ");

                    CategoriaTopicoModel modelo = new CategoriaTopicoModel()
                    {
                        nombreCategoriaPK = separacion[0],
                        nombreTopicoPK    = separacion[1]
                    };

                    articulos.AddRange(buscadorArticuloDBHandler.GetArticulosPorTopicoYTipo(modelo, solicitud.tiposArticulo));
                }

                articulos = articulos.Distinct(new ItemEqualityComparer()).ToList();
            }
            else if (solicitud.tipoBusqueda == "titulos")
            {
                articulos = buscadorArticuloDBHandler.GetArticulosPorTituloYTipo(solicitud.textoBusqueda, solicitud.tiposArticulo);
            }
            else
            {
                articulos = buscadorArticuloDBHandler.GetArticulosPorAutorYTipo(solicitud.textoBusqueda, solicitud.tiposArticulo).Distinct(new ItemEqualityComparer()).ToList();
            }

            return(articulos);
        }
Example #3
0
        public List <CategoriaTopicoModel> GetCategoriasTopicosArticulo(int id)
        {
            List <CategoriaTopicoModel> categoriaTopicos = new List <CategoriaTopicoModel>();

            String connectionString = AppSettings.GetConnectionString();

            String nombreUSP = "USP_GetCategoriasTopicosArticulo";

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                using (SqlCommand command = new SqlCommand(nombreUSP, connection))
                {
                    connection.Open();
                    command.CommandType = CommandType.StoredProcedure;
                    command.Parameters.AddWithValue("@idArticuloPK", id);


                    SqlDataReader reader = command.ExecuteReader();

                    while (reader.Read())
                    {
                        CategoriaTopicoModel categoriaTopico = new CategoriaTopicoModel()
                        {
                            nombreCategoriaPK = (string)reader["nombreCategoriaFK"],
                            nombreTopicoPK    = (string)reader["nombreTopicoFK"]
                        };
                        categoriaTopicos.Add(categoriaTopico);
                    }
                }
            }
            return(categoriaTopicos);
        }
        public List <CategoriaTopicoModel> GetCategoriasYTopicos()
        {
            List <CategoriaTopicoModel> lista = new List <CategoriaTopicoModel>();

            string connectionString = AppSettings.GetConnectionString();

            using (SqlConnection sqlConnection = new SqlConnection(connectionString))
            {
                string sqlString = @"SELECT nombreCategoriaPK, nombreTopicoPK
									FROM CategoriaTopico
                                    ORDER BY nombreCategoriaPK, nombreTopicoPK";

                sqlConnection.Open();
                using (SqlCommand sqlCommand = new SqlCommand(sqlString, sqlConnection))
                {
                    using (SqlDataReader dataReader = sqlCommand.ExecuteReader())
                    {
                        while (dataReader.Read())
                        {
                            CategoriaTopicoModel categoriaTopico = new CategoriaTopicoModel()
                            {
                                nombreCategoriaPK = (string)dataReader["nombreCategoriaPK"],
                                nombreTopicoPK    = (string)dataReader["nombreTopicoPK"]
                            };

                            lista.Add(categoriaTopico);
                        }
                    }
                }
            }
            return(lista);
        }
        public void TestsBuscarArticuloPorTopico()
        {
            // Arrange
            List <string> topicos      = new List <string>();
            string        tipoBusqueda = "topicos";

            topicos.Add("Fisica: Fisica Cuantica");
            topicos.Add("Fisica: Fisica Nuclear");
            int    tipoArt = 0;
            string textB   = "";

            SolicitudBusquedaModel solicitud = new SolicitudBusquedaModel(tipoBusqueda, topicos, tipoArt, textB);

            CategoriaTopicoModel categoriaTopico1 = new CategoriaTopicoModel();
            CategoriaTopicoModel categoriaTopico2 = new CategoriaTopicoModel();

            categoriaTopico1.nombreCategoriaPK = "Fisica";
            categoriaTopico1.nombreTopicoPK    = "Fisica Cuantica";
            categoriaTopico2.nombreCategoriaPK = "Fisica";
            categoriaTopico2.nombreTopicoPK    = "Fisica Nuclear";

            List <ArticuloModel> mockArticulos1 = new List <ArticuloModel> {
                new ArticuloModel {
                    articuloAID = 1, titulo = "prueba", calificacionTotalMiem = 0, contenido = "contenido",
                    estado      = "publicado", fechaPublicacion = "2020-06-20", resumen = "resumen", tipo = "Corto", visitas = 0
                },
                new ArticuloModel {
                    articuloAID = 2, titulo = "prueba", calificacionTotalMiem = 0, contenido = "contenido",
                    estado      = "publicado", fechaPublicacion = "2020-06-20", resumen = "resumen", tipo = "Corto", visitas = 0
                },
            };

            List <ArticuloModel> mockArticulos2 = new List <ArticuloModel> {
                new ArticuloModel {
                    articuloAID = 3, titulo = "prueba", calificacionTotalMiem = 0, contenido = "contenido",
                    estado      = "publicado", fechaPublicacion = "2020-06-20", resumen = "resumen", tipo = "Corto", visitas = 0
                },
                new ArticuloModel {
                    articuloAID = 4, titulo = "prueba", calificacionTotalMiem = 0, contenido = "contenido",
                    estado      = "publicado", fechaPublicacion = "2020-06-20", resumen = "resumen", tipo = "Corto", visitas = 0
                },
            };

            var mockDBHandler = new Mock <IBuscadorArticuloDBHandler>();

            mockDBHandler.Setup(x => x.GetArticulosPorTopicoYTipo(It.Is <CategoriaTopicoModel>(t => t.nombreCategoriaPK == "Fisica" && t.nombreTopicoPK == "Fisica Cuantica"), tipoArt)).Returns(mockArticulos1);
            mockDBHandler.Setup(x => x.GetArticulosPorTopicoYTipo(It.Is <CategoriaTopicoModel>(t => t.nombreCategoriaPK == "Fisica" && t.nombreTopicoPK == "Fisica Nuclear"), tipoArt)).Returns(mockArticulos2);

            var controller = new BuscadorArticuloController(mockDBHandler.Object);

            // Act
            var articulos = controller.BuscarArticulo(solicitud);

            // Assert
            Assert.AreEqual(articulos[0].articuloAID, 1);
            Assert.AreEqual(articulos[1].articuloAID, 2);
            Assert.AreEqual(articulos[2].articuloAID, 3);
            Assert.AreEqual(articulos[3].articuloAID, 4);
        }
        public void GuardarArticulo(ArticuloModel articulo, List <string> usernamePKMiembrosAutores, List <string> categoriaTopicoStrings)
        {
            if (articulo != null && usernamePKMiembrosAutores.Count > 0 && categoriaTopicoStrings.Count > 0)
            {
                List <CategoriaTopicoModel> listaModels = new List <CategoriaTopicoModel>();

                foreach (string catTop in categoriaTopicoStrings)
                {
                    string[] separacion = catTop.Split(": ");

                    CategoriaTopicoModel modelo = new CategoriaTopicoModel()
                    {
                        nombreCategoriaPK = separacion[0],
                        nombreTopicoPK    = separacion[1]
                    };

                    listaModels.Add(modelo);
                }

                almacenadorArticuloDBHandler.GuardarArticulo(articulo, usernamePKMiembrosAutores, listaModels);
            }
        }
        public void EditarArticulo(ArticuloModel articulo, List <string> usernamePKMiembrosAutores, List <string> listaCategoriaTopicoStrings, string rutaCarpeta)
        {
            List <CategoriaTopicoModel> listaModels = new List <CategoriaTopicoModel>();

            foreach (string catTop in listaCategoriaTopicoStrings)
            {
                string[] separacion = catTop.Split(": ");

                CategoriaTopicoModel modelo = new CategoriaTopicoModel()
                {
                    nombreCategoriaPK = separacion[0],
                    nombreTopicoPK    = separacion[1]
                };

                listaModels.Add(modelo);
            }

            editorArticuloDBHandler.EditarArticulo(articulo, usernamePKMiembrosAutores, listaModels);

            if (articulo.tipo == "Largo")
            {
                administradorDeArchivosFSHandler.BorrarViejoArchivo(articulo.articuloAID, rutaCarpeta);
            }
        }
        public List <ArticuloModel> GetArticulosPorTopicoYTipo(CategoriaTopicoModel catTop, int tipos)
        {
            String connectionString = AppSettings.GetConnectionString();

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();

                SqlCommand cmd;

                string tipoArt = "";

                switch (tipos)
                {
                case 1:
                    tipoArt = "Corto";
                    break;

                case 2:
                    tipoArt = "Largo";
                    break;

                case 3:
                    tipoArt = "Link";
                    break;

                default:
                    tipoArt = "";
                    break;
                }

                cmd             = new SqlCommand("USP_GetArticulosPorTopicoYTipo", connection);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@categoria", catTop.nombreCategoriaPK);
                cmd.Parameters.AddWithValue("@topico", catTop.nombreTopicoPK);
                cmd.Parameters.AddWithValue("@tipo", tipoArt);

                SqlDataReader reader = cmd.ExecuteReader();

                List <ArticuloModel> artList = new List <ArticuloModel>();

                while (reader.Read())
                {
                    ArticuloModel articuloActual = new ArticuloModel()
                    {
                        articuloAID           = (int)reader["articuloAID"],
                        titulo                = (String)reader["titulo"],
                        tipo                  = (String)reader["tipo"],
                        fechaPublicacion      = reader["fechaPublicacion"].ToString().Remove(reader["fechaPublicacion"].ToString().Length - 12, 12),
                        resumen               = (String)reader["resumen"],
                        contenido             = (String)reader["contenido"],
                        estado                = (String)reader["estado"],
                        visitas               = (int)reader["visitas"],
                        puntajeTotalRev       = (!DBNull.Value.Equals(reader["puntajeTotalRev"])) ? (double?)reader["puntajeTotalRev"] : null,
                        calificacionTotalMiem = (int)reader["calificacionTotalMiem"]
                    };

                    artList.Add(articuloActual);
                }

                reader.Close();

                return(artList);
            }
        }
        public List <CategoriaTopicoModel> GetCategoriasTopicosNoAsociadosRol(string rol)
        {
            List <CategoriaTopicoModel> lista = new List <CategoriaTopicoModel>();

            if (rol == "") //Todos lo roles
            {
                string connectionString = AppSettings.GetConnectionString();
                using (SqlConnection sqlConnection = new SqlConnection(connectionString))
                {
                    string sqlString = @"SELECT CT.nombreCategoriaPK, CT.nombreTopicoPK
                                        FROM [dbo].[CategoriaTopico] CT
                                        WHERE CT.nombreCategoriaPK + ' ' + CT.nombreTopicoPK NOT IN (SELECT ATT.nombreCategoriaFK + ' ' + ATT.nombreTopicoFK
															                                        FROM [dbo].[ArticuloTrataTopico] ATT
															                                        JOIN [dbo].[Articulo] A
																                                        ON ATT.idArticuloFK = A.articuloAID
															                                        JOIN [dbo].[MiembroAutorDeArticulo] MAA
																                                        ON A.articuloAID = MAA.idArticuloFK
															                                        JOIN [dbo].[Miembro] M
																                                        ON MAA.usernameMiemFK = M.usernamePK
															                                        WHERE A.estado = 'Publicado')"                                                            ;

                    sqlConnection.Open();
                    using (SqlCommand sqlCommand = new SqlCommand(sqlString, sqlConnection))
                    {
                        using (SqlDataReader dataReader = sqlCommand.ExecuteReader())
                        {
                            while (dataReader.Read())
                            {
                                CategoriaTopicoModel categoriaTopico = new CategoriaTopicoModel()
                                {
                                    nombreCategoriaPK = (string)dataReader["nombreCategoriaPK"],
                                    nombreTopicoPK    = (string)dataReader["nombreTopicoPK"]
                                };

                                lista.Add(categoriaTopico);
                            }
                        }
                    }
                }
            }
            else
            {
                string connectionString = AppSettings.GetConnectionString();
                using (SqlConnection sqlConnection = new SqlConnection(connectionString))
                {
                    string sqlString = @"SELECT CT.nombreCategoriaPK, CT.nombreTopicoPK
                                        FROM [dbo].[CategoriaTopico] CT
                                        WHERE CT.nombreCategoriaPK + ' ' + CT.nombreTopicoPK NOT IN (SELECT ATT.nombreCategoriaFK + ' ' + ATT.nombreTopicoFK
															                                        FROM [dbo].[ArticuloTrataTopico] ATT
															                                        JOIN [dbo].[Articulo] A
																                                        ON ATT.idArticuloFK = A.articuloAID
															                                        JOIN [dbo].[MiembroAutorDeArticulo] MAA
																                                        ON A.articuloAID = MAA.idArticuloFK
															                                        JOIN [dbo].[Miembro] M
																                                        ON MAA.usernameMiemFK = M.usernamePK
															                                        WHERE A.estado = 'Publicado'
																                                        AND M.nombreRolFK = @rol)"                                                                ;

                    sqlConnection.Open();
                    using (SqlCommand sqlCommand = new SqlCommand(sqlString, sqlConnection))
                    {
                        sqlCommand.Parameters.AddWithValue("@rol", rol);
                        using (SqlDataReader dataReader = sqlCommand.ExecuteReader())
                        {
                            while (dataReader.Read())
                            {
                                CategoriaTopicoModel categoriaTopico = new CategoriaTopicoModel()
                                {
                                    nombreCategoriaPK = (string)dataReader["nombreCategoriaPK"],
                                    nombreTopicoPK    = (string)dataReader["nombreTopicoPK"]
                                };

                                lista.Add(categoriaTopico);
                            }
                        }
                    }
                }
            }

            return(lista);
        }