public async Task <IActionResult> Edit(int id, [Bind("Id,IdZahtjev,IdLokacija")] ZahtjevLokacija zahtjevLokacija) { if (id != zahtjevLokacija.Id) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(zahtjevLokacija); await _context.SaveChangesAsync(); TempData[Constants.Message] = "Ažuriranje uspješno obavljeno"; TempData[Constants.ErrorOccurred] = false; } catch (DbUpdateConcurrencyException) { if (!ZahtjevLokacijaExists(zahtjevLokacija.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } ViewData["IdLokacija"] = new SelectList(_context.Lokacija, "Id", "Ulica", zahtjevLokacija.IdLokacija); ViewData["IdZahtjev"] = new SelectList(_context.Zahtjev, "Id", "Opis", zahtjevLokacija.IdZahtjev); return(View(zahtjevLokacija)); }
public async Task <IActionResult> Create([Bind("Id,IdZahtjev,IdLokacija")] ZahtjevLokacija zahtjevLokacija) { if (ModelState.IsValid) { _context.Add(zahtjevLokacija); await _context.SaveChangesAsync(); TempData[Constants.Message] = $"Lokacija uspješno dodana zahtjevu"; TempData[Constants.ErrorOccurred] = false; return(RedirectToAction(nameof(Index))); } ViewData["IdLokacija"] = new SelectList(_context.Lokacija, "Id", "Ulica", zahtjevLokacija.IdLokacija); ViewData["IdZahtjev"] = new SelectList(_context.Zahtjev, "Id", "Opis", zahtjevLokacija.IdZahtjev); return(View(zahtjevLokacija)); }
// POST: Zahtjevi/Create public async Task <IActionResult> Create([Bind("Id,VrijemePocetka,VrijemeZavrsetka,CijenaNeizvrsenja,Sirina,Visina,Duiljina," + "Masa,Opis, PocetnaLokacijaUlica, PocetnaLokacijaKucniBroj, PocetnoMjesto, PocetnoMjestoPbr," + "OdredisnaLokacijaUlica, OdredisnaLokacijaKucniBroj, OdredisnoMjesto, OdredisnoMjestoPbr")] ProsireniZahtjevViewModel prosireniZahtjev) { if (ModelState.IsValid) { var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); ApplicationUser user = _context.Users.Where(u => u.Id == userId).FirstOrDefault(); StatusZahtjeva status = _context.StatusZahtjeva.Where(s => s.Status == "Otvoreno").FirstOrDefault(); var zahtjev = new Zahtjev { Id = prosireniZahtjev.Id, VrijemePocetka = prosireniZahtjev.VrijemePocetka, VrijemeZavrsetka = prosireniZahtjev.VrijemeZavrsetka, CijenaNeizvrsenja = prosireniZahtjev.CijenaNeizvrsenja, Sirina = prosireniZahtjev.Sirina, Visina = prosireniZahtjev.Visina, Duiljina = prosireniZahtjev.Duiljina, Masa = prosireniZahtjev.Masa, Opis = prosireniZahtjev.Opis, IdStatusZahtjeva = status.Id, IdNarucitelj = user.IdKorisnik, }; _context.Zahtjev.Add(zahtjev); //po?etno mjesto Mjesto pocetnoMjesto = null; if (_context.Mjesto.Any(m => m.PostanskiBroj == prosireniZahtjev.PocetnoMjestoPbr)) { pocetnoMjesto = _context.Mjesto.Where(m => m.PostanskiBroj == prosireniZahtjev.PocetnoMjestoPbr).FirstOrDefault(); TempData[Constants.Message] = "Po?etno mjesto ve? postoji u bazi "; TempData[Constants.ErrorOccurred] = true; } else { pocetnoMjesto = new Mjesto { Naziv = prosireniZahtjev.PocetnoMjesto, PostanskiBroj = prosireniZahtjev.PocetnoMjestoPbr }; _context.Mjesto.Add(pocetnoMjesto); } //odredišno mjesto Mjesto odredisnoMjesto = null; if (_context.Mjesto.Any(m => m.PostanskiBroj == prosireniZahtjev.OdredisnoMjestoPbr)) { odredisnoMjesto = _context.Mjesto.Where(m => m.PostanskiBroj == prosireniZahtjev.OdredisnoMjestoPbr).FirstOrDefault(); TempData[Constants.Message] = "Odredišno mjesto ve? postoji u bazi "; TempData[Constants.ErrorOccurred] = true; } else { odredisnoMjesto = new Mjesto { Naziv = prosireniZahtjev.OdredisnoMjesto, PostanskiBroj = prosireniZahtjev.OdredisnoMjestoPbr }; _context.Mjesto.Add(odredisnoMjesto); } //vrste lokacije var vrstaPocetna = await _context.VrstaLokacije.SingleOrDefaultAsync(m => m.Vrsta == "po?etna"); var vrstaOdredišna = await _context.VrstaLokacije.SingleOrDefaultAsync(m => m.Vrsta == "odredišna"); //po?etna lokacija Lokacija pocetnaLokacija = null; if (_context.Lokacija.Any(m => m.IdMjesto == pocetnoMjesto.Id && m.Ulica == prosireniZahtjev.PocetnaLokacijaUlica && m.KucniBroj == prosireniZahtjev.PocetnaLokacijaKucniBroj && m.IdVrstaLokacije == 1)) { pocetnaLokacija = _context.Lokacija.Where(m => m.Ulica == prosireniZahtjev.PocetnaLokacijaUlica && m.KucniBroj == prosireniZahtjev.PocetnaLokacijaKucniBroj && m.IdMjesto == pocetnoMjesto.Id && m.IdVrstaLokacije == vrstaPocetna.Id).FirstOrDefault(); TempData[Constants.Message] = "Po?etna lokacija ve? postoji u bazi "; TempData[Constants.ErrorOccurred] = true; } else { pocetnaLokacija = new Lokacija { Ulica = prosireniZahtjev.PocetnaLokacijaUlica, KucniBroj = prosireniZahtjev.PocetnaLokacijaKucniBroj, IdMjestoNavigation = pocetnoMjesto, IdMjesto = pocetnoMjesto.Id, IdVrstaLokacijeNavigation = vrstaPocetna, IdVrstaLokacije = 1 }; _context.Lokacija.Add(pocetnaLokacija); } //odredišna lokacija Lokacija odredisnaLokacija = null; if (_context.Mjesto.Any(m => m.PostanskiBroj == prosireniZahtjev.OdredisnoMjestoPbr) && _context.Lokacija.Any(m => m.Ulica == prosireniZahtjev.OdredisnaLokacijaUlica) && _context.Lokacija.Any(m => m.KucniBroj == prosireniZahtjev.OdredisnaLokacijaKucniBroj) && _context.Lokacija.Any(m => m.IdVrstaLokacije == 2)) { odredisnaLokacija = _context.Lokacija.Where(m => m.Ulica == prosireniZahtjev.OdredisnaLokacijaUlica && m.KucniBroj == prosireniZahtjev.OdredisnaLokacijaKucniBroj && m.IdMjesto == odredisnoMjesto.Id && m.IdVrstaLokacije == vrstaOdredišna.Id).FirstOrDefault(); TempData[Constants.Message] = "Odredišna lokacija ve? postoji u bazi "; TempData[Constants.ErrorOccurred] = true; } else { odredisnaLokacija = new Lokacija { Ulica = prosireniZahtjev.OdredisnaLokacijaUlica, KucniBroj = prosireniZahtjev.OdredisnaLokacijaKucniBroj, IdMjesto = odredisnoMjesto.Id, IdMjestoNavigation = odredisnoMjesto, IdVrstaLokacijeNavigation = vrstaOdredišna, IdVrstaLokacije = 2, }; _context.Lokacija.Add(odredisnaLokacija); } // zahtjev - po?etna lokacija var zahtjevPocetnaLokacija = new ZahtjevLokacija { IdZahtjev = zahtjev.Id, IdLokacija = pocetnaLokacija.Id, IdZahtjevNavigation = zahtjev, }; _context.ZahtjevLokacija.Add(zahtjevPocetnaLokacija); // zahtjev - odredišna lokacija var zahtjevOdredisnaLokacija = new ZahtjevLokacija { IdZahtjev = zahtjev.Id, IdLokacija = odredisnaLokacija.Id, IdZahtjevNavigation = zahtjev, }; _context.ZahtjevLokacija.Add(zahtjevOdredisnaLokacija); await _context.SaveChangesAsync(); TempData[Constants.Message] = $"Prosireni zahtjev uspješno dodan"; TempData[Constants.ErrorOccurred] = false; } return(RedirectToAction(nameof(MojiZahtjevi))); }
public async Task <IActionResult> Edit(int id, [Bind("Id,VrijemePocetka,VrijemeZavrsetka,CijenaNeizvrsenja,Sirina,Visina,Duiljina,Masa,Opis,IdStatusZahtjeva,IdNarucitelj,PocetnaLokacijaUlica,PocetnaLokacijaKucniBroj,PocetnoMjesto,PocetnoMjestoPbr,OdredisnaLokacijaUlica,OdredisnaLokacijaKucniBroj,OdredisnoMjesto,OdredisnoMjestoPbr")] ProsireniZahtjevViewModel prosireniZahtjev) { var zahtjev = await _context.Zahtjev.SingleOrDefaultAsync(m => m.Id == id); if (id != zahtjev.Id) { return(NotFound()); } var lokacijeZahtjeva = _context.ZahtjevLokacija.Where(m => m.IdZahtjev == 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; if (ModelState.IsValid) { try { zahtjev.VrijemePocetka = prosireniZahtjev.VrijemePocetka; zahtjev.VrijemeZavrsetka = prosireniZahtjev.VrijemeZavrsetka; zahtjev.CijenaNeizvrsenja = prosireniZahtjev.CijenaNeizvrsenja; zahtjev.Sirina = prosireniZahtjev.Sirina; zahtjev.Visina = prosireniZahtjev.Visina; zahtjev.Duiljina = prosireniZahtjev.Duiljina; zahtjev.Opis = prosireniZahtjev.Opis; zahtjev.IdNarucitelj = prosireniZahtjev.IdNarucitelj; zahtjev.IdStatusZahtjeva = prosireniZahtjev.IdStatusZahtjeva; _context.Zahtjev.Update(zahtjev); //ako po?etno mjesto postoji u bazi, u lokaciju stavi njegov id, ako ne, dodaj ga u bazu if (_context.Mjesto.Any(m => m.PostanskiBroj == prosireniZahtjev.PocetnoMjestoPbr && m.Naziv == prosireniZahtjev.PocetnoMjesto)) { pocetnoMjesto = _context.Mjesto.Where(m => m.PostanskiBroj == prosireniZahtjev.PocetnoMjestoPbr && m.Naziv == prosireniZahtjev.PocetnoMjesto).FirstOrDefault(); pocetnaLokacija.Id = pocetnoMjesto.Id; pocetnaLokacija.IdMjestoNavigation = pocetnoMjesto; } else { Mjesto novoMjesto = new Mjesto { Naziv = prosireniZahtjev.PocetnoMjesto, PostanskiBroj = prosireniZahtjev.PocetnoMjestoPbr }; _context.Mjesto.Add(novoMjesto); pocetnaLokacija.IdMjesto = novoMjesto.Id; pocetnaLokacija.IdMjestoNavigation = novoMjesto; } //ako odredišno mjesto postoji u bazi, u lokaciju stavi njegov id, ako ne, dodaj ga u bazu if (_context.Mjesto.Any(m => m.PostanskiBroj == prosireniZahtjev.OdredisnoMjestoPbr && m.Naziv == prosireniZahtjev.OdredisnoMjesto)) { odredisnoMjesto = _context.Mjesto.Where(m => m.PostanskiBroj == prosireniZahtjev.OdredisnoMjestoPbr && m.Naziv == prosireniZahtjev.OdredisnoMjesto).FirstOrDefault(); odredisnaLokacija.IdMjesto = odredisnoMjesto.Id; odredisnaLokacija.IdMjestoNavigation = odredisnoMjesto; } else { Mjesto novoMjesto = new Mjesto { Naziv = prosireniZahtjev.OdredisnoMjesto, PostanskiBroj = prosireniZahtjev.OdredisnoMjestoPbr }; _context.Mjesto.Add(novoMjesto); odredisnaLokacija.IdMjesto = novoMjesto.Id; odredisnaLokacija.IdMjestoNavigation = novoMjesto; } pocetnaLokacija.Ulica = prosireniZahtjev.PocetnaLokacijaUlica; pocetnaLokacija.KucniBroj = prosireniZahtjev.PocetnaLokacijaKucniBroj; //ako po?etna lokacija postoji u bazi, u zahtjev-lokacije stavi njezin id, ako ne, ažuriraj ovu u bazi if (_context.Lokacija.Any(l => l.KucniBroj == pocetnaLokacija.KucniBroj && l.Ulica == pocetnaLokacija.Ulica && l.IdMjesto == pocetnaLokacija.IdMjesto && l.IdVrstaLokacijeNavigation.Vrsta == "po?etna")) { ZahtjevLokacija pocetnaLokacijaZahtjev = _context.ZahtjevLokacija.Where(m => m.IdZahtjev == zahtjev.Id && m.IdLokacija == pocetnaLokacija.Id).FirstOrDefault(); pocetnaLokacija = _context.Lokacija.Where(l => l.KucniBroj == pocetnaLokacija.KucniBroj && l.Ulica == pocetnaLokacija.Ulica && l.IdMjesto == pocetnaLokacija.IdMjesto && l.IdVrstaLokacijeNavigation.Vrsta == "po?etna").FirstOrDefault(); pocetnaLokacijaZahtjev.Id = pocetnaLokacija.Id; pocetnaLokacijaZahtjev.IdLokacijaNavigation = pocetnaLokacija; _context.ZahtjevLokacija.Update(pocetnaLokacijaZahtjev); } else { _context.Lokacija.Update(pocetnaLokacija); } odredisnaLokacija.Ulica = prosireniZahtjev.OdredisnaLokacijaUlica; odredisnaLokacija.KucniBroj = prosireniZahtjev.OdredisnaLokacijaKucniBroj; //ako odredišna lokacija postoji u bazi, u zahtjev-lokacije stavi njezin id, ako ne, ažuriraj ovu u bazi if (_context.Lokacija.Any(l => l.KucniBroj == odredisnaLokacija.KucniBroj && l.Ulica == odredisnaLokacija.Ulica && l.IdMjesto == odredisnaLokacija.IdMjesto && l.IdVrstaLokacijeNavigation.Vrsta == "odredišna")) { ZahtjevLokacija odredisnaLokacijaZahtjev = _context.ZahtjevLokacija.Where(m => m.IdZahtjev == zahtjev.Id && m.IdLokacija == odredisnaLokacija.Id).FirstOrDefault(); odredisnaLokacija = _context.Lokacija.Where(l => l.KucniBroj == odredisnaLokacija.KucniBroj && l.Ulica == odredisnaLokacija.Ulica && l.IdMjesto == odredisnaLokacija.IdMjesto && l.IdVrstaLokacijeNavigation.Vrsta == "odredišna").FirstOrDefault(); odredisnaLokacijaZahtjev.Id = odredisnaLokacija.Id; odredisnaLokacijaZahtjev.IdLokacijaNavigation = odredisnaLokacija; _context.ZahtjevLokacija.Update(odredisnaLokacijaZahtjev); } else { _context.Lokacija.Update(odredisnaLokacija); } await _context.SaveChangesAsync(); TempData[Constants.Message] = "Ažuriranje uspješno obavljeno"; TempData[Constants.ErrorOccurred] = false; } catch (DbUpdateConcurrencyException) { if (!ZahtjevExists(zahtjev.Id)) { return(NotFound()); } else { throw; } } } string urlString = "MojZahtjev/" + zahtjev.Id.ToString(); ViewData["IdNarucitelj"] = new SelectList(_context.Narucitelj, "IdKorisnik", "IdKorisnik", zahtjev.IdNarucitelj); ViewData["IdStatusZahtjeva"] = new SelectList(_context.StatusZahtjeva, "Id", "Status", zahtjev.IdStatusZahtjeva); return(RedirectToAction(urlString));; }