Example #1
0
        public IHttpActionResult PostRoomReservations(RoomReservations roomReservations)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.AppRoomReservations.Add(roomReservations);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateException)
            {
                if (RoomReservationsExists(roomReservations.RoomId, roomReservations.UserId))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }

            return(CreatedAtRoute("DefaultApi", new { roomId = roomReservations.RoomId, userId = roomReservations.UserId }, roomReservations));
        }
Example #2
0
        public IHttpActionResult PutRoomReservations(int id, RoomReservations roomReservations)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != roomReservations.Id)
            {
                return(BadRequest());
            }

            db.Entry(roomReservations).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!RoomReservationsExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
        public IHttpActionResult DeleteRoomReservations(int id)
        {
            RoomReservations roomReservations = db.RoomReservations.Find(id);

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

            IdentityUser   user   = UserManager.FindById(User.Identity.GetUserId());
            BAIdentityUser baUser = new BAIdentityUser();

            baUser = user as BAIdentityUser;

            if (baUser == null)
            {
                return(null);
            }

            if (!baUser.appUserId.Equals(roomReservations.AppUserId))
            {
                return(Unauthorized());
            }

            db.RoomReservations.Remove(roomReservations);
            db.SaveChanges();

            return(Ok(roomReservations));
        }
        public IHttpActionResult PostRoomReservations(RoomReservations roomReservations)
        {
            bool returnBedReq = false;

            lock (lockObj)
            {
                if (!ModelState.IsValid)
                {
                    // return BadRequest(ModelState);
                    returnBedReq = true;
                }
                else
                {
                    //check validation of room reservation addded
                    foreach (RoomReservations item in db.RoomReservations)
                    {
                        if (item.RoomId == roomReservations.RoomId)
                        {
                            if (((roomReservations.StartDate <= item.EndDate) && (roomReservations.StartDate >= item.StartDate)) || ((roomReservations.EndDate >= item.StartDate) && (roomReservations.EndDate <= item.EndDate)))
                            {
                                // return BadRequest();
                                returnBedReq = true;
                            }
                        }
                    }
                    db.RoomReservations.Add(roomReservations);
                    db.SaveChanges();
                }
            }
            if (returnBedReq)
            {
                return(BadRequest(ModelState));
            }
            return(CreatedAtRoute("DefaultApi", new { controller = "RoomReservations", id = roomReservations.Id }, roomReservations));
        }
        public IHttpActionResult PutRoomReservations(int id, RoomReservations roomReserv)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != roomReserv.Id)
            {
                return(BadRequest("Ids are not matching!"));
            }

            db.Entry(roomReserv).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (db.AppRoomReservations.Find(id) == null)
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Example #6
0
 public void ReserveRoom(RoomReservations roomReservations)
 {
     using (var data = new RoomReservationsEntities())
     {
         data.RoomReservations.Add(roomReservations);
         data.SaveChanges();
     }
 }
Example #7
0
        public IHttpActionResult GetRoomReservations(int id)
        {
            RoomReservations roomReservations = db.RoomReservationss.Find(id);

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

            return(Ok(roomReservations));
        }
Example #8
0
        public IHttpActionResult PostRoomReservations(RoomReservations roomReservations)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.RoomReservationss.Add(roomReservations);
            db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = roomReservations.Id }, roomReservations));
        }
Example #9
0
        public IHttpActionResult DeleteRoomReservations(int id)
        {
            RoomReservations roomReservations = db.RoomReservations.Find(id);

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

            var user = db.Users.FirstOrDefault(u => u.UserName.Equals(User.Identity.Name)); //samo ako pokusava taj isti user da canceluje

            if (user == null)
            {
                return(BadRequest("You're not logged in."));
            }

            if (roomReservations == null || !roomReservations.AppUserId.Equals(user.appUserId))
            {
                return(BadRequest());
            }

            /*if (roomReservations.StartDate <= DateTime.Now)
             * {
             *  return BadRequest("You are supposed to be in your accommodation right now, can not cancel reservation!");
             * }*/

            //roomReservations.Canceled = true;
            //db.Entry(roomReservations).State = System.Data.Entity.EntityState.Modified;

            db.RoomReservations.Remove(roomReservations);
            db.SaveChanges();

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                bool exist = db.RoomReservations.Count(e => (e.Id == id)) > 0;

                if (!exist)
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(Ok(roomReservations));
        }
