2011-04-06 55 views
-1

的圖像顯示我的表是如何設置的座位預留系統

enter image description here

更新

我有一個工作準備金座,現在添加到預訂表。

// 
    // POST: /Home/CreateBooking 

    public ActionResult CreateBooking(String id, DateTime date, DateTime time) 
    { 
     ViewData["username"] = User.Identity.Name; 
     ViewData["performanceDate"] = date; 
     ViewData["Venue"] = id; 

     BookingCreate model = new BookingCreate(); 
     model.Seats = (from c in _db.Seat 
         where c.venue == id 
         select c); 



     return this.View(model); 

    } 

    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult CreateBooking(BookingCreate bookingCreate, IList<String> seatNumber) 
    { 

     Customer theCustomer 
      = (from c in _db.Customer 
       select c).First<Customer>(c => c.username == bookingCreate.customer); 


     //performance details for the performance selected by the user 
     Performance thePerformance 
      = (from p in _db.Performance 
       select p).FirstOrDefault<Performance>(p => p.performanceDate == bookingCreate.performanceDate || p.performanceTime == bookingCreate.performanceTime || p.venue == bookingCreate.venue); 

     //performance details for the performance selected by the user 
     Performance seatbooking 
      = (from p in _db.Performance 
       select p).FirstOrDefault<Performance>(p => p.performanceDate == bookingCreate.performanceDate || p.performanceTime == bookingCreate.performanceTime || p.venue == bookingCreate.venue); 


     var now = DateTime.UtcNow; 
     var bookingToCreate = new Booking(); 
     bookingToCreate.bookingDate = now; 
     bookingToCreate.bookingTime = now; 
     bookingToCreate.bookingType = "Web"; 
     bookingToCreate.collect = true; 
     bookingToCreate.Customer = theCustomer; 
     bookingToCreate.Performance = thePerformance; 




     _db.AddToBooking(bookingToCreate); 
     _db.SaveChanges(); 

     var bookingnumber = (from p in _db.Booking 
          select p.bookingNo); 



     foreach (var displaySeat in seatNumber) 
     { 


      Seat theseat 
     = (from c in _db.Seat 

     select c).FirstOrDefault<Seat>(c => c.seatNumber == displaySeat); 


      var seatBooking = new SeatBooking(); 

      seatBooking.Booking = bookingToCreate; 
      seatBooking.Seat = theseat; 




      _db.AddToSeatBooking(seatBooking); 
      _db.SaveChanges(); 

     } 

     return RedirectToAction("ShowsIndex"); 
    } 

代碼確保正確的場內的座位被顯示和被選擇登錄的用戶和選定的性能。

我堅持什麼..

我目前輸出席位複選框

BookingCreate model = new BookingCreate(); 
       model.Seats = (from c in _db.Seat 
           where c.venue == id 
          select c); 

但是我想對於複選框來展示一下座位號是涉及到(目前他們只是一個空白的複選框)

還如何停止顯示已被預訂的席位,以停止重複。

感謝

+0

你是什麼尋找??建議如何做或它應該是什麼樣子? – sajoshi 2011-04-07 02:24:37

+0

所以基本上你想要有人爲你做你的高級設計?我建議你自己花一些時間做這件事,如果有任何具體問題,請回到SO。 – UpTheCreek 2011-04-07 08:34:29

+0

@sajoshi剛剛提出了一些建議,如果我在想這是一個很好的方法。如果有的話1知道任何在線教程等 – 2011-04-07 11:25:26

回答

1

我會做這種方式(提供有代理主鍵Customer.Id和Performance.Id)

public class BookingToCreateVM 
{ 
    public int BookingNo{get; set;} 
    //..etc - all necessary booking fields 

    public Guid UserId{get; set;} 
    public Guid PerformanceId{get; set;} 

    //data for something like dropdowns in view 
    public IList<Customer> Users{get; set;} 
    public IList<Performance> Performances{get; set;} 
} 

和控制器動作

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult CreateBooking(BookingToCreateVM bookingToCreateVM) 
{ 

    Customer theCustomer 
     = (from c in _db.Customer 
      select c).Single<Customer>(c=>c.Id == bookingToCreateVM.UserId); 


    Performance thePerformance 
     = (from p in _db.Performance 
      select p).Single<Performance>(p=> p.Id == bookingToCreateVM.PerformanceId); 

    var bookingToCreate = new Booking(); 
    bookingToCreate.BookingNo= bookingToCreateVM.BookingNo; 
    //..etc - initialize all necessary fields 
    bookingToCreate.Customer = theCustomer; 
    bookingToCreate.Performance = thePerformance; 

    _db.AddToBooking(bookingToCreate); 
    _db.SaveChanges(); 

    return RedirectToAction("ListBookings"); 
}