public IHttpActionResult GetDriversDrives([FromUri] String id) { if (GetBlockedUsers.Contains(id)) { return(Content(HttpStatusCode.Forbidden, "Blokirani ste!")); } Korisnik kor = db.Korisnici.Include(korisnik => korisnik.Voznje).ToList().Find(k => k.KorisnikID == id); if (kor == null) { return(NotFound()); } if (!GetLoggedUsers.Contains(id)) { return(Unauthorized()); } if (kor.Uloga == EUloga.MUSTERIJA) { return(Unauthorized()); } List <Voznja> retVoznje = voznje.Voznjas.Include(kom => kom.KomentarVoznje).Where(i => i.VozacID == id).ToList(); return(Ok(retVoznje)); }
public IHttpActionResult GetPage([FromUri] string id) { if (GetBlockedUsers.Contains(id)) { return(Content(HttpStatusCode.Forbidden, "Blokirani ste!")); } if (!GetLoggedUsers.Contains(id)) { return(Content(HttpStatusCode.Unauthorized, "Niste prijvaljeni")); } Korisnik korisnik = db.Korisnici.Include(e => e.LokacijaVozaca).ToList().Find(kor => kor.KorisnikID == id); if (korisnik == null) { return(NotFound()); } if (korisnik.Uloga == EUloga.MUSTERIJA) { return(Ok("./Content/partials/profileKorisnik.html")); } else if (korisnik.Uloga == EUloga.DISPECER) { return(Ok("./Content/partials/profileDispecer.html")); } else { return(Ok("./Content/partials/profileVozac.html")); } }
public IHttpActionResult Login(PrijavaModel prijava) { if (GetBlockedUsers.Contains(prijava.Username)) { return(Content(HttpStatusCode.Forbidden, "Blokirani ste!")); } if (!KorisnikExists(prijava.Username)) { return(BadRequest("Neispravan username ili lozinka")); } Korisnik k = db.Korisnici.Include(e => e.LokacijaVozaca).ToList().Find(kor => kor.KorisnikID == prijava.Username); if (k.Lozinka != prijava.Password) { return(BadRequest("Neispravan username ili lozinka")); } if (!GetLoggedUsers.Contains(k.KorisnikID)) { GetLoggedUsers.Add(k.KorisnikID); } return(Ok(k)); }
public IHttpActionResult Blokiraj(BlockUnblockModel model) { if (!GetLoggedUsers.Contains(model.SenderID)) { return(Unauthorized()); } Korisnik disp = db.Korisnici.Find(model.SenderID); if (disp == null) { return(NotFound()); } if (disp.Uloga != EUloga.DISPECER) { return(Unauthorized()); } if (GetBlockedUsers.Contains(model.KorisnikID)) { return(Content(HttpStatusCode.NotAcceptable, "Korisnik je vec blokiran")); } GetBlockedUsers.Add(model.KorisnikID); return(Ok()); }
public IHttpActionResult PotvrdiVoznju(PotvrdaVoznjeModel potvrda) { if (GetBlockedUsers.Contains(potvrda.SenderID)) { return(Content(HttpStatusCode.Forbidden, "Blokirani ste!")); } if (!GetLoggedUsers.Contains(potvrda.SenderID)) { return(Unauthorized()); } Korisnik k = kor.Korisnici.Find(potvrda.SenderID); if (k == null) { return(NotFound()); } if (k.Uloga != EUloga.VOZAC) { return(Unauthorized()); } Voznja ciljanaVoznja = db.Voznjas.Find(potvrda.VoznjaID); if (ciljanaVoznja == null) { return(NotFound()); } if (ciljanaVoznja.StatusVoznje != EStatus.FORMIRANA && ciljanaVoznja.StatusVoznje != EStatus.OBRADJENA && ciljanaVoznja.StatusVoznje != EStatus.PRIHVACENA && ciljanaVoznja.StatusVoznje != EStatus.UTOKU) { return(Content(HttpStatusCode.NotAcceptable, "Ne mozete potvrditi ovu voznju")); } ciljanaVoznja.StatusVoznje = EStatus.USPESNA; ciljanaVoznja.Odrediste_XKoordinata = potvrda.OdredisteX; ciljanaVoznja.Odrediste_YKoordinata = potvrda.OdredisteY; ciljanaVoznja.Iznos = potvrda.Iznos; db.Entry(ciljanaVoznja).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!VoznjaExists(ciljanaVoznja.VoznjaID)) { return(NotFound()); } else { throw; } } return(Ok(ciljanaVoznja)); }
public IHttpActionResult OktaziVoznju(PromenaVoznjeModel otkazivanje) { if (GetBlockedUsers.Contains(otkazivanje.SenderID)) { return(Content(HttpStatusCode.Forbidden, "Blokirani ste!")); } if (!GetLoggedUsers.Contains(otkazivanje.SenderID)) { return(Unauthorized()); } Korisnik k = kor.Korisnici.Find(otkazivanje.SenderID); if (k == null) { return(NotFound()); } if (k.Uloga != EUloga.MUSTERIJA) { return(Unauthorized()); } Voznja v = db.Voznjas.Find(otkazivanje.VoznjaID); if (v == null) { return(NotFound()); } if (v.StatusVoznje != EStatus.KREIRANA) { return(Content(HttpStatusCode.NotAcceptable, "Voznja je u medjuvremenu promenila stanje")); } v.StatusVoznje = EStatus.OTKAZANA; v.Odrediste_XKoordinata = null; v.Odrediste_YKoordinata = null; db.Entry(v).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!VoznjaExists(v.VoznjaID)) { return(NotFound()); } else { throw; } } return(Ok(v)); }
public IHttpActionResult PostVozac(VozacRegistrationModel vozac) { String sender = vozac.IdSender; if (!GetLoggedUsers.Contains(sender)) { return(Unauthorized()); } Korisnik korisnik = db.Korisnici.Include(e => e.LokacijaVozaca).ToList().Find(kor => kor.KorisnikID == vozac.IdSender); if (korisnik == null) { return(NotFound()); } if (korisnik.Uloga != EUloga.DISPECER) { return(Unauthorized()); } Korisnik korVozac = new Korisnik() { KorisnikID = vozac.KorisnikID, EMail = vozac.EMail, Ime = vozac.Ime, Prezime = vozac.Prezime, JMBG = vozac.JMBG, Lozinka = vozac.Lozinka, Pol = vozac.Pol, Telefon = vozac.Telefon, Uloga = EUloga.VOZAC, ZeljeniTip = vozac.ZeljeniTip, AutomobilID = vozac.AutomobilID }; db.Korisnici.Add(korVozac); try { db.SaveChanges(); } catch (DbUpdateException) { if (KorisnikExists(korVozac.KorisnikID)) { return(Conflict()); } else { throw; } } return(Ok()); }
public IHttpActionResult Logout([FromBody] string id) { if (!GetLoggedUsers.Contains(id)) { return(Unauthorized()); } GetLoggedUsers.Remove(id); return(Ok()); }
public IHttpActionResult OdbaciVoznju(PromenaVoznjeModel prom) { if (!GetLoggedUsers.Contains(prom.SenderID)) { return(Unauthorized()); } if (GetBlockedUsers.Contains(prom.SenderID)) { return(Content(HttpStatusCode.Forbidden, "Blokirani ste!")); } Korisnik k = kor.Korisnici.Include(voz => voz.Voznje).ToList().Find(korisnik => korisnik.KorisnikID == prom.SenderID); if (k.Uloga != EUloga.VOZAC) { return(Unauthorized()); } Voznja ciljanaVoznja = db.Voznjas.Find(prom.VoznjaID); if (ciljanaVoznja == null) { return(NotFound()); } if (ciljanaVoznja.StatusVoznje != EStatus.FORMIRANA && ciljanaVoznja.StatusVoznje != EStatus.OBRADJENA && ciljanaVoznja.StatusVoznje != EStatus.PRIHVACENA && ciljanaVoznja.StatusVoznje != EStatus.UTOKU) { return(Content(HttpStatusCode.NotAcceptable, "Voznja je u medjuvremenu promenila status")); } ciljanaVoznja.StatusVoznje = EStatus.NEUSPESNA; ciljanaVoznja.Odrediste_XKoordinata = null; ciljanaVoznja.Odrediste_YKoordinata = null; db.Entry(ciljanaVoznja).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!VoznjaExists(ciljanaVoznja.VoznjaID)) { return(NotFound()); } else { throw; } } return(Ok(ciljanaVoznja)); }
public IHttpActionResult PromenaLokacije(PromenaLokacijeModel promena) { if (GetBlockedUsers.Contains(promena.SenderID)) { return(Content(HttpStatusCode.Forbidden, "Blokirani ste!")); } if (!GetLoggedUsers.Contains(promena.SenderID)) { return(Unauthorized()); } Korisnik vozac = db.Korisnici.Find(promena.KorisnikID); Korisnik sender = db.Korisnici.Find(promena.SenderID); if (vozac.Uloga != EUloga.VOZAC) { return(Content(HttpStatusCode.NotAcceptable, "Lokacija se dodeljuje samo vozacu")); } if (sender.Uloga == EUloga.MUSTERIJA) { return(Unauthorized()); } vozac.XKoordinata = promena.LokacijaX; vozac.YKoordinata = promena.LokacijaY; db.Entry(vozac).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!KorisnikExists(vozac.KorisnikID)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }
public IHttpActionResult DodeliKomentarVoznji(DodelaKomentaraModel dm) { if (GetBlockedUsers.Contains(dm.KorisnikID)) { return(Content(HttpStatusCode.Forbidden, "Blokirani ste!")); } if (!GetLoggedUsers.Contains(dm.KorisnikID)) { return(Unauthorized()); } Komentar komentar = kom.Komentari.Find(dm.KomentarID); if (komentar == null) { return(NotFound()); } Voznja v = db.Voznjas.Find(dm.VoznjaID); if (v == null) { return(NotFound()); } v.KomentarID = dm.KomentarID; db.Entry(v).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!VoznjaExists(v.VoznjaID)) { return(NotFound()); } else { throw; } } return(Ok(v)); }
public IHttpActionResult GetVoznjas([FromUri] String id) { if (!GetLoggedUsers.Contains(id)) { return(Unauthorized()); } Korisnik k = kor.Korisnici.Find(id); if (k == null) { return(NotFound()); } if (k.Uloga != EUloga.DISPECER) { return(Unauthorized()); } return(Ok(db.Voznjas.Include(m => m.Musterija).Include(koment => koment.KomentarVoznje).Include(v => v.Vozac).ToList())); }
public IHttpActionResult PutKorisnik(Korisnik korisnik) { if (GetBlockedUsers.Contains(korisnik.KorisnikID)) { return(Content(HttpStatusCode.Forbidden, "Blokirani ste!")); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (!GetLoggedUsers.Contains(korisnik.KorisnikID)) { return(Content(HttpStatusCode.Unauthorized, "Morate biti ulogovani da biste izvrsili ovu operaciju")); } db.Entry(korisnik).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!KorisnikExists(korisnik.KorisnikID)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }
public IHttpActionResult GetKorisnik([FromUri] string id) { if (GetBlockedUsers.Contains(id)) { return(Content(HttpStatusCode.Forbidden, "Blokirani ste!")); } if (!GetLoggedUsers.Contains(id)) { return(Content(HttpStatusCode.Unauthorized, "Niste ulogovani")); } Korisnik korisnik = db.Korisnici.Include(e => e.LokacijaVozaca).ToList().Find(kor => kor.KorisnikID == id); if (korisnik == null) { return(NotFound()); } return(Ok(korisnik)); }
public IHttpActionResult GetNonDispecer([FromUri] string id) { if (!GetLoggedUsers.Contains(id)) { return(Unauthorized()); } Korisnik k = db.Korisnici.Find(id); if (k.Uloga != EUloga.DISPECER) { return(Unauthorized()); } List <List <Korisnik> > ret = new List <List <Korisnik> >(); // prvi el su blokirani, drugi ostali List <Korisnik> blokirani = new List <Korisnik>(); List <Korisnik> neblokirani = new List <Korisnik>(); List <Korisnik> sviKorisnici = db.Korisnici.Where(koris => koris.Uloga != EUloga.DISPECER).ToList(); foreach (Korisnik kor in sviKorisnici) { if (GetBlockedUsers.Contains(kor.KorisnikID)) { blokirani.Add(kor); } else { neblokirani.Add(kor); } } ret.Add(blokirani); ret.Add(neblokirani); return(Ok(ret)); }
public IHttpActionResult GetDispecerDrives([FromUri] String id) { if (!GetLoggedUsers.Contains(id)) { return(Unauthorized()); } Korisnik k = db.Korisnici.Find(id); if (k == null) { return(NotFound()); } if (k.Uloga != EUloga.DISPECER) { return(Unauthorized()); } List <Voznja> retVoznje = voznje.Voznjas.Include(kom => kom.KomentarVoznje).Include(v => v.Vozac).Include(koris => koris.Musterija).Where(i => i.DispecerID == id).ToList(); return(Ok(retVoznje)); }
public IHttpActionResult GetFreeDriver(NearestFiveModel model) { if (!GetLoggedUsers.Contains(model.KorisnikID)) { return(Unauthorized()); } Korisnik k = db.Korisnici.Find(model.KorisnikID); if (k == null) { return(NotFound()); } if (k.Uloga != EUloga.DISPECER) { return(Unauthorized()); } List <Korisnik> vozaci = db.Korisnici.Include(kor => kor.Voznje).ToList().Where(a => a.Uloga == EUloga.VOZAC).ToList(); List <Korisnik> slobodniVozaci = vozaci.Where(kor => { List <Voznja> voznjas = voznje.Voznjas.Where(v => v.VozacID == kor.KorisnikID).ToList(); if (voznjas.Any(vz => vz.StatusVoznje == EStatus.UTOKU)) { return(false); } else { return(true); } }).ToList(); List <Korisnik> retVozaci = new List <Korisnik>(); if (slobodniVozaci.Count > 5) { Double x, y; try { x = Double.Parse(model.LokacijaX); y = Double.Parse(model.LokacijaY); } catch (Exception) { return(InternalServerError()); } Point lokacija = new Point(x, y); foreach (Korisnik koris in slobodniVozaci) { if (retVozaci.Count < 5) { retVozaci.Add(koris); } else { Double korisLokX, korisLokY; try { korisLokX = Double.Parse(koris.XKoordinata); korisLokY = Double.Parse(koris.YKoordinata); } catch (Exception) { return(InternalServerError()); } Point korisLokacija = new Point(korisLokX, korisLokY); Double korisRazdaljina = Math.Abs(Point.Subtract(lokacija, korisLokacija).Length); Double najvecaRazdaljina = 0; int index = -1; for (int i = 0; i < retVozaci.Count; i++) { Double iLokX, iLokY; try { iLokX = Double.Parse(retVozaci[i].XKoordinata); iLokY = Double.Parse(retVozaci[i].YKoordinata); } catch (Exception) { return(InternalServerError()); } Point iLok = new Point(iLokX, iLokY); Double iRazdaljina = Math.Abs(Point.Subtract(lokacija, iLok).Length); if (iRazdaljina > najvecaRazdaljina) { najvecaRazdaljina = iRazdaljina; index = i; } } if (najvecaRazdaljina > korisRazdaljina) { retVozaci.RemoveAt(index); retVozaci.Add(koris); } } } } else { retVozaci = slobodniVozaci; } return(Ok(retVozaci)); }
public IHttpActionResult PostVoznja(Voznja voznja) { if (GetBlockedUsers.Contains(voznja.MusterijaID)) { return(Content(HttpStatusCode.Forbidden, "Blokirani ste!")); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (voznja.DispecerID == null && voznja.MusterijaID == null) { return(Unauthorized()); } else if (voznja.DispecerID != null && !GetLoggedUsers.Contains(voznja.DispecerID)) { return(Unauthorized()); } else if (voznja.MusterijaID != null && !GetLoggedUsers.Contains(voznja.MusterijaID)) { return(Unauthorized()); } Korisnik k = new Korisnik(); if (voznja.DispecerID != null) { k = kor.Korisnici.Find(voznja.DispecerID); if (k.Uloga != EUloga.DISPECER) { return(Unauthorized()); } Korisnik vozac = kor.Korisnici.Find(voznja.VozacID); if (vozac.ZeljeniTip != voznja.ZeljeniTip && vozac.ZeljeniTip != ETipAutomobila.PROIZVOLJNO && voznja.ZeljeniTip != ETipAutomobila.PROIZVOLJNO) { return(Content(HttpStatusCode.NotAcceptable, "Vozac ne poseduje ovaj tip automobila")); } } else if (voznja.MusterijaID != null) { k = kor.Korisnici.Find(voznja.MusterijaID); if (k.Uloga != EUloga.MUSTERIJA) { return(Unauthorized()); } if (voznja.VozacID != null) { return(Unauthorized()); } } if (voznja.DispecerID != null) { voznja.StatusVoznje = EStatus.FORMIRANA; } else { voznja.StatusVoznje = EStatus.KREIRANA; } db.Voznjas.Add(voznja); try { db.SaveChanges(); } catch (DbUpdateException) { if (VoznjaExists(voznja.VoznjaID)) { return(Conflict()); } else { throw; } } return(CreatedAtRoute("DefaultApi", new { id = voznja.VoznjaID }, voznja)); }
public IHttpActionResult PreuzmiVoznju(PromenaVoznjeModel prom) { if (!GetLoggedUsers.Contains(prom.SenderID)) { return(Unauthorized()); } if (GetBlockedUsers.Contains(prom.SenderID)) { return(Content(HttpStatusCode.Forbidden, "Blokirani ste!")); } Korisnik k = kor.Korisnici.Include(voz => voz.Voznje).ToList().Find(korisnik => korisnik.KorisnikID == prom.SenderID); if (k.Uloga != EUloga.VOZAC) { return(Unauthorized()); } List <Voznja> korisnikoveVoznje = db.Voznjas.Where(a => a.VozacID == prom.SenderID).ToList(); if (korisnikoveVoznje.Any(voznja => voznja.StatusVoznje == EStatus.UTOKU)) { return(Content(HttpStatusCode.NotAcceptable, "Imate voznju u toku")); } Voznja ciljanaVoznja = db.Voznjas.Find(prom.VoznjaID); if (ciljanaVoznja == null) { return(NotFound()); } if (ciljanaVoznja.StatusVoznje != EStatus.KREIRANA) { return(Content(HttpStatusCode.NotAcceptable, "Voznja je u medjuvremenu promenila status")); } if (ciljanaVoznja.ZeljeniTip != ETipAutomobila.PROIZVOLJNO && ciljanaVoznja.ZeljeniTip != k.ZeljeniTip) { return(Content(HttpStatusCode.NotAcceptable, "Nemate trazeni tip vozila")); } ciljanaVoznja.StatusVoznje = EStatus.PRIHVACENA; ciljanaVoznja.StatusVoznje = EStatus.UTOKU; ciljanaVoznja.VozacID = k.KorisnikID; ciljanaVoznja.Odrediste_XKoordinata = null; ciljanaVoznja.Odrediste_YKoordinata = null; db.Entry(ciljanaVoznja).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!VoznjaExists(ciljanaVoznja.VoznjaID)) { return(NotFound()); } else { throw; } } return(Ok(ciljanaVoznja)); }
public IHttpActionResult DodeliVozacu(DodelaVoznjeModel model) { if (!GetLoggedUsers.Contains(model.SenderId)) { return(Unauthorized()); } Korisnik dispecer = kor.Korisnici.Find(model.SenderId); Korisnik vozac = kor.Korisnici.Find(model.VozacId); Voznja v = db.Voznjas.Find(model.VoznjaId); if (dispecer == null || vozac == null || v == null) { return(NotFound()); } if (dispecer.Uloga != EUloga.DISPECER) { return(Unauthorized()); } if (vozac.Uloga != EUloga.VOZAC) { return(Unauthorized()); } List <Voznja> vozaceveVoznje = db.Voznjas.Where(voz => voz.VozacID == vozac.KorisnikID).ToList(); if (vozaceveVoznje.Any(voznja => voznja.StatusVoznje == EStatus.UTOKU)) { return(Content(HttpStatusCode.NotAcceptable, "Vozac je trenutno zauzet")); } if (v.StatusVoznje != EStatus.KREIRANA) { return(Content(HttpStatusCode.NotAcceptable, "Voznja je vec dodeljena")); } v.StatusVoznje = EStatus.OBRADJENA; v.StatusVoznje = EStatus.UTOKU; v.VozacID = vozac.KorisnikID; v.DispecerID = dispecer.KorisnikID; v.Odrediste_XKoordinata = null; db.Entry(v).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!VoznjaExists(v.VoznjaID)) { return(NotFound()); } else { throw; } } return(Ok(v)); }