public byte[] PrepareReport(DobavljacKontoKartica redovi)
        {
            _redovi = redovi;

            _document = new Document(PageSize.A4, 0f, 0f, 0f, 0f);
            _document.SetPageSize(PageSize.A4);
            _document.SetMargins(20f, 20f, 20f, 20f);
            _pdfTable.WidthPercentage     = 100;
            _pdfTable.HorizontalAlignment = Element.ALIGN_LEFT;
            _fontStyle = FontFactory.GetFont("Tahoma", 8f, 1);
            PdfWriter.GetInstance(_document, _memoryStream);
            _document.Open();
            _pdfTable.SetWidths(new float[] { 50f, 50f, 50f, 50f, 50f });


            this.ReportHeader();
            this.ReportBody();
            _pdfTable.HeaderRows = 2;
            _document.Add(_pdfTable);
            _document.Close();
            return(_memoryStream.ToArray());
        }
        public IActionResult PrikaziKontoKarticu(DobavljacNapraviKontoKarticuVM model)
        {
            List <RacunDobavljaca> listaRacunaDb = new List <RacunDobavljaca>();

            List <UplataDobavljacu> listaUplataDb = new List <UplataDobavljacu>();

            //prethodno stanje !
            List <RacunDobavljaca>  listaRacunaDbPRE = new List <RacunDobavljaca>();
            List <UplataDobavljacu> listaUplataDbPRE = new List <UplataDobavljacu>();

            double   dugPRE    = 0;
            double   uplataPRE = 0;
            DateTime pocetnoStanjeAplikacije = new DateTime(2018, 7, 25); // na taj dan uneseni svi dugovi

            //PRETHODNO DUGOVANJE
            listaRacunaDbPRE = db.RacuniDobavljaca.Include(x => x.Dobavljac).Where(x => (x.Datum >= pocetnoStanjeAplikacije && x.Datum < model.datumOd) && x.DobavljacID == model.DobavljacID).ToList();

            listaUplataDbPRE = db.UplateDobavljacu.Include(x => x.Dobavljac).Where(x => (x.Datum >= pocetnoStanjeAplikacije && x.Datum < model.datumOd) && x.DobavljacID == model.DobavljacID).ToList();

            for (int i = 0; i < listaRacunaDbPRE.Count(); i++)
            {
                uplataPRE += listaRacunaDbPRE[i].UkupnoSaPDV;
            }
            for (int i = 0; i < listaUplataDbPRE.Count(); i++)
            {
                dugPRE += listaUplataDbPRE[i].Iznos;
            }
            //

            listaRacunaDb = db.RacuniDobavljaca.Include(x => x.Dobavljac).Where(x => (x.Datum >= model.datumOd && x.Datum <= model.datumDo.AddHours(8)) && x.DobavljacID == model.DobavljacID).ToList();

            listaUplataDb = db.UplateDobavljacu.Include(x => x.Dobavljac).Where(x => (x.Datum >= model.datumOd && x.Datum <= model.datumDo.AddHours(8)) && x.DobavljacID == model.DobavljacID).ToList();

            DobavljacKontoKartica Model = new DobavljacKontoKartica();

            Model.DatumOd     = model.datumOd;
            Model.DatumDo     = model.datumDo;
            Model.DobavljacId = model.DobavljacID;
            Model.Grad        = model.Grad;
            Model.redovi      = new List <DobavljacKontoKartica.Row>();
            Model.Saldo       = 0;

            Model.prethodnoDugovanje = uplataPRE - dugPRE;

            ////dodavanje prvog reda, tj prethodnog stanja prije izabranog datuma
            //Model.redovi.Add(new DobavljacKontoKartica.Row
            //{
            //    Datum = model.datumOd,
            //    Duguje = dugPRE,
            //    Potrazuje = uplataPRE,
            //    Saldo = dugPRE - uplataPRE,
            //    VezniDokument = "Prethodno stanje"

            //});

            for (int i = 0; i < listaRacunaDb.Count(); i++)
            {
                Model.redovi.Add(new DobavljacKontoKartica.Row
                {
                    Datum         = listaRacunaDb[i].Datum,
                    Potrazuje     = listaRacunaDb[i].UkupnoSaPDV,
                    Duguje        = 0,
                    Saldo         = 0,
                    VezniDokument = listaRacunaDb[i].BrojRacuna
                });
            }
            for (int i = 0; i < listaUplataDb.Count(); i++)
            {
                Model.redovi.Add(new DobavljacKontoKartica.Row
                {
                    Datum         = listaUplataDb[i].Datum,
                    Potrazuje     = 0,
                    Duguje        = listaUplataDb[i].Iznos,
                    Saldo         = 0,
                    VezniDokument = listaUplataDb[i].Brojizvoda
                });
            }
            Model.redovi = Model.redovi.OrderBy(x => x.Datum).ToList();

            for (int i = 0; i < Model.redovi.Count; i++)
            {
                Model.SumaDuguje    += Model.redovi[i].Duguje;
                Model.SumaPotrazuje += Model.redovi[i].Potrazuje;
                if (i == 0)
                {
                    Model.redovi[i].Saldo = Model.redovi[i].Potrazuje - Model.redovi[i].Duguje;
                }
                else
                {
                    Model.redovi[i].Saldo = Model.redovi[i - 1].Saldo + (Model.redovi[i].Potrazuje - Model.redovi[i].Duguje);
                }
            }

            KontoDobavljacReport novi = new KontoDobavljacReport();

            Model.NazivDobavljaca  = db.Dobavljaci.Where(x => x.DobavljacID == model.DobavljacID).FirstOrDefault().Naziv;
            Model.AdresaDobavljaca = db.Dobavljaci.Where(x => x.DobavljacID == model.DobavljacID).FirstOrDefault().Adresa;
            Model.Saldo            = Model.SumaPotrazuje - Model.SumaDuguje;
            byte[] docArray = novi.PrepareReport(Model);
            return(File(docArray, "application/pdf"));
        }