public IActionResult NapraviKontoKarticu(int DobavljacId)
        {
            DobavljacNapraviKontoKarticuVM Model = new DobavljacNapraviKontoKarticuVM();

            Model.datumOdString = DateTime.Now.AddDays(-31).ToShortDateString();
            Model.datumDoString = DateTime.Now.ToShortDateString();
            Model.DobavljacID   = DobavljacId;
            Model.Grad          = db.Dobavljaci.Where(x => x.DobavljacID == DobavljacId).Include(p => p.Grad).FirstOrDefault().Grad.Naziv;
            return(View(Model));
        }
        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"));
        }