private void GenerisiPodatke(PregledIspitivanjaIndexVM model, int klijentId = 0, int nazivIspitivanjaId = 0, int kantonId = 0, int opcinaId = 0, bool kasnjenje = false) { List <Objekat> objekti = new List <Objekat>(); if (klijentId == 0) //svi klijenti { objekti = _context.Objekti.Where(w => w.ObjekatStatus == true) .Include(i => i.RadniNalozi) .ThenInclude(e => e.Ispitivanja) .Include(n => n.Klijent) .Include(c => c.Mjesto) .ThenInclude(t => t.Opcina) .ThenInclude(h => h.Kanton).ToList(); } else //odredjeni klijent { objekti = _context.Objekti.Where(w => w.ObjekatStatus == true && w.KlijentId == klijentId) .Include(i => i.RadniNalozi) .ThenInclude(e => e.Ispitivanja) .Include(n => n.Klijent) .Include(c => c.Mjesto) .ThenInclude(t => t.Opcina) .ThenInclude(h => h.Kanton).ToList(); } if (nazivIspitivanjaId == 0) //sve usluge { model.Usluge = _context.NaziviIspitivanja.Where(w => w.NazivIspitivanjaStatus == true).OrderBy(o => o.NazivIspitivanjaId).ToDictionary(x => x.NazivIspitivanjaId, x => x.Oznaka); } else //odredjena usluga { model.Usluge = _context.NaziviIspitivanja.Where(w => w.NazivIspitivanjaStatus == true && w.NazivIspitivanjaId == nazivIspitivanjaId).OrderBy(o => o.NazivIspitivanjaId).ToDictionary(x => x.NazivIspitivanjaId, x => x.Oznaka); } List <int> listaBrojaDanaDoIstekaUsluge = new List <int>(); model.Rows = new List <PregledIspitivanjaIndexVM.Row>(); bool kreirajIzvjestaj = false; bool kreirajIzvjestajKasnjenja = false; int brojDanaDoIstekaUsluge; foreach (var objekat in objekti) { if (kasnjenje) { foreach (var item in model.Usluge) { //pronadji datum narednog redovnog ispitivanja za taj objekat za odredjenu uslugu DateTime x = _context.Ispitivanja.Where(w => w.RadniNalog.ObjekatId == objekat.ObjekatId && w.NazivIspitivanjaId == item.Key && w.TipIspitivanja == "Redovno").OrderByDescending(o => o.DatumIspitivanja).Select(s => s.DatumNarednogIspitivanja).FirstOrDefault(); if (x != DateTime.MinValue) { brojDanaDoIstekaUsluge = x.Date.Subtract(DateTime.Now.Date).Days; if (brojDanaDoIstekaUsluge <= 20) { kreirajIzvjestajKasnjenja = true; } listaBrojaDanaDoIstekaUsluge.Add(brojDanaDoIstekaUsluge); } else { listaBrojaDanaDoIstekaUsluge.Add(-365); } } if (kreirajIzvjestajKasnjenja) { if (kantonId == 0) { if (opcinaId == 0) { model.Rows.Add(new PregledIspitivanjaIndexVM.Row() { ObjekatId = objekat.ObjekatId, Klijent = objekat.Klijent.SkraceniNaziv, Objekat = objekat.Naziv, Kanton = objekat.Mjesto.Opcina.Kanton.SkraceniNaziv, Opcina = objekat.Mjesto.Opcina.Naziv, Mjesto = objekat.Mjesto.Naziv, BrojDanaDoIstekaUsluge = new List <int>(listaBrojaDanaDoIstekaUsluge) }); } else { if (objekat.Mjesto.OpcinaId == opcinaId) { model.Rows.Add(new PregledIspitivanjaIndexVM.Row() { ObjekatId = objekat.ObjekatId, Klijent = objekat.Klijent.SkraceniNaziv, Objekat = objekat.Naziv, Kanton = objekat.Mjesto.Opcina.Kanton.SkraceniNaziv, Opcina = objekat.Mjesto.Opcina.Naziv, Mjesto = objekat.Mjesto.Naziv, BrojDanaDoIstekaUsluge = new List <int>(listaBrojaDanaDoIstekaUsluge) }); } else { listaBrojaDanaDoIstekaUsluge.Clear(); kreirajIzvjestajKasnjenja = false; continue; } } } else { if (opcinaId == 0) { if (objekat.Mjesto.Opcina.KantonId == kantonId) { model.Rows.Add(new PregledIspitivanjaIndexVM.Row() { ObjekatId = objekat.ObjekatId, Klijent = objekat.Klijent.SkraceniNaziv, Objekat = objekat.Naziv, Kanton = objekat.Mjesto.Opcina.Kanton.SkraceniNaziv, Opcina = objekat.Mjesto.Opcina.Naziv, Mjesto = objekat.Mjesto.Naziv, BrojDanaDoIstekaUsluge = new List <int>(listaBrojaDanaDoIstekaUsluge) }); } else { listaBrojaDanaDoIstekaUsluge.Clear(); kreirajIzvjestajKasnjenja = false; continue; } } else { if (objekat.Mjesto.OpcinaId == opcinaId && objekat.Mjesto.Opcina.KantonId == kantonId) { model.Rows.Add(new PregledIspitivanjaIndexVM.Row() { ObjekatId = objekat.ObjekatId, Klijent = objekat.Klijent.SkraceniNaziv, Objekat = objekat.Naziv, Kanton = objekat.Mjesto.Opcina.Kanton.SkraceniNaziv, Opcina = objekat.Mjesto.Opcina.Naziv, Mjesto = objekat.Mjesto.Naziv, BrojDanaDoIstekaUsluge = new List <int>(listaBrojaDanaDoIstekaUsluge) }); } else { listaBrojaDanaDoIstekaUsluge.Clear(); kreirajIzvjestajKasnjenja = false; continue; } } } } listaBrojaDanaDoIstekaUsluge.Clear(); kreirajIzvjestajKasnjenja = false; } else { foreach (var radniNalog in objekat.RadniNalozi) { if (radniNalog.Ispitivanja.Count > 0) { kreirajIzvjestaj = true; break; } } foreach (var item in model.Usluge) { //pronadji datum narednog redovnog ispitivanja za taj objekat za odredjenu uslugu DateTime x = _context.Ispitivanja.Where(w => w.RadniNalog.ObjekatId == objekat.ObjekatId && w.NazivIspitivanjaId == item.Key && w.TipIspitivanja == "Redovno").OrderByDescending(o => o.DatumIspitivanja).Select(s => s.DatumNarednogIspitivanja).FirstOrDefault(); if (x != DateTime.MinValue) { brojDanaDoIstekaUsluge = x.Date.Subtract(DateTime.Now.Date).Days; listaBrojaDanaDoIstekaUsluge.Add(brojDanaDoIstekaUsluge); } else { listaBrojaDanaDoIstekaUsluge.Add(-365); } } if (kreirajIzvjestaj) { if (kantonId == 0) { if (opcinaId == 0) { model.Rows.Add(new PregledIspitivanjaIndexVM.Row() { ObjekatId = objekat.ObjekatId, Klijent = objekat.Klijent.SkraceniNaziv, Objekat = objekat.Naziv, Kanton = objekat.Mjesto.Opcina.Kanton.SkraceniNaziv, Opcina = objekat.Mjesto.Opcina.Naziv, Mjesto = objekat.Mjesto.Naziv, BrojDanaDoIstekaUsluge = new List <int>(listaBrojaDanaDoIstekaUsluge) }); } else { if (objekat.Mjesto.OpcinaId == opcinaId) { model.Rows.Add(new PregledIspitivanjaIndexVM.Row() { ObjekatId = objekat.ObjekatId, Klijent = objekat.Klijent.SkraceniNaziv, Objekat = objekat.Naziv, Kanton = objekat.Mjesto.Opcina.Kanton.SkraceniNaziv, Opcina = objekat.Mjesto.Opcina.Naziv, Mjesto = objekat.Mjesto.Naziv, BrojDanaDoIstekaUsluge = new List <int>(listaBrojaDanaDoIstekaUsluge) }); } else { listaBrojaDanaDoIstekaUsluge.Clear(); kreirajIzvjestaj = false; continue; } } } else { if (opcinaId == 0) { if (objekat.Mjesto.Opcina.KantonId == kantonId) { model.Rows.Add(new PregledIspitivanjaIndexVM.Row() { ObjekatId = objekat.ObjekatId, Klijent = objekat.Klijent.SkraceniNaziv, Objekat = objekat.Naziv, Kanton = objekat.Mjesto.Opcina.Kanton.SkraceniNaziv, Opcina = objekat.Mjesto.Opcina.Naziv, Mjesto = objekat.Mjesto.Naziv, BrojDanaDoIstekaUsluge = new List <int>(listaBrojaDanaDoIstekaUsluge) }); } else { listaBrojaDanaDoIstekaUsluge.Clear(); kreirajIzvjestaj = false; continue; } } else { if (objekat.Mjesto.OpcinaId == opcinaId && objekat.Mjesto.Opcina.KantonId == kantonId) { model.Rows.Add(new PregledIspitivanjaIndexVM.Row() { ObjekatId = objekat.ObjekatId, Klijent = objekat.Klijent.SkraceniNaziv, Objekat = objekat.Naziv, Kanton = objekat.Mjesto.Opcina.Kanton.SkraceniNaziv, Opcina = objekat.Mjesto.Opcina.Naziv, Mjesto = objekat.Mjesto.Naziv, BrojDanaDoIstekaUsluge = new List <int>(listaBrojaDanaDoIstekaUsluge) }); } else { listaBrojaDanaDoIstekaUsluge.Clear(); kreirajIzvjestaj = false; continue; } } } } listaBrojaDanaDoIstekaUsluge.Clear(); kreirajIzvjestaj = false; } } }
public async Task <IActionResult> KreirajIzvjestajKasnjenja(KreirajIzvjestajIndexVM input) { var model = new PregledIspitivanjaIndexVM(); var klijent = _context.Klijenti.Find(input.KlijentId); var usluga = _context.NaziviIspitivanja.Find(input.NazivIspitivanjaId); var kanton = _context.Kantoni.Find(input.KantonId); var opcina = _context.Opcine.Find(input.OpcinaId); if (klijent == null && usluga == null && kanton == null && opcina == null) { GenerisiPodatke(model, 0, 0, 0, 0, true); model.IsKlijent = false; model.IsUsluga = false; } else if (klijent == null && usluga == null && kanton != null && opcina == null) { GenerisiPodatke(model, 0, 0, kanton.KantonId, 0, true); model.IsKlijent = false; model.IsUsluga = false; } else if (klijent == null && usluga == null && kanton != null && opcina != null) { GenerisiPodatke(model, 0, 0, kanton.KantonId, opcina.OpcinaId, true); model.IsKlijent = false; model.IsUsluga = false; } else if (klijent == null && usluga != null && kanton == null && opcina == null) { GenerisiPodatke(model, 0, usluga.NazivIspitivanjaId, 0, 0, true); model.IsKlijent = false; model.IsUsluga = true; model.Usluga = _context.NaziviIspitivanja.Where(w => w.NazivIspitivanjaId == usluga.NazivIspitivanjaId).Select(s => s.Naziv).SingleOrDefault(); } else if (klijent == null && usluga != null && kanton != null && opcina == null) { GenerisiPodatke(model, 0, usluga.NazivIspitivanjaId, kanton.KantonId, 0, true); model.IsKlijent = false; model.IsUsluga = true; model.Usluga = _context.NaziviIspitivanja.Where(w => w.NazivIspitivanjaId == usluga.NazivIspitivanjaId).Select(s => s.Naziv).SingleOrDefault(); } else if (klijent == null && usluga != null && kanton != null && opcina != null) { GenerisiPodatke(model, 0, usluga.NazivIspitivanjaId, kanton.KantonId, opcina.OpcinaId, true); model.IsKlijent = false; model.IsUsluga = true; model.Usluga = _context.NaziviIspitivanja.Where(w => w.NazivIspitivanjaId == usluga.NazivIspitivanjaId).Select(s => s.Naziv).SingleOrDefault(); } else if (klijent != null && usluga == null && kanton == null && opcina == null) { GenerisiPodatke(model, klijent.KlijentId, 0, 0, 0, true); model.IsKlijent = true; model.IsUsluga = false; model.Klijent = _context.Klijenti.Where(w => w.KlijentId == klijent.KlijentId).Select(s => s.Naziv).SingleOrDefault(); } else if (klijent != null && usluga == null && kanton != null && opcina == null) { GenerisiPodatke(model, klijent.KlijentId, 0, kanton.KantonId, 0, true); model.IsKlijent = true; model.IsUsluga = false; model.Klijent = _context.Klijenti.Where(w => w.KlijentId == klijent.KlijentId).Select(s => s.Naziv).SingleOrDefault(); } else if (klijent != null && usluga == null && kanton != null && opcina != null) { GenerisiPodatke(model, klijent.KlijentId, 0, kanton.KantonId, opcina.OpcinaId, true); model.IsKlijent = true; model.IsUsluga = false; model.Klijent = _context.Klijenti.Where(w => w.KlijentId == klijent.KlijentId).Select(s => s.Naziv).SingleOrDefault(); } else if (klijent != null && usluga != null && kanton == null && opcina == null) { GenerisiPodatke(model, klijent.KlijentId, usluga.NazivIspitivanjaId, 0, 0, true); model.IsKlijent = true; model.IsUsluga = true; model.Klijent = _context.Klijenti.Where(w => w.KlijentId == klijent.KlijentId).Select(s => s.Naziv).SingleOrDefault(); model.Usluga = _context.NaziviIspitivanja.Where(w => w.NazivIspitivanjaId == usluga.NazivIspitivanjaId).Select(s => s.Naziv).SingleOrDefault(); } else if (klijent != null && usluga != null && kanton != null && opcina == null) { GenerisiPodatke(model, klijent.KlijentId, usluga.NazivIspitivanjaId, kanton.KantonId, 0, true); model.IsKlijent = true; model.IsUsluga = true; model.Klijent = _context.Klijenti.Where(w => w.KlijentId == klijent.KlijentId).Select(s => s.Naziv).SingleOrDefault(); model.Usluga = _context.NaziviIspitivanja.Where(w => w.NazivIspitivanjaId == usluga.NazivIspitivanjaId).Select(s => s.Naziv).SingleOrDefault(); } else if (klijent != null && usluga != null && kanton != null && opcina != null) { GenerisiPodatke(model, klijent.KlijentId, usluga.NazivIspitivanjaId, kanton.KantonId, opcina.OpcinaId, true); model.IsKlijent = true; model.IsUsluga = true; model.Klijent = _context.Klijenti.Where(w => w.KlijentId == klijent.KlijentId).Select(s => s.Naziv).SingleOrDefault(); model.Usluga = _context.NaziviIspitivanja.Where(w => w.NazivIspitivanjaId == usluga.NazivIspitivanjaId).Select(s => s.Naziv).SingleOrDefault(); } var header = await JsReportMVCService.RenderViewToStringAsync(HttpContext, RouteData, "Header", new { }); var footer = await JsReportMVCService.RenderViewToStringAsync(HttpContext, RouteData, "Footer", new { }); HttpContext.JsReportFeature().Recipe(Recipe.ChromePdf).Configure((r) => r.Template.Chrome = new Chrome { HeaderTemplate = header, FooterTemplate = footer, DisplayHeaderFooter = true, Landscape = true, Format = "A4", MarginTop = "1cm", MarginLeft = "0.5cm", MarginBottom = "1cm", MarginRight = "0.5cm" }); return(View("IzvjestajKasnjenjaPrint", model)); }