iPlus Nights Out

Background

Nights Out is a national what's on where entertainments listing service that provides venue and event information in a variety of categories that is accessible from any Cityspace iPlus point. I wrote the application in ASP.NET 1.1 and C#, with a SQL Server 2000 database backend and split it into three distinct areas of development:

  • An XML importer, written as a scheduled C# console application, that took a third party national entertainment listings feed and a Carling Live events listing feed, and parsed them into a SQL Server database.
  • A kiosk interface allowing visitors to the iPlus kiosks to browse through the available listings, obtaining printouts or emails of listings of interest. Navigation is accomplished via the use of tabs, which are split into events, venues and offers.
  • An admin interface enabling the sales team to promote the service and charge those venues with a standard listing contained within the feed to enhance that listing for a fee, which included giving the listing higher visibility and allowing an image to be presented as part of the offering. This included a version control system, allowing listings to exist in both published and draft forms so that they could be edited or enhanced in conjunction with client input, without necessarily altering the live listings on the kiosks.

XML importer

The XML importer was written as a fully object-oriented console application, that would take a venue and an event XML feed in turn and parse them through a series of stored procedures into a SQL server database. When dealing with the venue and event feeds, I created a venue and an event class with properties that each corresponded to an individual XML element within each listing in the feed. It was then a simple matter of passing the data held in the properties of those objects into the stored procedures. The importer also performed some initialisation functions required to publish the service across the entire kiosk network.

Kiosk interface

When the user first visits the application, they are presented with the events view, showing them a calendar with today highlighted and a list of today's events. They may elect to view the events either by date or by category.

Touch an event and a popup appears containing more details about the event, with the options to print or email the details. If the listing has an offer attached (entered via the admin tools), this is displayed also. If the user decides to email the details, the onscreen keyboard pops up, enabling the user to enter their email address.

As well as browsing by event, users may also opt to browse the listings by venue. This view presents the user with an A - Z interface and category view. The venue popup displays all of the upcoming events that are happening at the venue, again with print and email capability. If the network has offers available, this tab will also be present, and the event or venue listings that the offers are attached to will be highlighted accordingly.

Admin interface

The admin interface is a content management and publishing system, allowing the sales team to create and edit listings manually, enhance existing listings (both manual and from the feed, which involves potentially changing the title or description, and adding an image), add offers to the system, and, as an administrator, manage the users of the system (adding, changing passwords, deleting, etc). Enhanced listings will display above standard listings on the kiosk application.

Once the sales user has logged into the admin system, they are redirected to the search page, where they can search for an existing listing to edit or create a new listing from scratch. The page consists of two user controls, one dealing with the search, and the other with the search results. The search results control displays any matching Venue, Event or Offer search results in a set of datagrids. Clicking the Create or selected Edit button will take the user to the edit page.

The edit page again makes use of a tabbed interface, much like the search page, but contained within a custom control. This control has a number of properties including a Mode property, which determines which and how many tabs to show, and which child controls to load within those tabs. It also passes certain values from the search page to the child controls, such as the id of the listing being edited.