TicketOrder オブジェクトの取得
AddShow メソッドの本文に以下のコードを追加します。
メソッドは、最初に TicketOrder オブジェクトを取得します。これが新規の注文の場合、新規の TicketOrder オブジェクトを生成する必要があります。また、このユーザに対する処理中の場合、このオブジェクトは既にデータベース内に存在します (その Complete プロパティは 0 (False) に設定されています)。
TicketOrder オブジェクトを既に生成してある場合、そのオブジェクト ID は %session オブジェクト (%CSP.SessionOpens in a new tab クラスのインスタンス) に格納されます。(その参照方法については後で説明します。)前に使用した %request オブジェクトのように、%session オブジェクトは Caché から提供され、名前と値の組み合わせを保存します。しかし、要求ごとに異なる %request オブジェクトとは違い、%session オブジェクトではユーザのセッションが継続している限り、要求全体のデータが保存されます。 (セッションの詳細は後で説明します。)
—Utils.AddShow—
Utils.AddShow
ClassMethod AddShow(ShowID As %String)
{
// Get an order object
If $data(%session.Data("Order")) {
Set ord = ##class(Cinema.TicketOrder).%OpenId(%session.Data("Order"))
}
Else {
Set ord=##class(Cinema.TicketOrder).%New()
// ...
}
// ...
// Save incomplete order and remember its Id in %session.
Do ord.%Save()
Set %session.Data("Order") = ord.%Id()
}