Example #10
0
        public IHttpActionResult DeleteRoomReservations(int id)
        {
            RoomReservations roomReservations = db.RoomReservationss.Find(id);

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

            db.RoomReservationss.Remove(roomReservations);
            db.SaveChanges();

            return(Ok(roomReservations));
        }
        public IHttpActionResult m3(int id, RoomReservations roomReservations)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != roomReservations.Id)
            {
                return(BadRequest());
            }

            IdentityUser   user   = UserManager.FindById(User.Identity.GetUserId());
            BAIdentityUser baUser = new BAIdentityUser();

            baUser = user as BAIdentityUser;

            if (baUser == null)
            {
                return(null);
            }

            if (!baUser.appUserId.Equals(roomReservations.AppUserId))
            {
                return(Unauthorized());
            }

            db.Entry(roomReservations).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!RoomReservationsExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Example #12
0
        public IHttpActionResult PutRoomReservations(int id, RoomReservations roomReservations)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != roomReservations.Id)
            {
                return(BadRequest());
            }

            var user = db.Users.FirstOrDefault(u => u.UserName.Equals(User.Identity.Name));

            if (user == null)
            {
                return(BadRequest("You're not log in."));
            }

            if (roomReservations == null || !roomReservations.AppUserId.Equals(user.appUserId))
            {
                return(BadRequest());
            }


            db.Entry(roomReservations).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!RoomReservationsExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Example #13
0
        public IHttpActionResult PostRoomReservations(RoomReservations roomReservations)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (roomReservations.StartDate > roomReservations.EndDate)
            {
                return(BadRequest(ModelState));
            }

            List <RoomReservations> reservations = db.RoomReservations.Where(x => x.RoomId.Equals(roomReservations.RoomId)).ToList();
            bool alreadyReserved = false;

            foreach (RoomReservations roomRes in reservations)
            {
                /*if (roomRes.Canceled != null)
                 * {
                 *  if (!roomRes.Canceled)  //ako nije cancelovana
                 *  {*/
                if (roomRes.EndDate != null && roomRes.StartDate != null)           //vidi u kom datumu je slobodna
                {
                    if ((DateTime)roomRes.EndDate >= (DateTime)roomReservations.StartDate && (DateTime)roomRes.StartDate <= (DateTime)roomReservations.StartDate ||
                        (DateTime)roomRes.EndDate <= (DateTime)roomReservations.EndDate && (DateTime)roomRes.StartDate >= (DateTime)roomReservations.EndDate)
                    {
                        alreadyReserved = true;
                        break;
                    }
                }
                //    }
                //}
            }

            if (alreadyReserved)
            {
                return(BadRequest("The room is already reserved in that period"));
            }

            db.RoomReservations.Add(roomReservations);
            db.SaveChanges();

            return(CreatedAtRoute("RRes", new { id = roomReservations.Id }, roomReservations));
        }
Example #14
0
        public void ValidateCreate()
        {
            var messages = new ValidationMessages();

            if (string.IsNullOrEmpty(OrganizationId))
            {
                messages.Add("OrganizationId пропущен. Используйте OrganizationId свойство чтобы установить organizationId.");
            }

            if (string.IsNullOrEmpty(OrderId))
            {
                messages.Add("OrderId пропущен. Используйте OrderId свойство чтобы установить orderId.");
            }

            if (RoomReservations == null || !RoomReservations.Any())
            {
                messages.Add("RoomReservations пропущен. Используйте RoomReservations свойство чтобы установить roomReservations.");
            }

            if (string.IsNullOrEmpty(BookerName))
            {
                messages.Add("BookerName пропущен. Используйте BookerName свойство чтобы установить bookerName.");
            }

            if (Value < 1)
            {
                messages.Add("Value пропущен. Используйте Value свойство чтобы установить value.");
            }

            if (PayMethod == PayMethod.None)
            {
                messages.Add("PayMethod не может быть 'none'.");
            }

            if (messages.HasErrors)
            {
                throw new EasyMSValidationException(messages);
            }
        }
