Beispiel #1
0
        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
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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));
        }