public async Task <IActionResult> Edit(int id, [Bind("Id")] ProsireniPrijevozViewModel prosireniPrijevoz)
        {
            if (id != prosireniPrijevoz.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(prosireniPrijevoz);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ProsireniPrijevozExists(prosireniPrijevoz.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(prosireniPrijevoz));
        }
        public IActionResult PrijevoznikPrijevoz(int id)
        {
            ProsireniPrijevozViewModel prosireniPrijevoz = vratiPrijevoz(id);

            ViewData["IdRazlog"] = new SelectList(_context.RazlogNaplate, "Id", "Razlog");
            return(View(prosireniPrijevoz));
        }
        public async Task <IActionResult> Create([Bind("Id")] ProsireniPrijevozViewModel prosireniPrijevoz)
        {
            if (ModelState.IsValid)
            {
                _context.Add(prosireniPrijevoz);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(prosireniPrijevoz));
        }
        // GET: ProsireniPrijevozs/Details/5
        public IActionResult Details(int?id)
        {
            ProsireniPrijevozViewModel prosireniPrijevoz = vratiPrijevoz(id);

            var             userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
            ApplicationUser user   = _context.Users.Where(u => u.Id == userId).FirstOrDefault();

            if (user.IdKorisnik == prosireniPrijevoz.ProsireniZahtjev.IdNarucitelj)
            {
                string urlString = "NaruciteljPrijevoz/" + id.ToString();
                return(RedirectToAction(urlString));
            }
            else
            {
                string urlString = "PrijevoznikPrijevoz/" + id.ToString();
                return(RedirectToAction(urlString));
            }
        }
        // GET: ProsireniPrijevozs
        public IActionResult Index()
        {
            var             userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
            ApplicationUser user   = _context.Users.Where(u => u.Id == userId).FirstOrDefault();


            var prijevozi = _context.Prijevoz.Include(p => p.IdPonudaPrijevozaNavigation)
                            .Include(p => p.IdPonudaPrijevozaNavigation.IdPrijevoznikNavigation)
                            .Include(p => p.IdPonudaPrijevozaNavigation.IdPrijevoznikNavigation.IdKorisnikNavigation)
                            .Include(p => p.IdPonudaPrijevozaNavigation.IdZahtjevNavigation)
                            .Include(p => p.IdPonudaPrijevozaNavigation.IdZahtjevNavigation.IdStatusZahtjevaNavigation)
                            .Include(p => p.IdPonudaPrijevozaNavigation.IdZahtjevNavigation.IdNaruciteljNavigation)
                            .Include(p => p.IdPonudaPrijevozaNavigation.IdZahtjevNavigation.IdNaruciteljNavigation.IdKorisnikNavigation)
                            .Where(p => p.IdPonudaPrijevozaNavigation.IdPrijevoznik == user.IdKorisnik ||
                                   p.IdPonudaPrijevozaNavigation.IdZahtjevNavigation.IdNarucitelj == user.IdKorisnik)
                            .ToList();


            var prosireniPrijevozi = new List <ProsireniPrijevozViewModel>();

            if (prijevozi.Count != 0)
            {
                foreach (var prijevoz in prijevozi)
                {
                    var zahtjev = _context.Zahtjev.Where(m => m.Id == prijevoz.IdPonudaPrijevozaNavigation.IdZahtjevNavigation.Id)
                                  .Include(m => m.IdStatusZahtjevaNavigation)
                                  .Include(m => m.IdNaruciteljNavigation).FirstOrDefault();

                    var lokacijeZahtjeva = _context.ZahtjevLokacija.Where(m => m.IdZahtjev == zahtjev.Id)
                                           .Include(z => z.IdLokacijaNavigation)
                                           .Include(z => z.IdLokacijaNavigation.IdVrstaLokacijeNavigation)
                                           .Include(z => z.IdLokacijaNavigation.IdMjestoNavigation);

                    Lokacija pocetnaLokacija   = null;
                    Lokacija odredisnaLokacija = null;

                    foreach (var lokacija in lokacijeZahtjeva)
                    {
                        if (lokacija.IdLokacijaNavigation.IdVrstaLokacijeNavigation.Vrsta == "početna")
                        {
                            pocetnaLokacija = lokacija.IdLokacijaNavigation;
                        }
                        else
                        {
                            odredisnaLokacija = lokacija.IdLokacijaNavigation;
                        }
                    }

                    Mjesto pocetnoMjesto   = pocetnaLokacija.IdMjestoNavigation;
                    Mjesto odredisnoMjesto = odredisnaLokacija.IdMjestoNavigation;


                    ProsireniZahtjevViewModel prosireniZahtjev = new ProsireniZahtjevViewModel();

                    prosireniZahtjev.Id                         = zahtjev.Id;
                    prosireniZahtjev.VrijemePocetka             = zahtjev.VrijemePocetka;
                    prosireniZahtjev.VrijemeZavrsetka           = zahtjev.VrijemeZavrsetka;
                    prosireniZahtjev.CijenaNeizvrsenja          = zahtjev.CijenaNeizvrsenja;
                    prosireniZahtjev.Sirina                     = zahtjev.Sirina;
                    prosireniZahtjev.Visina                     = zahtjev.Visina;
                    prosireniZahtjev.Duiljina                   = zahtjev.Duiljina;
                    prosireniZahtjev.Masa                       = zahtjev.Masa;
                    prosireniZahtjev.Opis                       = zahtjev.Opis;
                    prosireniZahtjev.IdNarucitelj               = zahtjev.IdNarucitelj;
                    prosireniZahtjev.IdNaruciteljNavigation     = zahtjev.IdNaruciteljNavigation;
                    prosireniZahtjev.IdStatusZahtjeva           = zahtjev.IdStatusZahtjeva;
                    prosireniZahtjev.IdStatusZahtjevaNavigation = zahtjev.IdStatusZahtjevaNavigation;
                    prosireniZahtjev.PocetnaLokacijaUlica       = pocetnaLokacija.Ulica;
                    prosireniZahtjev.PocetnaLokacijaKucniBroj   = pocetnaLokacija.KucniBroj;
                    prosireniZahtjev.PocetnoMjesto              = pocetnoMjesto.Naziv;
                    prosireniZahtjev.PocetnoMjestoPbr           = pocetnoMjesto.PostanskiBroj;
                    prosireniZahtjev.OdredisnaLokacijaUlica     = odredisnaLokacija.Ulica;
                    prosireniZahtjev.OdredisnaLokacijaKucniBroj = odredisnaLokacija.KucniBroj;
                    prosireniZahtjev.OdredisnoMjesto            = odredisnoMjesto.Naziv;
                    prosireniZahtjev.OdredisnoMjestoPbr         = odredisnoMjesto.PostanskiBroj;

                    ProsireniPrijevozViewModel prosireniPrijevoz = new ProsireniPrijevozViewModel
                    {
                        Id               = prijevoz.Id,
                        Prijevoz         = prijevoz,
                        ProsireniZahtjev = prosireniZahtjev
                    };

                    prosireniPrijevozi.Add(prosireniPrijevoz);
                }
            }

            return(View(prosireniPrijevozi));
        }
        public ProsireniPrijevozViewModel vratiPrijevoz(int?id)
        {
            var prijevoz = _context.Prijevoz.Where(p => p.Id == id)
                           .Include(p => p.IdPonudaPrijevozaNavigation)
                           .Include(p => p.IdPonudaPrijevozaNavigation.IdStatusPonudeNavigation)
                           .Include(p => p.IdPonudaPrijevozaNavigation.IdPrijevoznikNavigation)
                           .Include(p => p.IdPonudaPrijevozaNavigation.IdPrijevoznikNavigation.IdKorisnikNavigation)
                           .Include(p => p.IdPonudaPrijevozaNavigation.IdZahtjevNavigation)
                           .Include(p => p.IdPonudaPrijevozaNavigation.IdZahtjevNavigation.IdStatusZahtjevaNavigation)
                           .Include(p => p.IdPonudaPrijevozaNavigation.IdZahtjevNavigation.IdNaruciteljNavigation)
                           .Include(p => p.IdPonudaPrijevozaNavigation.IdZahtjevNavigation.IdNaruciteljNavigation.IdKorisnikNavigation)
                           .FirstOrDefault();

            var zahtjev = _context.Zahtjev.Where(m => m.Id == prijevoz.IdPonudaPrijevozaNavigation.IdZahtjevNavigation.Id)
                          .Include(m => m.IdStatusZahtjevaNavigation)
                          .Include(m => m.IdNaruciteljNavigation).FirstOrDefault();

            var lokacijeZahtjeva = _context.ZahtjevLokacija.Where(m => m.IdZahtjev == zahtjev.Id)
                                   .Include(z => z.IdLokacijaNavigation)
                                   .Include(z => z.IdLokacijaNavigation.IdVrstaLokacijeNavigation)
                                   .Include(z => z.IdLokacijaNavigation.IdMjestoNavigation);

            Lokacija pocetnaLokacija   = null;
            Lokacija odredisnaLokacija = null;

            foreach (var lokacija in lokacijeZahtjeva)
            {
                if (lokacija.IdLokacijaNavigation.IdVrstaLokacijeNavigation.Vrsta == "početna")
                {
                    pocetnaLokacija = lokacija.IdLokacijaNavigation;
                }
                else
                {
                    odredisnaLokacija = lokacija.IdLokacijaNavigation;
                }
            }

            Mjesto pocetnoMjesto   = pocetnaLokacija.IdMjestoNavigation;
            Mjesto odredisnoMjesto = odredisnaLokacija.IdMjestoNavigation;


            ProsireniZahtjevViewModel prosireniZahtjev = new ProsireniZahtjevViewModel();

            prosireniZahtjev.Id                         = zahtjev.Id;
            prosireniZahtjev.VrijemePocetka             = zahtjev.VrijemePocetka;
            prosireniZahtjev.VrijemeZavrsetka           = zahtjev.VrijemeZavrsetka;
            prosireniZahtjev.CijenaNeizvrsenja          = zahtjev.CijenaNeizvrsenja;
            prosireniZahtjev.Sirina                     = zahtjev.Sirina;
            prosireniZahtjev.Visina                     = zahtjev.Visina;
            prosireniZahtjev.Duiljina                   = zahtjev.Duiljina;
            prosireniZahtjev.Masa                       = zahtjev.Masa;
            prosireniZahtjev.Opis                       = zahtjev.Opis;
            prosireniZahtjev.IdNarucitelj               = zahtjev.IdNarucitelj;
            prosireniZahtjev.IdNaruciteljNavigation     = zahtjev.IdNaruciteljNavigation;
            prosireniZahtjev.IdStatusZahtjeva           = zahtjev.IdStatusZahtjeva;
            prosireniZahtjev.IdStatusZahtjevaNavigation = zahtjev.IdStatusZahtjevaNavigation;
            prosireniZahtjev.PocetnaLokacijaUlica       = pocetnaLokacija.Ulica;
            prosireniZahtjev.PocetnaLokacijaKucniBroj   = pocetnaLokacija.KucniBroj;
            prosireniZahtjev.PocetnoMjesto              = pocetnoMjesto.Naziv;
            prosireniZahtjev.PocetnoMjestoPbr           = pocetnoMjesto.PostanskiBroj;
            prosireniZahtjev.OdredisnaLokacijaUlica     = odredisnaLokacija.Ulica;
            prosireniZahtjev.OdredisnaLokacijaKucniBroj = odredisnaLokacija.KucniBroj;
            prosireniZahtjev.OdredisnoMjesto            = odredisnoMjesto.Naziv;
            prosireniZahtjev.OdredisnoMjestoPbr         = odredisnoMjesto.PostanskiBroj;


            var naplate = _context.Naplata.Where(n => n.IdPrijevoz == prijevoz.Id)
                          .Include(n => n.IdVrstaNaplateNavigation)
                          .Include(n => n.IdRazlogNavigation).ToList();
            Naplata naplataNarucitelju  = null;
            Naplata naplataPrijevozniku = null;

            if (naplate.Count != 0)
            {
                foreach (var naplata in naplate)
                {
                    if (naplata.IdVrstaNaplateNavigation.Vrsta == "naručitelju")
                    {
                        naplataNarucitelju = _context.Naplata.Where(n => n.IdPrijevoz == prijevoz.Id).FirstOrDefault();
                    }
                    else if (naplata.IdVrstaNaplateNavigation.Vrsta == "prijevozniku")
                    {
                        naplataPrijevozniku = _context.Naplata.Where(n => n.IdPrijevoz == prijevoz.Id).FirstOrDefault();
                    }
                }
            }

            ProsireniPrijevozViewModel prosireniPrijevoz = new ProsireniPrijevozViewModel
            {
                Id                  = prijevoz.Id,
                Prijevoz            = prijevoz,
                ProsireniZahtjev    = prosireniZahtjev,
                NaplataNaručitelju  = naplataNarucitelju,
                NaplataPrijevozniku = naplataPrijevozniku
            };

            return(prosireniPrijevoz);
        }