Example #15
0
        private void setDatabase()
        {
            var user = new BAIdentityUser();

            user.UserName     = "******";
            user.PasswordHash = BAIdentityUser.HashPassword("admin");
            user.Email        = "*****@*****.**";


            var user2 = new BAIdentityUser();

            user2.UserName     = "******";
            user2.PasswordHash = BAIdentityUser.HashPassword("appU");
            user2.Email        = "*****@*****.**";


            var accomod  = new Accommodation();
            var accomod2 = new Accommodation();
            var accomods = new List <Accommodation>()
            {
                accomod, accomod2
            };

            var accomType = new AccommodationType();

            accomType.Name = "Motel";
            //    accomType.Accommodations = accomods;

            var accomType2 = new AccommodationType();

            accomType2.Name = "Hotel";
            //  accomType2.Accommodations = accomods;


            var place  = new Place();
            var place2 = new Place();

            var room  = new Room();
            var room2 = new Room();
            var rooms = new List <Room>()
            {
                room, room2
            };

            var country = new Country();

            country.Name = "Serbia";

            country.Code = 43;


            var country2 = new Country();

            country2.Name = "Serbia";
            country2.Code = 44;



            var region = new Region();

            region.Name    = "Zlatibor";
            region.Country = country;
            region.Places  = new List <Place>()
            {
                place, place2
            };


            var region2 = new Region();

            region2.Name    = "Jahorina";
            region2.Country = country2;
            region2.Places  = new List <Place>()
            {
                place, place2
            };
            country2.Regions = new List <Region>()
            {
                region2
            };
            country.Regions = new List <Region>()
            {
                region, region2
            };

            place.Name     = "place1";
            place.RegionId = 1;
            //  place.Accommodations = new List<Accommodation>() { accomod, accomod2 };

            place2.Name     = "place2";
            place2.RegionId = 1;

            accomod.Id       = 1;
            accomod.Address  = "Jovana Subotica";
            accomod.Name     = "accomod1";
            accomod.Approved = true;
            accomod.User     = user;

            accomod.AvrageGrade      = 50;
            accomod.Description      = "opisAccom";
            accomod.AccomodationType = accomType;
            accomod.ImageURL         = "https://images.pexels.com/photos/164595/pexels-photo-164595.jpeg?auto=compress&cs=tinysrgb&h=350";
            accomod.Latitude         = 49;
            accomod.Longitude        = 19;
            accomod.Place            = place;
            accomod.Rooms            = rooms;

            accomod2.Id       = 2;
            accomod2.Address  = "Nikole Pasica";
            accomod2.Name     = "accomod2";
            accomod2.Approved = true;
            accomod2.User     = user2;

            accomod2.AvrageGrade      = 40;
            accomod2.Description      = "opisAccom2";
            accomod2.AccomodationType = accomType2;
            accomod2.ImageURL         = "https://www.rd.com/wp-content/uploads/2017/11/Here%E2%80%99s-What-You-Can-and-Can%E2%80%99t-Steal-from-Your-Hotel-Room_363678794-Elnur-760x506.jpg";
            accomod2.Latitude         = 56.43;
            accomod2.Longitude        = 10.39;
            accomod2.Place            = place2;
            //  place.Accommodations = new List<Accommodation>() { accomod, accomod2 };
            //  place2.Accommodations = new List<Accommodation>() { accomod, accomod2 };

            var comment = new Comment()
            {
                User = user, Text = "dobar", Grade = 10, Accomodation = accomod
            };
            var comment2 = new Comment()
            {
                User = user2, Text = "los", Grade = 2, Accomodation = accomod2
            };

            accomod.Comments = new List <Comment> {
                comment
            };
            accomod2.Comments = new List <Comment> {
                comment
            };
            room.Description   = "opisSobe1";
            room.PricePerNight = 100;
            room.RoomNumber    = 4;
            room.BedCount      = 3;
            room.Accomodation  = accomod;


            room2.Description   = "opisSobe12";
            room2.PricePerNight = 97;
            room2.RoomNumber    = 6;
            room2.BedCount      = 3;
            room2.Accomodation  = accomod2;

            accomod.Rooms = rooms;

            var roomReservations  = new RoomReservations();
            var roomReservations2 = new RoomReservations();

            roomReservations.Room      = room;
            roomReservations.User      = user;
            roomReservations.Timestamp = "5";
            roomReservations.StartDate = "Danas";
            roomReservations.EndDate   = "Sutra";

            roomReservations2.Room      = room2;
            roomReservations2.User      = user2;
            roomReservations2.Timestamp = "8";
            roomReservations2.StartDate = "Danas";
            roomReservations2.EndDate   = "Prekosutra";

            room.RoomReservations = new List <RoomReservations> {
                roomReservations
            };
            room2.RoomReservations = new List <RoomReservations> {
                roomReservations2
            };

            HelperJebeni.accomodations = new List <Accommodation>();
            HelperJebeni.accomodations.Add(accomod);
            HelperJebeni.accomodations.Add(accomod2);
        }
        public IHttpActionResult UpdateReservation(RoomReservations roomReservations)
        {
            lock (obj)
            {
                using (var context = new BAContext())
                {
                    using (var transaction = context.Database.BeginTransaction())
                    {
                        if (!ModelState.IsValid)
                        {
                            return(BadRequest(ModelState));
                        }

                        //bool isAdmin = UserManager.IsInRole(User.Identity.Name, "Admin");//User.Identity.Name => Username Identity User-a! UserManager trazi po njegovom username-u, i onda poredi!
                        var user = context.Users.FirstOrDefault(u => u.UserName == User.Identity.Name); //Vadimo iz Identity baze po username-u Identity User-a, koji u sebi sadrzi AppUser-a!
                        if (user != null && user.appUserId.Equals(roomReservations.AppUserId))          //Ako korisnik nije admin, i nije AppUser koji trazi podatke o sebi, nije autorizovan!
                        {
                            // korisnik ima pravo izmene svoje rezervacije
                            bool existingReservation = false;

                            foreach (var reservation in context.AppRoomReservations)
                            {
                                if (reservation.RoomId == roomReservations.RoomId)
                                {
                                    string   date    = reservation.EndDate.Split('T')[0];
                                    DateTime endDate = DateTime.ParseExact(date, "yyyy-MM-dd", CultureInfo.InvariantCulture);

                                    date = reservation.StartDate.Split('T')[0];
                                    DateTime startDate = DateTime.ParseExact(date, "yyyy-MM-dd", CultureInfo.InvariantCulture);

                                    DateTime currentEndDate = DateTime.ParseExact(roomReservations.EndDate.Split('T')[0],
                                                                                  "yyyy-MM-dd", CultureInfo.InvariantCulture);

                                    DateTime currentStartDate = DateTime.ParseExact(roomReservations.StartDate.Split('T')[0],
                                                                                    "yyyy-MM-dd", CultureInfo.InvariantCulture);

                                    if (currentStartDate >= startDate && currentStartDate <= endDate)
                                    {
                                        existingReservation = true;
                                    }
                                }
                            }

                            if (existingReservation)
                            {
                                return(BadRequest("Reservation exists"));
                            }

                            try
                            {
                                //context.AppRoomReservations.Add(roomReservations);
                                var reservation = context.AppRoomReservations.Find(roomReservations.Id);

                                reservation.EndDate   = roomReservations.EndDate;
                                reservation.StartDate = roomReservations.StartDate;
                                reservation.RoomId    = roomReservations.RoomId;

                                context.SaveChanges();
                            }
                            catch (DbUpdateConcurrencyException)
                            {
                                throw;
                            }
                        }

                        transaction.Commit();

                        return(CreatedAtRoute("RoomReservationApi", new { id = roomReservations.Id }, roomReservations));
                    }
                }
            }
        }
