private IQueryable <GrupaVMs.GrupaCardListItemVM> GetInitGrupaQuery(int?kategorijaId, GrupaStatus status, int start, int length) { var query = _db.Grupe .Where(w => (kategorijaId ?? 0) == 0 || w.Kurs.KursTip.KursKategorija.KursKategorijaId == kategorijaId); query = query.Where(w => (w.Status == status)); var query1 = query.Select(s => new GrupaVMs.GrupaCardListItemVM() { GrupaId = s.GrupaId, Naziv = s.Naziv, Pocetak = s.Pocetak.ToString("d/M/yyyy H:mm"), Kraj = s.Kraj != null ? ((DateTime)s.Kraj).ToString("d/M/yyyy") : "", Casova = s.Casova ?? s.Kurs.KursTip.Casova, Cijena = (s.Cijena ?? s.Kurs.KursTip.Cijena) + "KM", Slika = s.Slika.SlikaFile, SlikaUrl = s.Slika.SlikaUrl, KursKategorijaNaziv = s.Kurs.KursTip.KursKategorija.Naziv, KursTipNaziv = s.Kurs.KursTip.Naziv, KursNaziv = s.Kurs.Naziv, ZaposlenikNaziv = s.Zaposlenik.Osoba.Ime + " " + s.Zaposlenik.Osoba.Prezime, CentarId = s.CentarId, CentarLokacija = s.Centar.Grad.Naziv, KandidataPrijavljeno = _db.GrupaKandidati.Count(w => w.GrupaId == s.GrupaId), //Ocjena = 3.3D // _db.Ocjene.Where(w =>w.GrupaKandidati.GrupaId == s.GrupaId).Average(a=>a.Vrijednost) ovo pravi gresku //Ocjena = _db.Ocjene.Where(w => w.GrupaKandidati.GrupaId == s.GrupaId).DefaultIfEmpty().Average(a=>a==null?0D:a.Vrijednost) Ocjena = _db.Ocjene.Where(w => !w.Silenced && w.GrupaKandidati.GrupaId == s.GrupaId).Select(ss => ss.Vrijednost) .DefaultIfEmpty(0).Average() }).Skip(start).Take(length); return(query1); }
public async Task <JsonResult> GetGrupeCardListItem(int draw, int?kategorijaId, int start, int length = 6, GrupaStatus status = GrupaStatus.Aktivna) { var query = GetInitGrupaQuery(kategorijaId, status, start, length); var recordsTotal = await query.CountAsync(); var list = await query.ToListAsync(); var recordsFiltered = list.Count(); return(Json(new { draw, recordsTotal, recordsFiltered, data = list })); }