public ActionResult KreirajRezervaciju([FromBody] RezervacijaDTO rezervacija)
        {
            try
            {
                IList <Kofer> koferi = DataProvider.VratiSveKofere();
                Kofer         kofer  = null;
                foreach (Kofer k in koferi)
                {
                    if (k.tip.Equals(rezervacija.Prtljag))
                    {
                        kofer = k;
                        break;
                    }
                }
                if (kofer == null)
                {
                    kofer        = new Kofer();
                    kofer.tezina = 100;
                    kofer.tip    = rezervacija.Prtljag;
                    DataProvider.KreirajKofer(kofer);
                }


                String[]    timeNow = DateTime.Now.ToLongTimeString().Split(":");
                String[]    dateNow = DateTime.Now.ToShortDateString().Split("/");
                Rezervacija r       = new Rezervacija
                {
                    Id             = rezervacija.Id,
                    BrojSedista    = rezervacija.BrojSedista,
                    PasosBytes     = Convert.FromBase64String(rezervacija.PasosBytesBase64),
                    CovidTestBytes = Convert.FromBase64String(rezervacija.CovidTestBytesBase64),
                    Status         = rezervacija.Status,
                    KodRezervacije = "RE" + dateNow[0] + dateNow[1] + dateNow[2] + timeNow[0] + timeNow[1] + timeNow[2].ElementAt(0) + timeNow[2].ElementAt(1),
                    ListaProizvoda = rezervacija.ListaProizvoda,
                    Putnik         = new ObjectId(rezervacija.Putnik),
                    Let            = new ObjectId(rezervacija.Let),
                    Kofer          = kofer.Id
                };

                return(new JsonResult(DataProvider.KreirajRezervaciju(r).ToString()));
            }
            catch (Exception e)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, e.ToString()));
            }
        }
예제 #2
0
        private bool SlobodnaSoba(RezervacijaDTO rezervacija)
        {
            TimeRange nRange = new TimeRange(rezervacija.Prijava, rezervacija.Odjava);

            var rez = db.Rezervacije.Where(r => r.SobaID == rezervacija.SobaID);

            if (rez.Any())
            {
                foreach (var r in rez)
                {
                    TimeRange range = new TimeRange(r.Prijava, r.Odjava);
                    if (nRange.IntersectsWith(range))
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }
예제 #3
0
        public IHttpActionResult Uredi(RezervacijaDTO rezervacija)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var trezervacija = db.Rezervacije.Find(rezervacija.RezervacijaID);

            if (trezervacija == null)
            {
                return(NotFound());
            }

            var gost = db.Rezervacije.Count(r => r.GostID == rezervacija.GostID);

            if (gost == 0)
            {
                return(BadRequest("Gost ne postoji"));
            }

            var soba = db.Rezervacije.Count(r => r.SobaID == rezervacija.SobaID);

            if (soba == 0)
            {
                return(BadRequest("Soba ne postoji"));
            }

            var slobodnaSoba = SlobodnaSoba(rezervacija);

            if (!slobodnaSoba)
            {
                return(BadRequest("Soba je zauzeta"));
            }

            Mapper.Map(rezervacija, trezervacija);
            db.SaveChanges();

            return(Ok(rezervacija));
        }
        public static RezervacijaDTO VratiRezervacijuPrekoId(string id)
        {
            IMongoDatabase db  = Session.MongoDatabase;
            Rezervacija    rez = db.GetCollection <Rezervacija>("rezervacije").Find(x => x.Id == new ObjectId(id)).FirstOrDefault();

            IList <string> listProducts = new List <string>();

            foreach (ObjectId idProz in rez.ListaProizvoda)
            {
                listProducts.Add(DataProvider.VratiProizvodPrekoIda(idProz.ToString()).naziv);
            }

            RezervacijaDTO rezDTO = new RezervacijaDTO()
            {
                Id             = rez.Id,
                KodRezervacije = rez.KodRezervacije,
                Status         = rez.Status,
                Proizvodi      = listProducts
            };

            return(rezDTO);
        }
예제 #5
0
        public IHttpActionResult Dodaj([FromBody] RezervacijaDTO rezervacija)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("Krivi unos"));
            }

            var gost = db.Gosti.FirstOrDefault(x => x.GostID == rezervacija.GostID);

            if (gost == null)
            {
                return(BadRequest("Gost ne postoji"));
            }

            var soba = db.Sobe.FirstOrDefault(x => x.SobaID == rezervacija.SobaID);

            if (soba == null)
            {
                return(BadRequest("Soba ne postoji"));
            }

            var rangeFromSelect    = new TimeRange(rezervacija.Prijava, rezervacija.Odjava);
            var rezervacija1       = db.Rezervacije.ToList();
            var unavailableRoomsId = rezervacija1
                                     .Where(r => rangeFromSelect.IntersectsWith(new TimeRange(r.Prijava, r.Odjava, true)))
                                     .Select(r => r.SobaID).ToList();

            if (unavailableRoomsId.Contains(rezervacija.SobaID))
            {
                return(BadRequest());
            }

            db.Rezervacije.Add(Mapper.Map <RezervacijaDTO, Rezervacija>(rezervacija));
            db.SaveChanges();
            return(Content(HttpStatusCode.Created, rezervacija));
        }