Esempio n. 1
0
        public async Task <IEnumerable <Publicacion> > getData(DataServerSide ss)
        {
            List <Publicacion> ListPublicacion = new List <Publicacion>();

            try
            {
                var v = (from a in
                         _ctx.Publicacion.Where(e => e.EstadoFlujoId == 3 || e.EstadoFlujoId == 11 || e.EstadoFlujoId == 12 || e.EstadoFlujoId == 13)
                         .Include(e => e.Revista)
                         .Include(e => e.Ambito)
                         .Include(e => e.NivelPublicacion)
                         .Include(e => e.EstadoPublicacion)
                         .OrderByDescending(e => e.FechaPublicacion)

                         select a);

                ss.recordsTotal = v.Count();



                if (!String.IsNullOrEmpty(ss.Titulo)) //busqueda por titulo
                {
                    var listaDA = await GetDALikeTituloNuevo(ss.Titulo);

                    v = v.Where(e => listaDA.Contains(e.PublicacionId));
                }

                if (!String.IsNullOrEmpty(ss.porContenido))
                {
                    v = v.Where(e => e.RevistaId.ToString().Equals(ss.porContenido));
                }

                if (!string.IsNullOrEmpty(ss.Autor)) //Autor externo
                {
                    var AutoresE = await GetPKAutorExternoByCollateLatin1(ss.Autor);

                    v = v.Where(e => AutoresE.Contains(e.PublicacionId));
                }

                if (!string.IsNullOrEmpty(ss.Becario)) //Tomado como autor interno
                {
                    var entiti = await _ctx.AutorIIEPublicacion
                                 .Where(e => e.ClavePersona.ToString().Contains(ss.Becario) &&
                                        (e.Publicacion.EstadoFlujoId == 3 || e.Publicacion.EstadoFlujoId == 11 || e.Publicacion.EstadoFlujoId == 12 || e.Publicacion.EstadoFlujoId == 13))
                                 .Include(e => e.Publicacion)
                                 .AsNoTracking().ToListAsync();

                    if (entiti.Count == 0)
                    {
                        var reg = new AutorIIEPublicacion();
                        reg.PublicacionId = -1;
                        v = v.Where(e => e.PublicacionId == reg.PublicacionId &&
                                    (e.EstadoFlujoId == 3 || e.EstadoFlujoId == 11 || e.EstadoFlujoId == 12 || e.EstadoFlujoId == 13)
                                    );
                    }
                    else
                    {
                        HashSet <String> claves = null;
                        var registros           = entiti.Select(x => x.PublicacionId.ToString()).ToList();
                        claves = new HashSet <String>(registros);


                        v = v.Where(e =>
                                    claves.Contains(e.PublicacionId.ToString()) &&
                                    (e.EstadoFlujoId == 3 || e.EstadoFlujoId == 11 || e.EstadoFlujoId == 12 || e.EstadoFlujoId == 13)
                                    );
                    }
                }



                if (!string.IsNullOrEmpty(ss.searchValue))
                {
                    var p = ss.searchValue.ToLower();

                    var listaDA = await GetDALikeTituloNuevo(ss.searchValue);

                    var listaDR = await GetDALikeRevista(ss.searchValue);

                    v = v.Where(e => listaDA.Contains(e.PublicacionId) || listaDR.Contains(e.RevistaId) || e.FechaPublicacion.ToString().Contains(p));
                }


                if (!(string.IsNullOrEmpty(ss.sortColumn) && string.IsNullOrEmpty(ss.sortColumnDir)))
                {
                    v = v.OrderBy(ss.sortColumn + " " + ss.sortColumnDir);
                }
                ss.recordsFiltered = v.Count();
                entities           = await v.Skip(ss.skip).Take(ss.pageSize).AsNoTracking().ToListAsync();

                return(entities.OrderByDescending(e => e.FechaPublicacion));
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
Esempio n. 2
0
                                                                 [Authorize] public async Task <IHttpActionResult> Create(AutorIIEPublicacion Obj)
                                                                 {
                                                                     try { log.Info(new MDCSet(this.ControllerContext.RouteData));
                                                                           var result = await _repository.Create(Obj);

                                                                           return(Ok(result)); }
                                                                     catch (Exception e) { log.Error(new MDCSet(this.ControllerContext.RouteData), e);

                                                                                           return(InternalServerError(e)); }
                                                                 }
                                                               public async Task <AutorIIEPublicacion> Create(AutorIIEPublicacion Obj)
                                                               {
                                                                   try
                                                                   {
                                                                       var result = _ctx.AutorIIEPublicacion.Add(Obj);
                                                                       await _ctx.SaveChangesAsync();

                                                                       return(result);
                                                                   }
                                                                   catch (Exception e)
                                                                   {
                                                                       throw new Exception(e.Message, e);
                                                                   }
                                                               }