public PocetnaPage() { InitializeComponent(); BindingContext = model = new PreporukeViewModel(); }
/// <summary> /// Prikaz MD forme za organizaciju s nekim id-om /// </summary> /// <param name="id">Sifra organizacije</param> /// <param name="page">Page</param> /// <param name="sort">Sort</param> /// <param name="ascending">Ascending (true ili false)</param> /// <returns></returns> public async Task <IActionResult> Detail(int id, int page = 1, int sort = 1, bool ascending = true) { int pagesize = appSettings.PageSize; var query = ctx.Institucija.AsNoTracking(); int count = query.Count(); var query_2 = ctx.Preporuka.AsNoTracking(); int count2 = query.Count(); var pagingInfo = new PagingInfo { CurrentPage = page, Sort = sort, Ascending = ascending, ItemsPerPage = pagesize, TotalItems = count }; if (page > pagingInfo.TotalPages) { return(RedirectToAction(nameof(Index), new { page = pagingInfo.TotalPages, sort = sort, ascending = ascending })); } System.Linq.Expressions.Expression <Func <Institucija, object> > orderSelector = null; switch (sort) { case 1: orderSelector = p => p.SifraInstitucije; break; case 2: orderSelector = p => p.NazivInstitucije; break; case 3: orderSelector = p => p.Kontakt; break; case 4: orderSelector = p => p.RadnoVrijeme; break; } if (orderSelector != null) { query = ascending ? query.OrderBy(orderSelector) : query.OrderByDescending(orderSelector); } var organizacija = ctx.Organizacija .AsNoTracking() .Where(m => m.SifraOrganizacije == id) .Select(o => new Organizacija { SifraOrganizacije = o.SifraOrganizacije, Naziv = o.Naziv, Url = o.Url, }) .SingleOrDefault(o => o.SifraOrganizacije == id); var preporuke = query_2 .Select(p => new PreporukaViewModel { SifraPreporuke = p.SifraPreporuke, Opis = p.Opis, NazivOrganizacije = p.SifraOrganizacijeNavigation.Naziv, NazivStozera = p.SifraStozeraNavigation.Naziv, OpisPrethodnePreporuke = p.SifraPrethodnePreporukeNavigation.Opis, VrijemeObjave = p.VrijemeObjave }) .Where(m => m.NazivOrganizacije == organizacija.Naziv) .Skip((page - 1) * pagesize) .Take(pagesize) .ToList(); var model_2 = new PreporukeViewModel { Preporuke = preporuke, PagingInfo = pagingInfo }; var institucije = query .Select(p => new InstitucijaViewModel { SifraInstitucije = p.SifraInstitucije, NazivInstitucije = p.NazivInstitucije, Kontakt = p.Kontakt, RadnoVrijeme = p.RadnoVrijeme, NazivOrganizacije = p.SifraOrganizacijeNavigation.Naziv }) .Where(m => m.NazivOrganizacije == organizacija.Naziv) .Skip((page - 1) * pagesize) .Take(pagesize) .ToList(); var model = new InstitucijeViewModel { Institucije = institucije, PagingInfo = pagingInfo }; if (organizacija != null) { OrganizacijaInstitucijaPreporukaViewModel organizacijaInstitucija = new OrganizacijaInstitucijaPreporukaViewModel { Organizacija = organizacija, Institucije = model, Preporuke = model_2 }; return(View(organizacijaInstitucija)); } else { return(NotFound($"Neispravan id institucije {id}")); } }
/// <summary> /// Export MD forme u datoteku /// </summary> /// <param name="id">Sifra organizacije</param> public void ExportMDToExcel(int id) { var query = ctx.Institucija.AsNoTracking(); int count = query.Count(); var query_2 = ctx.Preporuka.AsNoTracking(); int count2 = query.Count(); var organizacija = ctx.Organizacija .AsNoTracking() .Where(m => m.SifraOrganizacije == id) .Select(o => new Organizacija { SifraOrganizacije = o.SifraOrganizacije, Naziv = o.Naziv, Url = o.Url, }) .SingleOrDefault(o => o.SifraOrganizacije == id); var preporuke = query_2 .Select(p => new PreporukaViewModel { SifraPreporuke = p.SifraPreporuke, Opis = p.Opis, NazivOrganizacije = p.SifraOrganizacijeNavigation.Naziv, NazivStozera = p.SifraStozeraNavigation.Naziv, OpisPrethodnePreporuke = p.SifraPrethodnePreporukeNavigation.Opis, VrijemeObjave = p.VrijemeObjave }) .Where(m => m.NazivOrganizacije == organizacija.Naziv); var model_2 = new PreporukeViewModel { Preporuke = preporuke, }; var institucije = query .Select(p => new InstitucijaViewModel { SifraInstitucije = p.SifraInstitucije, NazivInstitucije = p.NazivInstitucije, Kontakt = p.Kontakt, RadnoVrijeme = p.RadnoVrijeme, NazivOrganizacije = p.SifraOrganizacijeNavigation.Naziv }) .Where(m => m.NazivOrganizacije == organizacija.Naziv); var model = new InstitucijeViewModel { Institucije = institucije, }; OrganizacijaInstitucijaPreporukaViewModel organizacijaInstitucija = new OrganizacijaInstitucijaPreporukaViewModel { Organizacija = organizacija, Institucije = model, Preporuke = model_2 }; ExcelPackage.LicenseContext = LicenseContext.NonCommercial; ExcelPackage pck = new ExcelPackage(); ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Institucija oprema"); ws.Cells["A1"].Value = "OrganizacijaInstitucijaPreporukaMD"; ws.Cells["A3"].Value = "Date"; ws.Cells["B3"].Value = string.Format("{0:dd MMMM yyyy} at {0:H: mm tt}", DateTimeOffset.Now); ws.Cells["A5"].Value = "Organizacija"; ws.Cells["A7"].Value = "Sifra Organizacije"; ws.Cells["B7"].Value = "Naziv Organizacije"; ws.Cells["C7"].Value = "URL"; int rowStart = 8; ws.Cells[string.Format("A{0}", rowStart)].Value = organizacijaInstitucija.Organizacija.SifraOrganizacije; ws.Cells[string.Format("B{0}", rowStart)].Value = organizacijaInstitucija.Organizacija.Naziv; ws.Cells[string.Format("C{0}", rowStart)].Value = organizacijaInstitucija.Organizacija.Url; ws.Cells["A10"].Value = "Institucije ove organizacije"; ws.Cells["A12"].Value = "Sifra Institucije"; ws.Cells["B12"].Value = "Naziv institucije"; ws.Cells["C12"].Value = "Radno vrijeme"; ws.Cells["D12"].Value = "Kontakt"; int rowStart2 = 13; foreach (var item in organizacijaInstitucija.Institucije.Institucije) { ws.Cells[string.Format("A{0}", rowStart2)].Value = item.SifraInstitucije; ws.Cells[string.Format("B{0}", rowStart2)].Value = item.NazivInstitucije; ws.Cells[string.Format("C{0}", rowStart2)].Value = item.RadnoVrijeme; ws.Cells[string.Format("D{0}", rowStart2)].Value = item.Kontakt; rowStart2++; } ws.Cells["A19"].Value = "Sifra Preporuke"; ws.Cells["B19"].Value = "Opis Preporuke"; ws.Cells["C19"].Value = "Organizacija"; ws.Cells["D19"].Value = "Vrijeme objave"; int rowStart3 = 20; foreach (var item in organizacijaInstitucija.Preporuke.Preporuke) { ws.Cells[string.Format("A{0}", rowStart3)].Value = item.SifraPreporuke; ws.Cells[string.Format("B{0}", rowStart3)].Value = item.Opis; ws.Cells[string.Format("C{0}", rowStart3)].Value = item.NazivOrganizacije; ws.Cells[string.Format("D{0}", rowStart3)].Value = item.VrijemeObjave.ToString(); rowStart3++; } ws.Cells["A:AZ"].AutoFitColumns(); Response.Clear(); Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.Headers.Add("content-disposition", "attachment; filename=InstitucijaMD.xlsx"); Response.Body.WriteAsync(pck.GetAsByteArray()); Response.CompleteAsync(); }
/// <summary> /// Prikaz tablice za preporuke /// </summary> /// <param name="page">Page</param> /// <param name="sort">Sort</param> /// <param name="ascending">Ascending (true ili false)</param> /// <returns></returns> public IActionResult Index(int page = 1, int sort = 1, bool ascending = true) { int pagesize = appSettings.PageSize; var query = ctx.Preporuka.AsNoTracking(); int count = query.Count(); var pagingInfo = new PagingInfo { CurrentPage = page, Sort = sort, Ascending = ascending, ItemsPerPage = pagesize, TotalItems = count }; if (page > pagingInfo.TotalPages) { return(RedirectToAction(nameof(Index), new { page = pagingInfo.TotalPages, sort, ascending })); } System.Linq.Expressions.Expression <Func <Preporuka, object> > orderSelector = null; switch (sort) { case 1: orderSelector = d => d.Opis; break; case 2: orderSelector = d => d.SifraOrganizacijeNavigation.Naziv; break; case 3: orderSelector = d => d.VrijemeObjave; break; } if (orderSelector != null) { query = ascending ? query.OrderBy(orderSelector) : query.OrderByDescending(orderSelector); } var preporuke = ctx.Preporuka .Select(m => new PreporukaViewModel { Opis = m.Opis, SifraPreporuke = m.SifraPreporuke, NazivOrganizacije = m.SifraOrganizacijeNavigation.Naziv, VrijemeObjave = m.VrijemeObjave, NazivStozera = m.SifraStozeraNavigation.Naziv, OpisPrethodnePreporuke = m.SifraPrethodnePreporukeNavigation.Opis, }) .Skip((page - 1) * pagesize) .Take(pagesize) .ToList(); var model = new PreporukeViewModel { Preporuke = preporuke, PagingInfo = pagingInfo }; return(View(model)); }