//Method that submits the order
        public UserOrderDTO CreateOrder(UserOrderDTO NewOrder)
        {
            UserOrderDTO OrderOut = new UserOrderDTO();
            Order OrderIn = new Order();

            using (TransactionScope Trans = new TransactionScope())
            {
                try
                {
                    using (var context = new CinemaEntities())
                    {
                        OrderIn.NumberOfSeatsReserved = NewOrder.NumberOfSeats;
                        OrderIn.TotalPrice = NewOrder.TotalPrice;
                        OrderIn.UserID = NewOrder.UserID;
                        OrderIn.PerfomanceID = NewOrder.PerformanceID;

                        if (OrderIn.EntityState == EntityState.Detached)
                        {
                            context.Orders.AddObject(OrderIn);
                        }
                        context.SaveChanges();

                        OrderOut.OrderID = OrderIn.OrderID;
                    }
                }
                catch
                {
                    OrderOut.isValid = false;
                    Trans.Dispose();
                    return OrderOut;
                }
                OrderOut.isValid = true;
                Trans.Complete();
                return OrderOut;
            }
        }
        //Method that updates comment
        public bool UpdateComment(UserCommentDTO UpdatedComment)
        {
            bool check = false;
            using (TransactionScope Trans = new TransactionScope())
            {
                try
                {
                    using (var context = new CinemaEntities())
                    {
                        var results = (from cm in context.Comments
                                       where cm.CommentID == UpdatedComment.commentID
                                       select cm);
                        if (results != null)
                        {
                            Comment CommentToUpdate = new Comment();
                            CommentToUpdate = (Comment)results.First();
                            CommentToUpdate.Content = UpdatedComment.Content;
                            context.ObjectStateManager.ChangeObjectState(CommentToUpdate, System.Data.EntityState.Modified);
                            context.SaveChanges();
                        }
                    }

                }
                catch
                {
                    check = false;
                    Trans.Dispose();
                    return check;
                }

                check = true;
                Trans.Complete();
                return check;
            }
        }
        //Method that creates new user
        public bool CreateNewUser(UserModelDTO NewUser)
        {
            bool check = false;
            using (TransactionScope Trans = new TransactionScope())
            {
                try
                {
                    using (var context = new CinemaEntities())
                    {

                        //Enetring into Users Table
                        try
                        {
                            User NewUserIn = new User();
                            NewUserIn.UserID = NewUser.UserID;
                            NewUserIn.Password = NewUser.Password;

                            if (NewUserIn.EntityState == EntityState.Detached)
                            {
                                context.Users.AddObject(NewUserIn);
                            }
                            context.SaveChanges();
                        }
                        catch { }

                        //Entering into Person Table
                        try
                        {
                            Person NewPersonIn = new Person();
                            NewPersonIn.FirstName = NewUser.FirstName;
                            NewPersonIn.LastName = NewUser.LastName;
                            NewPersonIn.PersonTypeID = NewUser.personTypeID;
                            NewPersonIn.PersonID = Guid.NewGuid();
                            if (NewPersonIn.EntityState == EntityState.Detached)
                            {
                                context.People.AddObject(NewPersonIn);
                            }
                            context.SaveChanges();

                        }
                        catch { }

                        ////Entering into Authonticated User Table
                        //try
                        //{
                        //    AuthenticatedUser NewAuthUser = new AuthenticatedUser();
                        //    NewAuthUser.PersonID = NewUser.PersonID;
                        //    NewAuthUser.UserID = NewUser.UserID;
                        //    NewAuthUser.AuthenticatedUserID = Guid.NewGuid();
                        //    if (NewAuthUser.EntityState == EntityState.Detached)
                        //    {
                        //        context.AuthenticatedUsers.AddObject(NewAuthUser);
                        //    }
                        //    context.SaveChanges();

                        //}
                        //catch { }

                    }

                }
                catch
                {
                    check = false;
                    Trans.Dispose();
                    return check;
                }

                check = true;
                Trans.Complete();
                return check;
            }
        }
        //Method that deletes movie from favorite list
        public bool RemoveMovieFromFavoriteList(Guid UserID, string movieTitle)
        {
            bool check;
            using (TransactionScope Trans = new TransactionScope())
            {
                try
                {
                    using (var context = new CinemaEntities())
                    {
                        var results = (from fv in context.Favorites.Include("Movie")
                                       where fv.Movie.Title == movieTitle &&
                                       fv.UserID == UserID
                                       select fv);
                        if (results != null)
                        {
                            Favorite LineToDelete = (Favorite)results.First();
                            context.Favorites.DeleteObject(LineToDelete);
                            context.SaveChanges();
                        }
                    }
                }
                catch
                {
                    check = false;
                    Trans.Dispose();
                    return check;
                }

                check = true;
                Trans.Complete();
                return check;
            }
        }
        //Method that removes comment
        public bool DeleteComment(int commentID)
        {
            bool check = false;

            using (TransactionScope Trans = new TransactionScope())
            {
                try
                {
                    using (var context = new CinemaEntities())
                    {
                        var results = (from cm in context.Comments
                                       where cm.CommentID == commentID
                                       select cm);
                        if (results != null)
                        {
                            Comment CommentToDelete = results.First();
                            context.Comments.DeleteObject(CommentToDelete);
                            context.SaveChanges();
                        }
                    }

                }
                catch
                {
                    check = false;
                    Trans.Dispose();
                    return check;
                }
                check = true;
                Trans.Complete();
                return check;

            }
        }