Esempio n. 1
0
        public IActionResult VratiSveZahtjeve([FromQuery] ListaZahtjevaRequestModel model)
        {
            var result = zahtjevService.VratiSveZahtjeve(model);

            return(Convert(result));
        }
Esempio n. 2
0
        public ServiceResult <ZahtjevListModel> VratiSveZahtjeve(ListaZahtjevaRequestModel model)
        {
            //var securityLevel = new SecurityLevel();
            var trenutni = authService.TrenutniKorisnik();

            //var ulopga = trenutni.TrenutnaUloga.Naziv;
            var query = Enumerable.Empty <Zahtjev>().AsQueryable();

            //var query = new IQueryable<Zahtjev>();


            if (trenutni.TrenutnaUloga.VrijednostUAplikaciji == (int)Uloga.Administrator)
            {
                query = context.Zahtjevi.Where(z => !z.IsDeleted)
                        .AsQueryable();
            }
            else if (trenutni.TrenutnaUloga.VrijednostUAplikaciji == (int)Uloga.Moderator)
            {
                var ulogaId = context.Uloge.Where(a => a.VrijednostUAplikaciji == (int)Uloga.Moderator).Select(a => a.Id).FirstOrDefault();

                var korisnikUlogaId = context.KorisnikUloge.Where(a => a.KorisnickoIme == trenutni.KorisnickoIme && a.UlogaId == ulogaId).Select(a => a.KorisnikUlogaId).FirstOrDefault();

                var projekti = context.KorisnikProjekti.Where(a => a.KorisnikUlogaId == korisnikUlogaId).Select(a => a.ProjekatId).ToList();

                query = context.Zahtjevi.Where(a => projekti.Contains(a.ProjekatId) && !a.IsDeleted).AsQueryable();
            }
            else if (trenutni.TrenutnaUloga.VrijednostUAplikaciji == (int)Uloga.Support)
            {
                var kategorije = context.KorisnikKategorije.Where(a => a.KorisnickoIme == trenutni.KorisnickoIme).Select(a => a.ZahtjevKategorijaId).ToList();

                query = context.Zahtjevi.Where(a => kategorije.Contains(a.ZahtjevKategorijaId) && !a.IsDeleted).AsQueryable();
            }
            else if (trenutni.TrenutnaUloga.VrijednostUAplikaciji == (int)Uloga.TaskUser)
            {
                query = context.Zahtjevi.Where(a => a.CreatedBy == trenutni.KorisnickoIme && !a.IsDeleted).AsQueryable();
            }


            //query = Secure(query, securityLevel);

            //filtriranje po vremenu
            if (model.PrethodniBrojDana != null)
            {
                //ako je npr. PrethodniBrojDana 1, vraca sve zahtjeve i za jucerasnji dan, a ne npr. u zadnja 24 sata
                DateTime dateTime = DateTime.Today;

                var pocetakProvjere = dateTime.AddDays(-(int)model.PrethodniBrojDana);
                query = query.Where(z => z.DatumKreiranja >= pocetakProvjere);
            }

            if (!model.Done)
            {
                query = query.Where(z => z.ZahtjevStatus.Oznaka != (int)OznakeStatusa.Done);
            }

            if (!model.InProgress)
            {
                query = query.Where(z => z.ZahtjevStatus.Oznaka != (int)OznakeStatusa.InProgress);
            }

            if (!model.ToDo)
            {
                query = query.Where(z => z.ZahtjevStatus.Oznaka != (int)OznakeStatusa.ToDo);
            }

            // uradi filtriranje po projektu
            if (model.ProjekatId != null)
            {
                query = query.Where(s => s.ProjekatId == model.ProjekatId);
            }

            // uradi filtriranje po dijelu projekta
            if (model.DioProjektaId != null)
            {
                query = query.Where(s => s.ZahtjevKategorija.DioProjektaId == model.DioProjektaId);
            }
            // uradi filtriranje po kategoriji zahtjeva
            if (model.KategorijaId != null)
            {
                query = query.Where(s => s.ZahtjevKategorijaId == model.KategorijaId);
            }

            // uradi filtriranje po tipu zahtjeva
            if (model.TipId != null)
            {
                query = query.Where(s => s.ZahtjevTipId == model.TipId);
            }

            // uradi filtriranje po prioritetu zahtjeva
            if (model.PrioritetId != null)
            {
                query = query.Where(s => s.ZahtjevPrioritetId == model.PrioritetId);
            }

            // uradi filtriranje po statusu zahtjeva
            if (model.StatusId != null)
            {
                query = query.Where(s => s.ZahtjevStatusId == model.StatusId);
            }



            if (!String.IsNullOrWhiteSpace(model.Naziv))
            {
                var lowerNaziv = model.Naziv.ToLower();
                query = query.Where(s => s.Naziv.ToLower().Contains(lowerNaziv));
            }
            // uradi filtriranje po opisu zahtjeva
            if (!String.IsNullOrWhiteSpace(model.Opis))
            {
                var lowerOpis = model.Opis.ToLower();
                query = query.Where(s => s.Opis.ToLower().Contains(lowerOpis));
            }

            // uradi filtriranje po nazivu korisnika
            if (!String.IsNullOrWhiteSpace(model.CreatedBy))
            {
                var lowerCreatedBy = model.CreatedBy.ToLower();
                query = query.Where(s => s.CreatedBy.ToLower().Contains(lowerCreatedBy));
            }



            var zahtjevi = query.ToZahtjevListModelItem().OrderByDescending(d => d.DatumKreiranja).OrderBy(a => a.ZahtjevStatus)
                           .ToList();

            if (zahtjevi == null)
            {
                return(NotFound());
            }

            var total = zahtjevi.Count();

            if (!model.Sve)
            {
                zahtjevi = zahtjevi.Skip(model.Page * model.Count - model.Count)
                           .Take(model.Count).ToList();
            }
            var result = new ZahtjevListModel
            {
                Items = zahtjevi,
                Page  = model.Page,
                Total = total
            };

            return(Ok(result));
        }