Caché Web Applications Tutorial
Setting an Expiration Date
[Home] [Back] 
InterSystems: The power behind what matters   
Class Reference   
Search:    

For an expiration date, we are going to use one year from today. To do so, we obtain the current date and time, from the Caché system variable $H, trim of the time portion with the leading plus operator, and add 365 to it.

Now we need to put this date into the format that the browser expects, which is a day followed by a date followed by a time in the GMT timezone. For example, at this moment it is
Tue, 15 Aug 2000 14:16:33 GMT
Caché does not have a function that produces a date in this precise format, but we can assemble one using various options of the $ZD function.
—Utils.CompleteOrder—
ClassMethod CompleteOrder()
{
    // For each film, update the number of tickets sold
    Set ItemList = 
            ##class(%Library.ResultSet).%New("Cinema.TicketItem:ShowItem")
    Do ItemList.Execute(OrderID)
    While ItemList.Next() {
        Set Film=##class(Cinema.Film).%OpenId(ItemList.Get("Film"))
        Set Film.TicketsSold = Film.TicketsSold 
             + ItemList.Get("AdultTickets") + ItemList.Get("ChildTickets")
        Set ItemID = ItemList.Get("ID") 
        Do Film.%Save()
        Set Film = ""
    } 
    Set ItemList = ""
    // Put a cookie on the user's computer
    Set Expires = +$H + 365 
    Set Expires = $ZD(Expires,11) _ ", " _ $ZD(Expires,2) _ " 00:00:00 GMT" 
    Set Item = ##class(Cinema.TicketItem).%OpenId(ItemID)
    Do %response.SetCookie("CacheCinemaLastCategory", 
        Item.Show.Film.Category.%Id(), Expires, "/") 
    Set Item = "" 
    // End the session
    Set %session.EndSession = 1
    Quit
}