public async Task <IActionResult> OtkaziPrijevoz(int IdPrijevoz) { var prijevoz = _context.Prijevoz.Where(p => p.Id == IdPrijevoz) .Include(p => p.IdPonudaPrijevozaNavigation) .Include(p => p.IdPonudaPrijevozaNavigation.IdZahtjevNavigation) .Include(p => p.IdPonudaPrijevozaNavigation.IdZahtjevNavigation.IdStatusZahtjevaNavigation) .FirstOrDefault(); var zahtjev = _context.Zahtjev.Where(m => m.Id == prijevoz.IdPonudaPrijevozaNavigation.IdZahtjev).FirstOrDefault(); StatusZahtjeva noviStatus = _context.StatusZahtjeva.Where(s => s.Status == "PristiglePonude").FirstOrDefault(); zahtjev.IdStatusZahtjeva = noviStatus.Id; _context.Zahtjev.Update(zahtjev); var ponudaPrijevoza = _context.PonudaPrijevoza.Where(m => m.Id == prijevoz.IdPonudaPrijevoza).FirstOrDefault(); StatusPonude statusGotovo = _context.StatusPonude.Where(s => s.Status == "Otvoreno").FirstOrDefault(); ponudaPrijevoza.IdStatusPonude = statusGotovo.Id; _context.PonudaPrijevoza.Update(ponudaPrijevoza); _context.Prijevoz.Remove(prijevoz); string urlString = "Details/" + zahtjev.Id.ToString(); await _context.SaveChangesAsync(); return(RedirectToAction(urlString, "ProsireniZahtjevi")); }
public async Task <IActionResult> Edit(int id, [Bind("Id,Status")] StatusZahtjeva statusZahtjeva) { if (id != statusZahtjeva.Id) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(statusZahtjeva); await _context.SaveChangesAsync(); TempData[Constants.Message] = $"Ažuriranje uspješno obavljeno"; TempData[Constants.ErrorOccurred] = false; } catch (DbUpdateConcurrencyException) { if (!StatusZahtjevaExists(statusZahtjeva.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(statusZahtjeva)); }
public async Task <IActionResult> DeleteConfirmed(int id) { try { var ponudaPrijevoza = await _context.PonudaPrijevoza.SingleOrDefaultAsync(m => m.Id == id); _context.PonudaPrijevoza.Remove(ponudaPrijevoza); await _context.SaveChangesAsync(); //mijenjanje statusa zahtjeva u Otvoreno ako se briše zadnja ponuda Zahtjev zahtjev = _context.Zahtjev.Where(z => z.Id == ponudaPrijevoza.IdZahtjev).Include(z => z.IdStatusZahtjevaNavigation).FirstOrDefault(); var ponude = _context.PonudaPrijevoza.Where(p => p.IdZahtjev == zahtjev.Id).ToList(); if (ponude.Count == 0) { StatusZahtjeva status = _context.StatusZahtjeva.Where(s => s.Status == "Otvoreno").FirstOrDefault(); zahtjev.IdStatusZahtjevaNavigation = status; _context.Zahtjev.Update(zahtjev); await _context.SaveChangesAsync(); } TempData[Constants.Message] = $"Ponuda prijevoza uspješno obrisan"; TempData[Constants.ErrorOccurred] = false; return(RedirectToAction(nameof(Index))); } catch (Exception exc) { TempData[Constants.Message] = "Pogreška prilikom brisanja ponude prijevoza: " + exc.CompleteExceptionMessage(); TempData[Constants.ErrorOccurred] = true; } return(RedirectToAction(nameof(Index))); }
// POST: Otkaži zahtjev za rezervacijom public async Task <IActionResult> PrihvatiRezervaciju(int IdPonuda) { PonudaPrijevoza ponuda = _context.PonudaPrijevoza.Where(p => p.Id == IdPonuda) .Include(p => p.IdPrijevoznikNavigation.IdKorisnikNavigation) .Include(p => p.IdZahtjevNavigation.IdNaruciteljNavigation.IdKorisnikNavigation) .Include(p => p.IdStatusPonudeNavigation).FirstOrDefault(); StatusPonude status = _context.StatusPonude.Where(s => s.Status == "Rezervirano").FirstOrDefault(); ponuda.IdStatusPonude = status.Id; _context.PonudaPrijevoza.Update(ponuda); Zahtjev zahtjev = _context.Zahtjev.Where(z => z.Id == ponuda.IdZahtjev).FirstOrDefault(); StatusZahtjeva rezervirano = _context.StatusZahtjeva.Where(s => s.Status == "Rezervirano").FirstOrDefault(); zahtjev.IdStatusZahtjeva = rezervirano.Id; _context.Zahtjev.Update(zahtjev); Prijevoz prijevoz = new Prijevoz { IdPonudaPrijevoza = IdPonuda }; _context.Prijevoz.Add(prijevoz); await _context.SaveChangesAsync(); TempData[Constants.Message] = $"Rezervacija ponude uspješna"; TempData[Constants.ErrorOccurred] = false; if (ponuda.IdZahtjevNavigation.IdNaruciteljNavigation.IdKorisnikNavigation.PrimaEmail) { var smtpClient = new SmtpClient { Host = "smtp.gmail.com", // set your SMTP server name here Port = 587, // Port EnableSsl = true, Credentials = new NetworkCredential("*****@*****.**", "carryon1") }; using (var message = new MailMessage("*****@*****.**", ponuda.IdZahtjevNavigation.IdNaruciteljNavigation.IdKorisnikNavigation.Email) { Subject = "Uspješna rezervacija prijevoza", Body = "Poštovani korisniče " + ponuda.IdZahtjevNavigation.IdNaruciteljNavigation.IdKorisnikNavigation.Ime + " " + ponuda.IdZahtjevNavigation.IdNaruciteljNavigation.IdKorisnikNavigation.Prezime + ", Vaš zahtjev za rezervacijom ponude prijevoza od korisnika " + ponuda.IdPrijevoznikNavigation.IdKorisnikNavigation.Ime + " " + ponuda.IdPrijevoznikNavigation.IdKorisnikNavigation.Prezime + " je uspješna. Rezervacija se odnosila na zahtjev s opisom: " + ponuda.IdZahtjevNavigation.Opis + "." }) { await smtpClient.SendMailAsync(message); } } string urlString = "Details/" + ponuda.IdZahtjev.ToString(); return(RedirectToAction(urlString, "ProsireniZahtjevi")); }
public async Task <IActionResult> Create([Bind("Id,Status")] StatusZahtjeva statusZahtjeva) { if (ModelState.IsValid) { _context.Add(statusZahtjeva); await _context.SaveChangesAsync(); TempData[Constants.Message] = $"Status zahtjeva {statusZahtjeva.Status} uspješno dodan"; TempData[Constants.ErrorOccurred] = false; return(RedirectToAction(nameof(Index))); } return(View(statusZahtjeva)); }
public async Task <IActionResult> GotovPrijevoz(string StatusZahtjeva, int IdPrijevoz) { var prijevoz = _context.Prijevoz.Where(p => p.Id == IdPrijevoz) .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) .FirstOrDefault(); var zahtjev = _context.Zahtjev.Where(m => m.Id == prijevoz.IdPonudaPrijevozaNavigation.IdZahtjev).FirstOrDefault(); StatusZahtjeva noviStatus = _context.StatusZahtjeva.Where(s => s.Status == StatusZahtjeva).FirstOrDefault(); zahtjev.IdStatusZahtjeva = noviStatus.Id; _context.Zahtjev.Update(zahtjev); /*if (prijevoz.IdPonudaPrijevozaNavigation.IdPrijevoznikNavigation.IdKorisnikNavigation.PrimaEmail) * { * var smtpClient = new SmtpClient * { * Host = "smtp.gmail.com", // set your SMTP server name here * Port = 587, // Port * EnableSsl = true, * Credentials = new NetworkCredential("*****@*****.**", "carryon1") * }; * * using (var message = new MailMessage("*****@*****.**", prijevoz.IdPonudaPrijevozaNavigation.IdPrijevoznikNavigation.IdKorisnikNavigation.Email) * { * Subject = "Informacije o prijevozu", * Body = "Poštovani korisniče " + prijevoz.IdPonudaPrijevozaNavigation.IdPrijevoznikNavigation.IdKorisnikNavigation.Ime + " " + * prijevoz.IdPonudaPrijevozaNavigation.IdPrijevoznikNavigation.IdKorisnikNavigation.Prezime + ", Vaš prijevoz je korisnik " + * zahtjev.IdNaruciteljNavigation.IdKorisnikNavigation.Ime + " " + zahtjev.IdNaruciteljNavigation.IdKorisnikNavigation.Prezime + * " označio kao " + noviStatus.Status + "." * }) * { * await smtpClient.SendMailAsync(message); * } * }*/ await _context.SaveChangesAsync(); string urlString = "Details/" + prijevoz.Id.ToString(); return(RedirectToAction(urlString)); }
// 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> Create([Bind("Id,Cijena,RokIstekaPonude,RokOtkazaPonude,CijenaOtkaza,IdZahtjev,IdPrijevoznik,IdStatusPonude")] PonudaPrijevoza ponudaPrijevoza) public async Task <IActionResult> Create(int IdZahtjev, [Bind("Id,Cijena,RokIstekaPonude,RokOtkazaPonude,CijenaOtkaza")] PonudaPrijevoza ponudaPrijevoza) { var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); ApplicationUser user = _context.Users.Where(u => u.Id == userId).FirstOrDefault(); if (ModelState.IsValid) { //mijenjanje statusa zahtjeva u PristiglePonude ako već nije Zahtjev zahtjev = _context.Zahtjev.Where(z => z.Id == IdZahtjev) .Include(z => z.IdStatusZahtjevaNavigation) .Include(z => z.IdNaruciteljNavigation.IdKorisnikNavigation).FirstOrDefault(); if (zahtjev.IdStatusZahtjevaNavigation.Status == "Otvoreno") { StatusZahtjeva status = _context.StatusZahtjeva.Where(s => s.Status == "PristiglePonude").FirstOrDefault(); zahtjev.IdStatusZahtjeva = status.Id; _context.Zahtjev.Update(zahtjev); } PonudaPrijevoza novaPonudaPrijevoza = new PonudaPrijevoza { Id = ponudaPrijevoza.Id, Cijena = ponudaPrijevoza.Cijena, RokIstekaPonude = ponudaPrijevoza.RokIstekaPonude, RokOtkazaPonude = ponudaPrijevoza.RokOtkazaPonude, CijenaOtkaza = ponudaPrijevoza.CijenaOtkaza, IdZahtjev = IdZahtjev, IdPrijevoznik = user.IdKorisnik, IdStatusPonude = 1 }; _context.Add(novaPonudaPrijevoza); await _context.SaveChangesAsync(); TempData[Constants.Message] = $"Ponuda prijevoza dodana."; TempData[Constants.ErrorOccurred] = false; PonudaPrijevoza ponuda = _context.PonudaPrijevoza.Where(p => p.Id == ponudaPrijevoza.Id). Include(p => p.IdPrijevoznikNavigation.IdKorisnikNavigation).FirstOrDefault(); if (zahtjev.IdNaruciteljNavigation.IdKorisnikNavigation.PrimaEmail) { var smtpClient = new SmtpClient { Host = "smtp.gmail.com", // set your SMTP server name here Port = 587, // Port EnableSsl = true, Credentials = new NetworkCredential("*****@*****.**", "carryon1") }; using (var message = new MailMessage("*****@*****.**", zahtjev.IdNaruciteljNavigation.IdKorisnikNavigation.Email) { Subject = "Primljena ponuda", Body = "Poštovani korisniče " + zahtjev.IdNaruciteljNavigation.IdKorisnikNavigation.Ime + " " + zahtjev.IdNaruciteljNavigation.IdKorisnikNavigation.Prezime + ", zaprimili ste ponudu prijevoza od korisnika " + ponuda.IdPrijevoznikNavigation.IdKorisnikNavigation.Ime + " " + ponuda.IdPrijevoznikNavigation.IdKorisnikNavigation.Prezime + ". Ponuda se odnosi na zahtjev s opisom: " + zahtjev.Opis + "." }) { await smtpClient.SendMailAsync(message); } } string urlString = "Details/" + IdZahtjev.ToString(); return(RedirectToAction(urlString, "ProsireniZahtjevi")); } ViewData["IdPrijevoznik"] = new SelectList(_context.Prijevoznik, "IdKorisnik", "IdKorisnik", ponudaPrijevoza.IdPrijevoznik); ViewData["IdStatusPonude"] = new SelectList(_context.StatusPonude, "Id", "Status", ponudaPrijevoza.IdStatusPonude); ViewData["IdZahtjev"] = new SelectList(_context.Zahtjev, "Id", "Opis", ponudaPrijevoza.IdZahtjev); return(View(ponudaPrijevoza)); }