Example #17
0
        protected override void Seed(BookingApp.Models.BAContext context)
        {
            /****/

            if (!context.Roles.Any(r => r.Name == "Admin"))
            {
                var store   = new RoleStore <IdentityRole>(context);
                var manager = new RoleManager <IdentityRole>(store);
                var role    = new IdentityRole {
                    Name = "Admin"
                };

                manager.Create(role);
            }

            if (!context.Roles.Any(r => r.Name == "Manager"))
            {
                var store   = new RoleStore <IdentityRole>(context);
                var manager = new RoleManager <IdentityRole>(store);
                var role    = new IdentityRole {
                    Name = "Manager"
                };

                manager.Create(role);
            }

            if (!context.Roles.Any(r => r.Name == "AppUser"))
            {
                var store   = new RoleStore <IdentityRole>(context);
                var manager = new RoleManager <IdentityRole>(store);
                var role    = new IdentityRole {
                    Name = "AppUser"
                };

                manager.Create(role);
            }


            var userStore   = new UserStore <BAIdentityUser>(context);
            var userManager = new UserManager <BAIdentityUser>(userStore);

            if (!context.Users.Any(u => u.UserName == "mitja"))
            {
                var user1 = new BAIdentityUser()
                {
                    Id = "mitja", UserName = "******", Email = "*****@*****.**", PasswordHash = BAIdentityUser.HashPassword("mitja")
                };
                userManager.Create(user1);
                userManager.AddToRole(user1.Id, "Admin");
            }

            BAIdentityUser user = new BAIdentityUser()
            {
                Id = "stefan", UserName = "******", Email = "*****@*****.**", PasswordHash = BAIdentityUser.HashPassword("stefan")
            };

            if (!context.Users.Any(u => u.UserName == "stefan"))
            {
                userManager.Create(user);
                userManager.AddToRole(user.Id, "Manager");
            }

            if (!context.Users.Any(u => u.UserName == "user"))
            {
                var user1 = new BAIdentityUser()
                {
                    Id = "user", UserName = "******", Email = "*****@*****.**", PasswordHash = BAIdentityUser.HashPassword("user")
                };
                userManager.Create(user1);
                userManager.AddToRole(user1.Id, "AppUser");
            }

            user.Accomodations    = new List <Accommodation>();
            user.Comments         = new List <Comment>();
            user.RoomReservations = new List <RoomReservations>();



            var accomod  = new Accommodation();
            var accomod2 = new Accommodation();
            var accomods = new List <Accommodation>()
            {
                accomod, accomod2
            };

            var accomType = new AccommodationType();

            accomType.Name = "Motel";
            // accomType.Accommodations = accomods;

            var accomType2 = new AccommodationType();

            accomType2.Name = "Hotel";
            // accomType2.Accommodations = accomods;

            var place  = new Place();
            var place2 = new Place();

            var room  = new Room();
            var room2 = new Room();
            var rooms = new List <Room>()
            {
                room, room2
            };

            var country = new Country();

            country.Name = "Serbia";
            //country.Regions = new List<Region>() { region, region2 };
            country.Code = 43;
            //region.Country = country;

            var country2 = new Country();

            country2.Name = "Serbia";
            //country2.Regions = new List<Region>() { region2 };
            country2.Code = 44;
            //region2.Country = country2;


            var region = new Region();

            region.Name    = "Zlatibor";
            region.Country = country;
            //region.Places = new List<Place>() { place, place2 };

            var region2 = new Region();

            region2.Name    = "Jahorina";
            region2.Country = country2;
            // region2.Places = new List<Place>() { place, place2 };

            place.Name     = "place1";
            place.RegionId = 1;
            //place.Accommodations = new List<Accommodation>() { accomod, accomod2 };

            place2.Name     = "place2";
            place2.RegionId = 1;
            //place2.Accommodations = new List<Accommodation>() { accomod, accomod2 };

            accomod.Address  = "Jovana Subotica";
            accomod.Approved = true;
            accomod.User     = user;
            //accomod.Comments = comments;
            accomod.AvrageGrade      = 50;
            accomod.Description      = "opisAccom";
            accomod.AccomodationType = accomType;
            accomod.ImageURL         = "http://arhiva.alo.rs/resources/img/10-07-2014/single_news/1300330-sako1.jpg";
            accomod.Latitude         = 41.9271155;
            accomod.Longitude        = 19.2364064;
            accomod.Place            = place;
            accomod.Name             = "Vila Rijana";
            //accomod.Rooms = rooms;

            accomod2.Address  = "Nikole Pasica";
            accomod2.Approved = true;
            accomod2.User     = user;
            //accomod2.Comments = comments;
            accomod2.AvrageGrade      = 40;
            accomod2.Description      = "opisAccom2";
            accomod2.AccomodationType = accomType2;
            accomod2.ImageURL         = "https://s-ec.bstatic.com/images/hotel/max1024x768/741/74116567.jpg";
            accomod2.Latitude         = 42.286238;
            accomod2.Longitude        = 18.8327733;
            accomod2.Place            = place2;
            accomod2.Name             = "Hotel Moskva";
            //accomod.Rooms = rooms;

            var comment = new Comment()
            {
                User = user, Text = "dobar", Grade = 10, Accomodation = accomod
            };
            var comment2 = new Comment()
            {
                User = user, Text = "los", Grade = 2, Accomodation = accomod2
            };

            room.Description   = "opisSobe1";
            room.PricePerNight = 100;
            room.RoomNumber    = 4;
            room.BedCount      = 3;
            room.Accomodation  = accomod;
            //room.RoomReservations = new List<RoomReservations>() { roomReservations, roomReservations2 };

            room2.Description   = "opisSobe12";
            room2.PricePerNight = 97;
            room2.RoomNumber    = 6;
            room2.BedCount      = 3;
            room2.Accomodation  = accomod2;
            //room2.RoomReservations = new List<RoomReservations>() { roomReservations, roomReservations2 };

            var roomReservations  = new RoomReservations();
            var roomReservations2 = new RoomReservations();

            roomReservations.Room      = room;
            roomReservations.User      = user;
            roomReservations.Timestamp = DateTime.Now.ToString();
            roomReservations.StartDate = new DateTime(2017, 1, 1).ToString();
            roomReservations.EndDate   = new DateTime(2017, 2, 2).ToString();

            roomReservations2.Room      = room2;
            roomReservations2.User      = user;
            roomReservations2.Timestamp = DateTime.Now.ToString();
            roomReservations2.StartDate = new DateTime(2017, 3, 3).ToString();
            roomReservations2.EndDate   = new DateTime(2017, 4, 4).ToString();

            context.Accommodations.AddOrUpdate(accomod);
            context.Accommodations.AddOrUpdate(accomod2);

            // context.Users
            context.Rooms.AddOrUpdate(room);
            context.Rooms.AddOrUpdate(room2);

            context.RoomReservationss.AddOrUpdate(roomReservations);
            context.RoomReservationss.AddOrUpdate(roomReservations2);

            context.Comments.AddOrUpdate(comment);
            context.Comments.AddOrUpdate(comment2);

            context.SaveChanges();
        }
        public IHttpActionResult PostReservation(RoomReservations roomReservations)
        {
            lock (obj)
            {
                using (var context = new BAContext())
                {
                    using (var transaction = context.Database.BeginTransaction())
                    {
                        if (!ModelState.IsValid)
                        {
                            return(BadRequest(ModelState));
                        }

                        //RoomReservations existingReservation = context.AppRoomReservations.Where(p => p.StartDate.Equals(roomReservations.StartDate) &&
                        //                                  p.EndDate.Equals(roomReservations.EndDate) &&
                        //                                  p.RoomId == roomReservations.RoomId).FirstOrDefault();

                        bool existingReservation = false;

                        foreach (var reservation in context.AppRoomReservations)
                        {
                            if (reservation.RoomId == roomReservations.RoomId)
                            {
                                string   date    = reservation.EndDate.Split('T')[0];
                                DateTime endDate = DateTime.ParseExact(date, "yyyy-MM-dd", CultureInfo.InvariantCulture);

                                date = reservation.StartDate.Split('T')[0];
                                DateTime startDate = DateTime.ParseExact(date, "yyyy-MM-dd", CultureInfo.InvariantCulture);

                                DateTime currentEndDate = DateTime.ParseExact(roomReservations.EndDate.Split('T')[0],
                                                                              "yyyy-MM-dd", CultureInfo.InvariantCulture);

                                DateTime currentStartDate = DateTime.ParseExact(roomReservations.StartDate.Split('T')[0],
                                                                                "yyyy-MM-dd", CultureInfo.InvariantCulture);

                                if (currentStartDate >= startDate && currentStartDate <= endDate)
                                {
                                    existingReservation = true;
                                }
                            }
                        }

                        if (existingReservation)
                        {
                            return(BadRequest("Reservation exists"));
                        }

                        try
                        {
                            context.AppRoomReservations.Add(roomReservations);

                            context.SaveChanges();
                        }
                        catch (DbUpdateConcurrencyException)
                        {
                            throw;
                        }

                        transaction.Commit();

                        return(CreatedAtRoute("RoomReservationApi", new { id = roomReservations.Id }, roomReservations));
                    }
                }
            }
        }