public IActionResult OdaberiTermin(int Id) { IznajmiBiciklVM VM = new IznajmiBiciklVM { Bicikl = db.Bicikl .Include(x => x.Model).ThenInclude(x => x.MaterijalOkvira) .Include(x => x.Model).ThenInclude(x => x.Proizvodjac) .Include(x => x.StarosnaGrupa) .Include(x => x.VelicinaOkvira) .Include(x => x.Boja) .Include(x => x.BiciklStanje) .Where(x => x.BiciklId == Id && x.Stanje == Stanje.Korišteno) .FirstOrDefault() }; if (VM.Bicikl == null) { return(Redirect("/Iznajmljivanje")); } var Klijent = HttpContext.GetLogiraniKorisnik().Klijent; var ukupno_u_skladistu = VM.Bicikl.BiciklStanje.Where(x => x.Aktivan == true).Sum(x => x.Kolicina); VM.KolicinaNaStanju = ukupno_u_skladistu; int Kolicina = 1; VM.RezervisaniTermini = GetDaneBezDostupnihTermina(Id, Klijent.Id, Kolicina, ukupno_u_skladistu); return(View(VM)); }
public StatusCodeResult OdaberiTermin(IznajmiBiciklVM VM) { Bicikl Bicikl = db.Bicikl .Include(x => x.BiciklStanje) .Where(x => x.BiciklId == VM.Id) .Where(x => x.Stanje == Stanje.Korišteno) .FirstOrDefault(); if (Bicikl == null) { return(new NotFoundResult());// 404 } if (!ModelState.IsValid || VM.DatumPreuzimanja.Date < DateTime.Now.Date || VM.DatumPreuzimanja.Date > VM.DatumVracanja.Date) { return(new UnprocessableEntityResult()); // 422 } var Klijent = HttpContext.GetLogiraniKorisnik().Klijent; int ukupno_u_skladistu = Bicikl.BiciklStanje.Where(x => x.Aktivan == true).Sum(x => x.Kolicina); int ukupno_u_kosarici = db.TerminStavka.Where(x => x.KlijentId == Klijent.Id && x.BiciklId == VM.Id) .Where(x => ( (x.DatumPreuzimanja.Date >= VM.DatumPreuzimanja.Date && x.DatumPreuzimanja.Date <= VM.DatumVracanja.Date) || (x.DatumVracanja.Date >= VM.DatumPreuzimanja.Date && x.DatumVracanja.Date <= VM.DatumVracanja.Date) ) || ( (VM.DatumPreuzimanja.Date >= x.DatumPreuzimanja.Date && VM.DatumPreuzimanja.Date <= x.DatumVracanja.Date) || (VM.DatumVracanja.Date >= x.DatumPreuzimanja.Date && VM.DatumVracanja.Date <= x.DatumVracanja.Date) )) .Sum(x => x.Kolicina); var broj_termina_kolizija = db.RezervacijaIznajmljenaBicikla .Where(x => x.BiciklStanje.BiciklId == VM.Id) .Where(x => ( (x.DatumPreuzimanja.Date >= VM.DatumPreuzimanja.Date && x.DatumPreuzimanja.Date <= VM.DatumVracanja.Date) || (x.DatumVracanja.Date >= VM.DatumPreuzimanja.Date && x.DatumVracanja.Date <= VM.DatumVracanja.Date) ) || ( (VM.DatumPreuzimanja.Date >= x.DatumPreuzimanja.Date && VM.DatumPreuzimanja.Date <= x.DatumVracanja.Date) || (VM.DatumVracanja.Date >= x.DatumPreuzimanja.Date && VM.DatumVracanja.Date <= x.DatumVracanja.Date) ) ) .ToList(); int ukupno_dostupno = ukupno_u_skladistu - ukupno_u_kosarici - broj_termina_kolizija.Count(); if (VM.Kolicina > ukupno_dostupno) { if (ukupno_dostupno == 0) { return(new BadRequestResult()); // 400 } return(new StatusCodeResult(417)); } var PostojecaStvaka = db.TerminStavka.Where(x => x.KlijentId == Klijent.Id && x.BiciklId == VM.Id && x.DatumPreuzimanja == VM.DatumPreuzimanja && x.DatumVracanja == VM.DatumVracanja).FirstOrDefault(); if (PostojecaStvaka != null) { PostojecaStvaka.Kolicina += VM.Kolicina; } else { db.TerminStavka.Add(new TerminStavka { KlijentId = Klijent.Id, BiciklId = VM.Id, Kolicina = VM.Kolicina, DatumPreuzimanja = VM.DatumPreuzimanja, DatumVracanja = VM.DatumVracanja.AddHours(23).AddMinutes(59).AddSeconds(59) }); } db.SaveChanges(); return(new OkResult()); // 200 }