Пример #1
0
        /// <summary>
        /// Export master detail tablice u excel datotetku (xls)
        /// </summary>
        /// <param name="id"></param>
        public void ExportMDToExcel(int id)
        {
            var query = ctx.Oprema.AsNoTracking();

            var institucija = ctx.Institucija
                              .AsNoTracking()
                              .Where(m => m.SifraInstitucije == id)
                              .Select(o => new InstitucijaViewModel
            {
                SifraInstitucije  = o.SifraInstitucije,
                NazivInstitucije  = o.NazivInstitucije,
                RadnoVrijeme      = o.RadnoVrijeme,
                Kontakt           = o.Kontakt,
                NazivOrganizacije = o.SifraOrganizacijeNavigation.Naziv
            })
                              .SingleOrDefault(o => o.SifraInstitucije == id);



            var opreme = query
                         .Select(p => new OpremaViewModel
            {
                SifraOpreme      = p.SifraOpreme,
                NazivInstitucije = p.SifraInstitucijeNavigation.NazivInstitucije,
                NazivOpreme      = p.NazivOpreme,
                KolicinaOpreme   = p.KolicinaOpreme,
            })
                         .Where(m => m.NazivInstitucije == institucija.NazivInstitucije);


            var model = new OpremeViewModel
            {
                Opremas = opreme,
            };

            InstitucijaOpremaViewModel osobaPregledi = new InstitucijaOpremaViewModel
            {
                Institucija = institucija,
                Oprema      = model
            };

            ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
            ExcelPackage   pck = new ExcelPackage();
            ExcelWorksheet ws  = pck.Workbook.Worksheets.Add("Institucija oprema");

            ws.Cells["A1"].Value = "InstitucijaOpremaMD";

            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 = "Institucija";

            ws.Cells["A7"].Value = "Sifra Institucije";
            ws.Cells["B7"].Value = "Naziv Institucije";
            ws.Cells["C7"].Value = "Radno vrijeme";
            ws.Cells["D7"].Value = "Kontakt";

            int rowStart = 8;

            ws.Cells[string.Format("A{0}", rowStart)].Value = osobaPregledi.Institucija.SifraInstitucije;
            ws.Cells[string.Format("B{0}", rowStart)].Value = osobaPregledi.Institucija.NazivInstitucije;
            ws.Cells[string.Format("C{0}", rowStart)].Value = osobaPregledi.Institucija.RadnoVrijeme;
            ws.Cells[string.Format("D{0}", rowStart)].Value = osobaPregledi.Institucija.Kontakt;

            ws.Cells["A10"].Value = "Oprema u instituciji";

            ws.Cells["A12"].Value = "Sifra Opreme";
            ws.Cells["B12"].Value = "Naziv institucije";
            ws.Cells["C12"].Value = "Naziv opreme";
            ws.Cells["D12"].Value = "Kolicina opreme";

            int rowStart2 = 13;

            foreach (var item in osobaPregledi.Oprema.Opremas)
            {
                ws.Cells[string.Format("A{0}", rowStart2)].Value = item.SifraOpreme;
                ws.Cells[string.Format("B{0}", rowStart2)].Value = item.NazivInstitucije;
                ws.Cells[string.Format("C{0}", rowStart2)].Value = item.NazivOpreme;
                ws.Cells[string.Format("D{0}", rowStart2)].Value = item.KolicinaOpreme;
                rowStart2++;
            }


            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();
        }
Пример #2
0
        public IActionResult Index(int page = 1, int sort = 1, bool ascending = true)  //preslikva link koji pokazuje kada ucitamo određenu stranicu, ako nedostaje neki od podataka ovaj se broj uzima
        {
            int pagesize = appSettings.PageSize;
            var query    = ctx.Oprema  //upit na bazu
                           .AsNoTracking();
            int count = query.Count(); //broj zapisa

            if (count == 0)
            {
                logger.LogInformation("Ne postoji oprema");
                TempData[Constants.Message]       = "Ne postoji oprema.";
                TempData[Constants.ErrorOccurred] = false;
                //    return RedirectToAction(nameof(Create));
            }



            System.Linq.Expressions.Expression <Func <Oprema, object> > orderSelector = null;
            switch (sort)
            {
            case 1:
                orderSelector = d => d.SlikaOpreme;
                break;

            case 2:
                orderSelector = d => d.IdOprema;
                break;

            case 3:
                orderSelector = d => d.Naziv;
                break;

            case 4:
                orderSelector = d => d.Dostupnost;
                break;

            case 5:
                orderSelector = d => d.IdReferentniTip;
                break;
            }
            if (orderSelector != null)
            {
                query = ascending ?     //određuje je li order bi uzlazno ili silazno
                        query.OrderBy(orderSelector) :
                        query.OrderByDescending(orderSelector);
            }
            var oprema = query
                         .Select(m => new OpremaViewModel
            {
                IdOprema           = m.IdOprema,
                Naziv              = m.Naziv,
                Status             = m.Status,
                Dostupnost         = m.Dostupnost,
                NazivReferentniTip = m.IdReferentniTipNavigation.Naziv,
                ImaSlika           = m.SlikaOpreme != null,
                SlikaChecksum      = m.SlikaChecksum
            })
                         .Skip((page - 1) * pagesize) //  koliko podataka preskočiti, na 7.str. preskočit ćemo 6*vel.stranice
                         .Take(pagesize)              //dohvaćamo elemente
                         .ToList();                   //dobijemo listu
            var pagingInfo = new PagingInfo           //ujedinjujemo sve informacije koje smo primili sa strane
            {
                CurrentPage  = page,
                Sort         = sort,
                Ascending    = ascending,
                ItemsPerPage = pagesize,
                TotalItems   = count
            };

            if (page < 1)
            {
                page = 1;
            }
            else if (page > pagingInfo.TotalPages)                                                              //kada korisnik dode do zadnje stranice, radimo redirekcija na neku akciju-referencirat ćemo se na imena metoda nameof nam osigurava da se promjenom imena ne naruši ova stranica (prilikom kompajliranja javlja grešku ili otkrije stranicu)
            {
                return(RedirectToAction(nameof(Index), new { page = pagingInfo.TotalPages, sort, ascending })); //new-anonimna klasa, formira se link na novu akciju
            }
            var model = new OpremeViewModel
            {
                Oprema     = oprema,
                PagingInfo = pagingInfo
            };

            return(View(model));
        }
