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));
        }
示例#3
0
        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)));
        }
示例#4
0
        // 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));
        }
示例#7
0
        // 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)));
        }
示例#8
0
        //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));
        }