public StatusCodeResult OdaberiTermin(OdaberiTerminVM VM) { if (!ModelState.IsValid || VM.Datum.Date <= DateTime.Now.Date) { return(new UnprocessableEntityResult()); } Servis Servis = db.Servis .Where(x => x.IsDeleted == false) .Where(x => x.ServisId == VM.Id).FirstOrDefault(); if (Servis == null) { return(new NotFoundResult());// 404 } double TrajanjeServisa = Servis.Trajanje * VM.Kolicina; double SumServiceHours = db.RezervacijaServis.Where(x => x.DatumServisiranja.Date == VM.Datum).Sum(x => (double?)x.Servis.Trajanje ?? 0); if (SumServiceHours + TrajanjeServisa > 8) { return(new BadRequestResult()); } return(new OkResult()); // 200 }
public IActionResult OdaberiTermin(int Id) { OdaberiTerminVM VM = new OdaberiTerminVM { Servis = db.Servis .Where(x => x.IsDeleted == false) .Where(x => x.ServisId == Id).FirstOrDefault() }; if (VM.Servis == null) { return(Redirect("/Servis")); } var Klijent = HttpContext.GetLogiraniKorisnik().Klijent; return(View(VM)); }
public JsonResult DostupniTermini(OdaberiTerminVM VM) { var Klijent = HttpContext.GetLogiraniKorisnik().Klijent; var lista_termina = new List <string>(); Servis Servis = db.Servis .Where(x => x.IsDeleted == false) .Where(x => x.ServisId == VM.Id).FirstOrDefault(); RadnoVrijeme radnoVrijeme = db.RadnoVrijeme .Where(x => x.IsDeleted == false).Where(x => x.DanUSedmici == VM.Datum.DayOfWeek).FirstOrDefault(); if (radnoVrijeme == null || Servis == null) { return(Json(lista_termina)); } var rezervacije_za_dan = db.RezervacijaServis.Where(x => x.DatumServisiranja.Date == VM.Datum.Date).Include(x => x.Servis).ToList(); int pocetak_minute = radnoVrijeme.Pocetak.Hours * 60 + radnoVrijeme.Pocetak.Minutes; int kraj_minute = radnoVrijeme.Kraj.Hours * 60 + radnoVrijeme.Kraj.Minutes; for (int pocetak_termina = pocetak_minute; pocetak_termina < kraj_minute; pocetak_termina += 30) { int termin_sati = pocetak_termina / 60; int termin_minute = pocetak_termina % 60; int kraj_termina = pocetak_termina + (int)(Servis.Trajanje * 60) * VM.Kolicina; string sati_string = termin_sati.ToString().PadLeft(2, '0'); string minute_string = termin_minute.ToString().PadLeft(2, '0'); bool kolizija = false; if (pocetak_termina + Servis.Trajanje * 60 > kraj_minute) { kolizija = true; } else if (kraj_termina > kraj_minute) { kolizija = true; } foreach (var rezervacija in rezervacije_za_dan) { int pocetak_rezervacije = rezervacija.DatumServisiranja.Hour * 60 + rezervacija.DatumServisiranja.Minute; int kraj_rezervacije = pocetak_rezervacije + (int)(rezervacija.Servis.Trajanje * 60); if (pocetak_termina >= pocetak_rezervacije && pocetak_termina < kraj_rezervacije) { kolizija = true; } else if (kraj_termina > pocetak_rezervacije && kraj_termina <= kraj_rezervacije) { kolizija = true; } } if (!kolizija) { lista_termina.Add(sati_string + ":" + minute_string); } } return(Json(lista_termina)); }