//Api to save ticket of a user on a particular time
        public int Post(string userName, string phoneNumber, DateTime date)
        {
            MovieTicket item = new MovieTicket
            {
                UserName    = userName,
                PhoneNumber = phoneNumber,
                isExpired   = false,
                Date        = date,
                MovieName   = "Tarzan"
            };

            try
            {
                using (MovieDataBaseEntities entities = new MovieDataBaseEntities())
                {
                    List <MovieTicket> list = entities.MovieTickets.Where(e => e.Date == date).ToList();
                    if (list.Count < 20)
                    {
                        entities.MovieTickets.Add(item);
                        entities.SaveChanges();
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(item.TicketId);
        }
 //Api to get user details using ticketId
 public MovieTicket Get(int ticketId)
 {
     try
     {
         using (MovieDataBaseEntities entities = new MovieDataBaseEntities())
         {
             return(entities.MovieTickets.FirstOrDefault(e => e.TicketId == ticketId));
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
 //Api to get all tickets
 public IEnumerable <MovieTicket> Get()
 {
     try
     {
         using (MovieDataBaseEntities entities = new MovieDataBaseEntities())
         {
             return(entities.MovieTickets.ToList());
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
 //Api to get all tickets on a particular time
 public IEnumerable <MovieTicket> Get(DateTime date)
 {
     try
     {
         using (MovieDataBaseEntities entities = new MovieDataBaseEntities())
         {
             return(entities.MovieTickets.Where(e => e.Date == date).ToList());
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
 //Api to update a tickets to a given time
 public string Put(int ticketId, DateTime date)
 {
     try
     {
         using (MovieDataBaseEntities entities = new MovieDataBaseEntities())
         {
             MovieTicket item = entities.MovieTickets.Find(ticketId);
             if (item == null)
             {
                 return("No record found");
             }
             item.Date = date;
             entities.SaveChanges();
         }
         return("Success");
     }
     catch (Exception ex)
     {
         return("Failure");
     }
 }
 //Api to delete all tickets whick are expired
 public IHttpActionResult Delete()
 {
     try
     {
         using (MovieDataBaseEntities entities = new MovieDataBaseEntities())
         {
             List <MovieTicket> item = entities.MovieTickets.Where(x => x.isExpired == true).ToList();
             if (item == null)
             {
                 return(NotFound());
             }
             entities.MovieTickets.RemoveRange(item);
             entities.SaveChanges();
             return(Ok(item));
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
 //Api to delete a ticket given a ticketId
 public IHttpActionResult Delete(int id)
 {
     try
     {
         using (MovieDataBaseEntities entities = new MovieDataBaseEntities())
         {
             MovieTicket item = entities.MovieTickets.Find(id);
             if (item == null)
             {
                 return(NotFound());
             }
             entities.MovieTickets.Remove(item);
             entities.SaveChanges();
             return(Ok(item));
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
 //Api to update all tickets to expired if there is a difference of 8 hours or more between the current time and ticket time
 public string Put()
 {
     try
     {
         using (MovieDataBaseEntities entities = new MovieDataBaseEntities())
         {
             List <MovieTicket> item = entities.MovieTickets.Where(x => DbFunctions.DiffHours(x.Date, DateTime.Now) >= 8).ToList();
             if (item == null)
             {
                 return("No record found");
             }
             item.ForEach(x => x.isExpired = true);
             entities.SaveChanges();
         }
         return("Success");
     }
     catch (Exception ex)
     {
         return("Failure");
     }
 }