public HttpResponseMessage GetStatistika(HttpRequestMessage request, [FromBody] ReportKriterijModel kriterij) { HttpResponseMessage response = null; try { using (AukcijeClient proxy = new AukcijeClient()) { proxy.Open(); StatistikaDTO statistika = proxy.GetStatistika(kriterij.KategorijaId, kriterij.PrikazOd, kriterij.PrikazDo); proxy.Close(); response = request.CreateResponse <StatistikaDTO>(HttpStatusCode.OK, statistika); } } catch (FaultException ex) { response = request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); } catch (Exception ex) { response = request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); } return(response); }
public StatistikaDTO GetStatistika(int kategorijaId, DateTime?prikazOd, DateTime?prikazDo) { try { using (BHaoDataContext context = new BHaoDataContext()) { AukcijaRepository repo = new AukcijaRepository(context); IEnumerable <AukcijaDetailDTO> aukcije = repo.GetAll(null); if (kategorijaId > 0) { aukcije = aukcije.Where(x => x.Aukcija.KategorijaId == kategorijaId).ToList(); } if (prikazOd != null && prikazDo != null) { aukcije = aukcije.Where(x => (x.Aukcija.Pocetak >= prikazOd && x.Aukcija.Pocetak <= prikazDo) || (x.Aukcija.Zavrsetak >= prikazOd && x.Aukcija.Zavrsetak <= prikazDo)).ToList(); } StatistikaDTO statistika = new StatistikaDTO(); if (aukcije.Count() > 0) { statistika.BrojAukcija = aukcije.Count(); statistika.ListaAukcija = aukcije.OrderByDescending(x => x.Aukcija.Pocetak); statistika.ProsjecnaVrijednostAukcija = (decimal)aukcije.Where(x => x.Aukcija.Zavrsena && x.Aukcija.NajvecaPonuda > 0) .Average(x => x.Aukcija.NajvecaPonuda); statistika.NajcesceProdavaniArtikli = aukcije.GroupBy(x => x.Artikal).Select(group => new NajcesciArtikliDTO { Artikal = group.Key.Proizvodjac + " " + group.Key.Model + " - " + group.Key.Naziv, Count = group.Count() }).OrderByDescending(x => x.Count).Take(10); } else { statistika.BrojAukcija = 0; statistika.ProsjecnaVrijednostAukcija = 0; } return(statistika); } } catch (Exception) { throw; } }