Пример #3
0
        /// <summary>
        /// Pregled detaila (opreme) neke institucije, te više informacija o samoj instituciji
        /// </summary>
        /// <param name="id">Sifra institucije</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.Oprema.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 = sort, ascending = ascending }));
            }
            System.Linq.Expressions.Expression <Func <Oprema, object> > orderSelector = null;
            switch (sort)
            {
            case 1:
                orderSelector = p => p.SifraOpreme;
                break;

            case 2:
                orderSelector = p => p.SifraInstitucijeNavigation.NazivInstitucije;
                break;

            case 3:
                orderSelector = p => p.NazivOpreme;
                break;

            case 4:
                orderSelector = p => p.KolicinaOpreme;
                break;
            }
            if (orderSelector != null)
            {
                query = ascending ?
                        query.OrderBy(orderSelector) :
                        query.OrderByDescending(orderSelector);
            }

            var institucija = ctx.Institucija
                              .AsNoTracking()
                              .Where(m => m.SifraInstitucije == id)
                              .Select(o => new InstitucijaViewModel
            {
                SifraInstitucije  = o.SifraInstitucije,
                NazivInstitucije  = o.NazivInstitucije,
                RadnoVrijeme      = o.RadnoVrijeme,
                Kontakt           = o.Kontakt,
                NazivOrganizacije = o.SifraOrganizacijeNavigation.Naziv
            })
                              .SingleOrDefault(o => o.SifraInstitucije == id);



            var opreme = query
                         .Select(p => new OpremaViewModel
            {
                SifraOpreme      = p.SifraOpreme,
                NazivInstitucije = p.SifraInstitucijeNavigation.NazivInstitucije,
                NazivOpreme      = p.NazivOpreme,
                KolicinaOpreme   = p.KolicinaOpreme,
            })
                         .Where(m => m.NazivInstitucije == institucija.NazivInstitucije)
                         .Skip((page - 1) * pagesize)
                         .Take(pagesize)
                         .ToList();


            var model = new OpremeViewModel
            {
                Opremas    = opreme,
                PagingInfo = pagingInfo
            };



            if (institucija != null)
            {
                InstitucijaOpremaViewModel osobaPregledi = new InstitucijaOpremaViewModel
                {
                    Institucija = institucija,
                    Oprema      = model
                };
                await PrepareDropDownLists();

                return(View(osobaPregledi));
            }
            else
            {
                return(NotFound($"Neispravan id institucije {id}"));
            }
        }
Пример #4
0
        public IActionResult Index(int page = 1, int sort = 1, bool ascending = true)
        {
            int pagesize = appSettings.PageSize;
            var query    = ctx.Oprema.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 <Oprema, object> > orderSelector = null;
            switch (sort)
            {
            case 1:
                orderSelector = d => d.SifraInstitucijeNavigation.NazivInstitucije;
                break;

            case 2:
                orderSelector = d => d.NazivOpreme;
                break;

            case 3:
                orderSelector = d => d.KolicinaOpreme;
                break;
            }

            if (orderSelector != null)
            {
                query = ascending ? query.OrderBy(orderSelector) : query.OrderByDescending(orderSelector);
            }

            var opreme = query
                         .Select(m => new OpremaViewModel
            {
                SifraOpreme      = m.SifraOpreme,
                NazivInstitucije = m.SifraInstitucijeNavigation.NazivInstitucije,
                NazivOpreme      = m.NazivOpreme,
                KolicinaOpreme   = m.KolicinaOpreme
            })
                         .Skip((page - 1) * pagesize)
                         .Take(pagesize)
                         .ToList();

            var model = new OpremeViewModel
            {
                Opremas    = opreme,
                PagingInfo = pagingInfo
            };

            return(View(model));
        }