Esempio n. 1
0
        public async Task <IActionResult> PutEntrada(int id, EntradaRegistrationDTO entrada)
        {
            if (id != entrada.IdEntrada)
            {
                return(BadRequest());
            }

            Entrada entradaR = new Entrada()
            {
                IdEntrada = entrada.IdEntrada,
                IdEntidad = entrada.IdEntidad,
                Titulo    = entrada.Titulo,
                Texto     = entrada.Texto,
                IdUsuario = entrada.IdUsuario,
                CreatedAt = entrada.CreatedAt,
                UpdatedAt = DateTime.Now
            };

            _context.Entry(entradaR).State = EntityState.Modified;

            if (entrada.ListaCategorias != null && entrada.ListaCategorias.Count > 0)
            {
                var entradas = _context.EntradaCategorias.Where(x => x.IdEntrada == id).AsEnumerable();
                _context.EntradaCategorias.RemoveRange(entradas);
                foreach (int i in entrada.ListaCategorias)
                {
                    if (await _context.Categorias.FirstOrDefaultAsync(x => x.IdCategoria == i) != null)
                    {
                        var entradaCategoria = new EntradaCategoria
                        {
                            IdCategoria = i,
                            IdEntrada   = entrada.IdEntrada
                        };
                        _context.EntradaCategorias.Add(entradaCategoria);
                    }
                }
            }

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!EntradaExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Esempio n. 2
0
        public async Task <ActionResult <Entrada> > PostEntrada(EntradaRegistrationDTO entradaDTO)
        {
            if (entradaDTO.ListaCategorias == null || entradaDTO.ListaCategorias.Count == 0)
            {
                return(BadRequest("Se necesitan de una o más categorias"));
            }

            var clientTexto      = new HttpClient();
            var queryStringTexto = HttpUtility.ParseQueryString(string.Empty);

            // Request headers
            clientTexto.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "399faba124ec4fbfbef082c9f76267e3");
            // Request parameters
            queryStringTexto["classify"] = "true";
            var uriTexto = "https://miactlan.cognitiveservices.azure.com/contentmoderator/moderate/v1.0/ProcessText/Screen?" + queryStringTexto;

            HttpResponseMessage responseTexto;
            string textoAEvaluar = entradaDTO.Titulo + " " + entradaDTO.Texto;

            responseTexto = await clientTexto.PostAsync(uriTexto, new StringContent(textoAEvaluar, Encoding.UTF8, "text/plain"));

            var responseTextoText = await responseTexto.Content.ReadAsStringAsync();

            var resultTexto = JsonConvert.DeserializeObject <TextApiResponse>(responseTextoText);

            if (resultTexto.Terms.Count > 0)
            {
                return(BadRequest("El texto contiene palabras ofensivas."));
            }

            Entrada entrada = new Entrada()
            {
                Titulo    = entradaDTO.Titulo,
                Texto     = entradaDTO.Texto,
                IdEntidad = entradaDTO.IdEntidad,
                IdUsuario = entradaDTO.IdUsuario,
                CreatedAt = DateTime.Now,
                UpdatedAt = DateTime.Now
            };

            _context.Entradas.Add(entrada);

            await _context.SaveChangesAsync();

            foreach (int i in entradaDTO.ListaCategorias)
            {
                if (await _context.Categorias.FirstOrDefaultAsync(x => x.IdCategoria == i) != null)
                {
                    var entradaCategoria = new EntradaCategoria
                    {
                        IdCategoria = i,
                        IdEntrada   = entrada.IdEntrada
                    };
                    _context.EntradaCategorias.Add(entradaCategoria);
                }
            }

            await _context.SaveChangesAsync();

            return(Ok(entrada));
        }