6. Data Objects & Operations (Model & Controller)

Properties and input fields followed by a "+" may occur more than once. If they are followed by a "*" they are required.

6.1. Event

An Event is represents something of interest happening at a certain time and place or places; the same Event may occur in more than one location. In the UCBCN, these Events are displayed on publicly available web-based calendars. Note: Event DateTime has not been completely defined here, but it will be defined very soon, and mappable to the iCalendar specification (RFC 2445).

6.1.1. Properties

  • Event.ID

  • Event.Title*

  • Event.Subtitle

  • EventType.ID (enumerated list)*

  • Event.OtherType

  • Event.SubType

  • Event.Description

  • Event.ShortDescription

  • Event.Refreshments

  • Event.NetworkClassification (Public, Private)

  • Event.ApprovedForCirculation

  • Event.Status

  • Event.OwnerID - this is the Account.ID of the Event's Primary Sponsor

  • Event.PrivateComment

  • Keyword+.ID

  • Event.OtherKeyword

  • Event.ImageTitle

  • Event.ImageURL

  • Event.WebPageURL

  • Event.ListingContactCalNetUID*

  • Event.DateCreated*

  • Event.CalNetUIDCreated*

  • Event.DateLastUpdated*

  • Event.CalNetUIDLastUpdated*

  • DateTime.(to be decided)*

  • Sponsor+.ID

  • Location+.ID

  • Performer+.ID

  • PublicContact+.ID

  • RelatedEvent+.ID

  • AttendanceRestriction+.ID

  • AdmissionInfoGroup+.ID

  • Document+.ID

  • Webcast+.ID

  • FeatureType+.ID

  • Account+.ID

6.1.2. Methods

All of the following methods except SEARCH_EVENTS assume that the User is logged in (so the User's Account ID and CalNetUID can be determined). All input is assumed to be a new value unless "(current value)" is specified. All functions may only performed from within the Calendar & Event Management Application unless otherwise specified.

6.1.2.1. CREATE_EVENT

Allows a User to add an Event to the database. This action may also be performed from the Live Calendar.

Precondition:

  • If using the Calendar & Event Management Application, User must have CreateEvent permission for the Account represented by Event.OwnerID and User.Account_ID (which should usually be the same--they are usually creating an Event for their Account). All Users with CalNetUIDs have CreateEvent permission from the External form.

Potential Input:

  • User.Account_ID (current value)*

  • User.CalNetUID (current value)*

  • Event.Title*

  • Event.Subtitle

  • Event_Type.ID*

  • Event.OtherType

  • Event.SubType

  • Event.Description

  • Event.ShortDescription

  • Event.Refreshments

  • Event.NetworkClassification (Public, Private)

  • Event.Status

  • Event.PrivateComment

  • Keyword+.Name

  • Event.OtherKeyword

  • Event.ImageTitle

  • Event.ImageURL

  • Event.WebPageURL

  • Event.ListingContactCalNetUID*

  • Event.DateCreated* (this is not entered by the User, but generated by the system)

  • Event.CalNetUIDCreated* (this is not entered by the User, but generated by the system)

  • Event.DateLastUpdated* (this is not entered by the User, but generated by the system)

  • Event.CalNetUIDUpdated* (this is not entered by the User, but generated by the system)

  • DateTime.(to be decided)*

  • Sponsor+.ID (if chosen from enumerated list) or Sponsor+.Name (if text was entered) (entering a primary Sponsor, who will be the Event owner, is required)*

  • Sponsor+.Level

  • Sponsor+.LogoTitle

  • Sponsor+.LogoURL

  • Sponsor+.Description

  • Sponsor+.WebPageURL

  • Location+.ID (if chosen from enumerated list) or Location+.Name (if text was entered)*

  • Location+.StreetAddress1

  • Location+.StreetAddress2

  • Location+.Room

  • Location+.City

  • Location+.State

  • Location+.Zip

  • Location+.MapURL

  • Location+.Hours

  • Location+.AdditionalPublicInfo

  • Location+.Type

  • Location+.Phone

  • PerformerType+.ID (if chosen from enumerated list) or PerformerType.Name (if text was entered)

  • Performer+.Name

  • Performer+.OtherPerformerType

  • Performer+.JobTitle

  • Performer+.OrganizationName

  • Performer+.PersonalWebPageURL

  • Performer+.OrganizationWebPageURL

  • PublicContact+.Name

  • PublicContact+.JobTitle

  • PublicContact+.Organization

  • PublicContact+.AddressLine1

  • PublicContact+.AddressLine2

  • PublicContact+.City

  • PublicContact+.State

  • PublicContact+.Zip

  • PublicContact+.EmailAddress

  • PublicContact+.Phone

  • PublicContact+.Fax

  • PublicContact+.WebPageURL

  • RelatedEvent+.RelatedEventID

  • RelatedEvent+.RelationType

  • AttendanceRestriction+.Name

  • AdmissionInfoGroup+.TicketPolicy

  • AdmissionInfoGroup+.TicketContactName

  • AdmissionInfoGroup+.TicketContactPhone

  • AdmissionInfoGroup+.TicketContactURL

  • AdmissionInfoGroup+.TicketsOnSaleDate

  • AdmissionInfoGroup+.TicketAdditionalInfo

  • AdmissionInfoGroup+.ReservationPolicy

  • AdmissionInfoGroup+.ReservationContactName

  • AdmissionInfoGroup+.ReservationContactPhone

  • AdmissionInfoGroup+.ReservationContactURL

  • AdmissionInfoGroup+.Audience+.ID (if chosen from enumerated list) or AdmissionInfoGroup+.Audience+.Name (if text was entered)

  • AdmissionInfoGroup+.ReservationAdditionalInfo

  • AdmissionInfoGroup+.FreeEvent

  • AdmissionInfoGroup+.SoldOut

  • AdmissionInfoGroup+.ReservationOtherAudience

  • AdmissionInfoGroup+.AdmissionCharge+.Price

  • AdmissionInfoGroup+.AdmissionCharge+.Description

  • Document+.Name

  • Document+.URL

  • Webcast+.Title

  • Webcast+.Status

  • Webcast+.DateAvailable

  • Webcast+.PlayerType

  • Webcast+.URL+

  • Webcast+.SequenceNumber+

  • FeatureType+.ID

  • Account+.ID

  • $Status - Variable saying whether User of Calendar & Event Management Application wants Event to be "posted" or put in their "pending" queue. Status may only be set to "pending" for Events coming from an External Form.

  • $Source - Variable that has been assigned based on where the Event was entered (e.g. "InternalForm", "ExternalForm")

Post-Conditions:

  • Users attempting to enter Events with the same Location.Name, Location.StreetAddress1, Location.StreetAddress2, Location.Room, Location.City, Location.State, Location.Zip, and DateTime as an Event already in the system must receive a confirmation message letting them know an Event with the same date, time and location is already in the database, populating the Create Event screen with that data, and asking them if they really want to continue before accepting the new Event.

  • Event.ID has been assigned by the database

  • All of the input fields which were entered (except those marked "current value") have been added to the corresponding in the database columns. However, if user is entering Event from an External form, FeatureType.ID is not available. In addition:

    • Event.DateCreated = the current DateTime

    • Event.CalNetUIDCreated = User.CalNetUID

    • Event.DateLastUpdated = Timestamp with the current DateTime

    • Event.CalNetUIDLastUpdated = User.CalNetUID

    • Event.OwnerID = Sponsor.ID of the Sponsor for which Sponsor.Level = "Primary" (this will be limited to one Sponsor in the user interface). If this Account does not exist in the system, assign the Event to Public Affairs.

  • A record has been added to the Account_has_Event table where Account_ID = Event.OwnerID, Event_ID = (Event.ID that was assigned by the database), Status = $Status, and Source = $Source, DateCreated = Timestamp with current date & time, CalNetUIDCreated = User.CalNetUID, DateLastUpdated = Timestamp with current date & time, CalNetUIDLastUpdated = User.CalNetUID

  • If Event.NetworkStatus = "public" and Account.EventReleasePreference of Event.OwnerID = "immediate", update Event.ApprovedForCirculation="true". Otherwise Event.ApprovedForCirculation = "false" (and will remain "false" until the Event is posted by the Event Owner). A record is added to the Account_has_Event table for all Event.AccountIDs where Account_ID = Event.AccountID (except the Account.ID = Event.OwnerID, which was added above), Event_ID = (Event.ID that was assigned by the database), Source = $Source, DateCreated = Timestamp with current date & time, CalNetUIDCreated = User.CalNetUID, DateLastUpdated = Timestamp with current date & time, CalNetUIDLastUpdated = User.CalNetUID. If Event.ApprovedForCirculation = "true", Account_has_Event.Status = "pending". If Event.ApprovedForCirculation = "false", Account_has_Event.Status = "onhold". Events with NetworkStatus="private" should be limited in the interface to only entering one Primary Sponsor, who will also be the Event Owner.

6.1.2.2. EDIT_EVENT

Allows a User to update information on a particular Event information in the database.

Pre-Conditions:

  • Event.ID must exist

  • User.Account_ID = Event.OwnerID

  • User must have EditEvent permission for the Account represented by Event.OwnerID

Input:

  • User.Account.ID (current value)*

  • User.CalNetUID (current value)*

  • Event.ID (current value)*

  • All input fields in CREATE_EVENT (same fields that are required in CREATE_EVENT are required here) except Event.DateCreated and Event.CalNetUIDCreated, which never change after the Event is initially entered

Post-Conditions:

  • All of the input fields which were entered (except those marked "current value") have been updated in the corresponding database columns

  • Event.DateLastUpdated = Timestamp with the current DateTime

  • Event.CalNetUIDLastUpdated = User.CalNetUID

6.1.2.3. COPY_EVENT

Allows a User to make a copy of an Event to use as a template for a new Event.

Pre-Conditions:

  • Event.ID must exist

  • User must have CreateEvent permission for User.Account_ID

Input:

  • User.Account.ID (current value)*

  • User.CalNetUID (current value)*

  • Event.ID (current value)*

  • All input fields in CREATE_EVENT except Event.DateCreated, Event.CalNetUIDCreated, Event.DateLastUpdated, Event.CalNetUIDLastUpdated

Post-Conditions:

  • All information originally entered in CREATE_EVENT or subsequently added in EDIT_EVENT (except Event.DateCreated, Event.CalNetUIDCreated, Event.DateLastUpdated, Event.CalNetUIDLastUpdated) from the Event being used as a template is populated into the Create Event form. Event.OwnerID, however, is changed to User.Account.ID.

6.1.2.4. REPEAT_EVENT

Allows a User to make create copies of an Event in the database which follow a particular repetition pattern; thus, the dates and/or times will all be different. These repetition patterns will be defined in the DateTime section which is still being designed.

Pre-Conditions:

  • Event.ID of initial Event defining the repetition must exist

  • User must have CreateEvent permission for User.Account_ID

Input:

  • User.Account.ID (current value)*

  • User.CalNetUID (current value)*

  • Event.ID (current value)*

  • All input fields in CREATE_EVENT except Event.DateCreated, Event.CalNetUIDCreated, Event.DateLastUpdated, Event.CalNetUIDLastUpdated

Post-Conditions:

  • After User enters repetition pattern, they are shown all the dates that will be created based on this pattern. When the Event is saved, the additional database records for all the Events in the series are created.

  • All information originally entered in CREATE_EVENT or subsequently added in EDIT_EVENT (except Event.DateCreated, Event.CalNetUIDCreated, Event.DateLastUpdated, Event.CalNetUIDLastUpdated) is copied from the initial Event defining the repetition to database records which represent all the Events in the series specified by the User. All records, however, will have a Date or Time different from the original record.

6.1.2.5. PARENT_EVENT

When a User specifies that they would like to create a parent Event, after this Event is created they are taken to a Create Event form that is mostly blank, but is tied to the parent event as one of its children.

Pre-Conditions:

  • Event.ID of parent Event must exist

  • User must have CreateEvent permission for User.Account_ID

  • User.Account_ID = Event.OwnerID of parent Event

Input:

  • User.Account.ID (current value)*

  • User.CalNetUID (current value)*

  • Event.ID of parent Event (current value)*

Post-Conditions:

  • After User saves the parent Event, they are taken to a Create Event form that is mostly blank, but is populated with the parent Event.ID as RelatedEvent.RelationType = "parent"

  • For the child event, a record is created in RelatedEvent where Event_ID = (ID of the child Event assigned by the database), Event.RelatedEvent.RelationType = "child", and Event.RelatedEvent.RelatedEventID = Event.ID of the parent Event.

  • At the bottom of the Create Event form for each child Event, or the Edit Event form if the User accesses the parent event later, the user is asked to check a box before saving the Event if they would like to "Create another child Event?" From the Edit Event form for the parent Event, the User also gets a box asking if they would like to "Edit child Events?" and then a set of check boxes next to the name of each child Event. When the parent Event is saved, the User is taken to the child Event(s) for the box(es) they checked.

6.1.2.6. DELETE_EVENT

Allows a User to change an Event's NetworkClassification to "deleted" and remove it from their calendar. An Event is never really deleted from the database. Note: At application developer's discretion, we may want to move deleted Events to their own tables, which will simply be copies of all tables related to Events.

Pre-Conditions:

  • Event.ID must exist

  • User.Account_ID = Event.OwnerID

  • User must have DeleteEvent permission for the Account represented by Event.OwnerID

  • Event must not be in use on any other calendar: "Select * from Account_has_Event a, Event e where a.Event_ID = (Event.ID of the Event being deleted) and a.User.Account_ID != e.OwnerID" must return NULL. Users should not see the "Delete" button if the Event is in use by another Account.

Input:

  • User.Account.ID (current value)*

  • User.CalNetUID (current value)*

  • Event.ID (current value)*

Post-Conditions:

  • If the any of the Events are in Pending or Posted queue of another calendar, User receives error message stating that Event could not be deleted because it is in use on another calendar & suggesting that they remove it instead.

  • If the User did not come from a confirmation screen, they will be shown a confirmation screen displaying all information originally entered in CREATE_EVENT or subsequently added in EDIT_EVENT, and asked to confirm the Event being deleted before it is actually deleted.

  • The Account_has_Event table is updated where Account_ID = User.Account.ID and Event_ID = (Event.ID of the Event being deleted), Status = "viewed", DateLastUpdated = Timestamp with current date & time, CalNetUIDLastUpdated = User.CalNetUID

  • Event.NetworkClassification = "deleted"

  • Event.DateLastUpdated = Timestamp with the current DateTime

  • Event.CalNetUIDLastUpdated = User.CalNetUID

6.1.2.7. VIEW_PENDING_EVENTS

Returns information on Events in the pending queue for the active Account. Note: This function may be combined with VIEW_POSTED_EVENTS and/or VIEW_ARCHIVED_EVENTS at the application developer's discretion.

Pre-Conditions:

  • User must have ViewEvents Permission

Input:

  • User.Account.ID (current value)*

  • User.CalNetUID (current value)*

  • $SortOrder (default is EventDate&Time)

Post-Conditions:

  • Search results sorted by $SortOrder including Event Date & Time, Event.Title, Event.Owner.Name, Event.Account_has_Event.Source, Event.Account_has_Event.DateCreated where Event have been returned to the screen for all Events in Account_has_Event where Status = "pending" and Account_ID = User.Account.ID

  • If there are any Events with DateLastUpdated < 7 days ago, put them at the top of the queue and make them a distinctive color or use an icon to indicate that they have changed.

  • If there are no pending Events for this Account, a message stating "There are no pending events at this time" will be displayed to the User.

6.1.2.8. VIEW_POSTED_EVENTS

Returns information on Events in the posted queue for the active Account. Note: This function may be combined with VIEW_PENDING_EVENTS and/or VIEW_ARCHIVED_EVENTS at the application developer's discretion.

Pre-Conditions:

  • User must have ViewEvents Permission

Input:

  • User.Account.ID (current value)*

  • User.CalNetUID (current value)*

  • $SortOrder (default is EventDate&Time)

Post-Conditions:

  • Search results sorted by $SortOrder including Event Date & Time, Event.Title, Event.Owner.Name, Event.Account_has_Event.Source, Event.Account_has_Event.DateLastUpdated have been returned to the screen for all Events in Account_has_Event where Status = "pending" and Account_ID = User.Account.ID

  • If there are any Events with DateLastUpdated < 7 days ago, put them at the top of the queue and make them a distinctive color or use an icon to indicate that they have changed.

  • If there are no posted Events for this Account, a message stating "There are no posted events at this time" will be displayed to the User.

6.1.2.9. VIEW_ARCHIVED_EVENTS

Returns information on Events in the archived queue for the active Account. Note: This function may be combined with VIEW_PENDING_EVENTS and/or VIEW_POSTED_EVENTS at the application developer's discretion.

Pre-Conditions:

  • User must have ViewEvents Permission

Input:

  • User.Account.ID (current value)*

  • User.CalNetUID (current value)*

  • $SortOrder (default is EventDate&Time)

Post-Conditions:

  • Search results sorted by $SortOrder including Event Date & Time, Event.Title, Event.Owner.Name, Event.Account_has_Event.Source, have been returned to the screen for all Events in Account_has_Event where Status = "archived" and Account_ID = User.Account.ID

  • If there are no archived Events for this Account, a message stating "There are no archived events at this time" will be displayed to the User.

6.1.2.10. VIEW_EVENT_DETAILS

Allows a User to view detailed information on a particular Event in the database. It also gives Users a list of the different operations they can perform on a particular Event in the form of displayed buttons.

Pre-Conditions:

  • Event.ID must exist

  • User must have ViewEvents permission for User.Account_ID

  • If User.Account.ID != Event.OwnerID, Event.ApprovedForCirculation must = "true" and Event.NetworkClassification must = "public"

Input:

  • User.Account.ID (current value)*

  • User.CalNetUID (current value)*

  • Event.ID (current value)*

  • $ScreenUserCameFrom

Post-Conditions:

  • All information originally entered in CREATE_EVENT or subsequently added in EDIT_EVENT are displayed to the User.

  • If Account owns Event (User.Account.ID = Event.OwnerID) & Event.Account_has_Event.Status = "pending", the user sees the following buttons: Edit, Post, Remove from Pending, and, if "Select * from Account_has_Event a, Event e where a.Event_ID = (Event.ID of the Event being deleted) and a.User.Account_ID != e.OwnerID" returns NULL", Delete from System

  • If Account does not own Event (User.Account.ID != Event.OwnerID), Event.Account_has_Event.Status = "pending", and $ScreenUserCameFrom = "SearchCampusEvents" the user sees the following buttons: Post and Recommend

  • If Account does not own Event (User.Account.ID != Event.OwnerID) and Event.Account_has_Event.Status = "pending" the user sees the following buttons: Post, Recommend, and Remove from Pending

  • If Account owns Event (User.Account.ID = Event.OwnerID) & Event.Account_has_Event.Status = "posted", the user sees the following buttons: Edit, Recommend, Remove from Calendar, and, if "Select * from Account_has_Event a, Event e where a.Event_ID = (Event.ID of the Event being deleted) and a.User.Account_ID != e.OwnerID" returns NULL", Send Back to Pending and Delete from System

  • If Account does not own Event (User.Account.ID != Event.OwnerID) and Event.Account_has_Event.Status = "posted", the user sees the following buttons: Recommend, Send Back to Pending, Remove from Calendar

  • If $ScreenUserCameFrom = "Archived", User sees no buttons

6.1.2.11. POST_EVENT

Allows a User to post an Event or Events located in their Pending queue to their Account's calendar.

Precondition:

  • Event.ID(s) must exist.

  • User must have PostEvent permission for User.Account_ID

Input:

  • User.Account.ID (current value)*

  • User.CalNetUID (current value)*

  • Event.ID(s) (current value)*

PostCondition:

  • The Account_has_Event table is updated where Account_ID = User.Account.ID and Event_ID = (Event.ID(s) of the Event(s) being posted), Status = "posted", DateLastUpdated = Timestamp with current date & time, CalNetUIDLastUpdated = User.CalNetUID

  • If User.Account.ID = Event.OwnerID and Event.NetworkClassification = "public", update Event.ApprovedForCirculation="true". Then check to see if there are any Accounts with this Event "onhold". Select * from Account_has_Event a Event e where a.Event_ID = (Event.ID(s) of the Event(s) being posted) and a.Account_ID = e.AccountID and a.Status = "onhold". If so, update it/them with Status = "pending", DateLastUpdated = Timestamp with current date & time, and CalNetUIDLastUpdated = User.CalNetUID.

6.1.2.12. PEND_EVENT

Allows a User to put an Event that was previously "posted" back in their Account's Pending queue.

Precondition:

  • Event.ID must exist

  • User must have RemoveEvent permission for User.Account_ID

  • If User.Account_ID = Event.OwnerID (if this Account owns Event) and Account.EventReleasePreference of Account owning Event = "approval", Event must not be in the Pending or Posted queue of any other calendar: "Select * from Account_has_Event a, Event e where a.Event_ID = (Event.ID of the Event being moved to pending) and a.Account_ID != e.OwnerID" must return NULL. Users should not see the "Send Back to Pending" button if the Event is in use by another Account.

Input:

  • User.Account.ID (current value)*

  • User.CalNetUID (current value)*

  • Event.ID(s) (current value)*

PostCondition:

  • If the any of the Events are in Pending or Posted queue of another calendar, User receives error message stating that Event could not be sent back to Pending because it is in use on another calendar.

  • The Account_has_Event table is updated where Account_ID = User.Account.ID and Event_ID = (Event.ID of the Event being moved to pending), Status = "pending", DateLastUpdated = Timestamp with current date & time, CalNetUIDLastUpdated = User.CalNetUID

  • Event.ApprovedForCirculation="false"

6.1.2.13. POST_EVENT_FROM_SEARCH

Allows a User to post an Event found in a Search to their Account's calendar. Note: This function may be combined with POST_EVENT or PEND_EVENT_SEARCH at the application developer's discretion.

Precondition:

  • Event.ID must exist

  • User must have PostEvent permission for User.Account_ID

Input:

  • User.Account.ID (current value)*

  • User.CalNetUID (current value)*

  • Event.ID (current value)*

PostCondition:

  • A record has been added to the Account_has_Event table where Account_ID = User.Account.ID, Event_ID = (Event.ID of the Event being moved to posted), Status = "posted", and Source = "search", DateCreated = the current date & time, CalNetUIDCreated = User.CalNetUID, DateLastUpdated = Timestamp with current date & time, CalNetUIDLastUpdated = User.CalNetUID

6.1.2.14. PEND_EVENT_FROM_SEARCH

Allows a User to put an Event found in a Search into their Account's Pending queue. Note: This function may be combined with PEND_EVENT or POST_EVENT_SEARCH at the application developer's discretion.

Precondition:

  • Event.ID must exist

  • User must have PendEvent permission for User.Account_ID

Input:

  • User.Account.ID (current value)*

  • User.CalNetUID (current value)*

  • Event.ID (current value)*

PostCondition:

  • A record has been added to the Account_has_Event table where Account_ID = User.Account.ID, Event_ID = (Event.ID of the Event being moved to pending), Status = "pending", and Source = "search", DateCreated = the current date & time, CalNetUIDCreated = User.CalNetUID, DateLastUpdated = Timestamp with current date & time, CalNetUIDLastUpdated = User.CalNetUID

6.1.2.15. REMOVE_EVENT_POSTED

Allows a User to remove an Event from their calendar without actually deleting it. It may be necessary for a User to use this function instead of deleting an Event that they own if it is in use by another Account. Note: This function may be split into two: REMOVE_EVENT_POSTED & REMOVE_MULTIPLE_EVENTS_POSTED, at the application developer's discretion.

Pre-Conditions:

  • Event.ID(s) must exist

  • User must have RemoveEventPosted permission for User.Account_ID

Input:

  • User.Account.ID (current value)*

  • User.CalNetUID (current value)*

  • Event.ID(s) (current value)*

Post-Conditions:

  • The Account_has_Event table is updated where Account_ID = User.Account.ID and Event_ID = (Event.ID(s) of the Event(s) being removed), Status = "viewed", DateLastUpdated = Timestamp with current date & time, CalNetUIDLastUpdated = User.CalNetUID

  • Users will be shown a confirmation screen displaying all information originally entered in CREATE_EVENT or subsequently added in EDIT_EVENT, and asked to confirm the Event(s) being removed before they are actually removed. If any of these Events are not in use by any other Account ( "Select * from Account_has_Event a, Event e where a.Event_ID = (Event.ID of the Event being deleted) and a.User.Account_ID != e.OwnerID" must return NULL) and User.Account.ID = Event.OwnerID, they will be asked if they would like to Delete the Event from the system instead. If the User selects any of these Events for Deletion, DELETE_EVENT method should be followed for that Event or those Events.

6.1.2.16. REMOVE_EVENT_PENDING

Allows a User to remove an Event from their Pending queue without actually deleting it.

Pre-Conditions:

  • Event.ID must exist

  • User must have RemoveEventPending permission for User.Account_ID

Input:

  • User.Account.ID (current value)*

  • User.CalNetUID (current value)*

  • Event.ID (current value)*

Post-Conditions:

  • The Account_has_Event table is updated where Account_ID = User.Account.ID and Event_ID = (Event.ID of the Event being removed), Status = "viewed", DateLastUpdated = Timestamp with current date & time, CalNetUIDLastUpdated = User.CalNetUID

6.1.2.17. RECOMMEND_EVENT

Allows a User to recommend an Event to another Account.

Pre-Conditions:

  • Event.ID must exist

  • User must have RecommendEvent permission for User.Account_ID

Input:

  • User.Account.ID (current value)*

  • User.CalNetUID (current value)*

  • Event.ID (current value)*

  • Account.ID to which the User would like to recommend the Event (current value)*

Post-Conditions:

  • A record has been added to the Account_has_Event table where Account_ID = (Account.ID receiving recommendation), Event_ID = (Event.ID of the Event being recommended), Status = "pending", and Source = "recommend", DateCreated = the current date & time, CalNetUIDCreated = User.CalNetUID, DateLastUpdated = Timestamp with current date & time, CalNetUIDLastUpdated = User.CalNetUID

6.1.2.18. SEARCH_CAMPUS_EVENTS

Allows a User to search all public Events which are approved for circulation. This action may be performed from the Live Calendar. It may also be performed when the User selects the "Preview Results" button when setting up a Subscription in the Calendar & Event Management Application. At the discretion of the application developer, this function may be separated into a Quick Search and Advanced Search.

Pre-Conditions:

  • None

Input:

  • $TitleDescription

  • $[]Sponsor.ID (array)

  • $OtherSponsorName

  • $[]EventType.ID (array)

  • $OtherEventType

  • $[]Audience.ID (array)

  • $OtherAudience

  • $PerformerName

  • $[]Location.ID (array)

  • $OtherLocationName

  • $EventFromDate

  • $EventToDate

  • $[]Keyword.ID (array)

  • $OtherKeyword

  • User.Account.ID (current value) (required if performed from in the Calendar & Event Management Application)*

Post-Conditions:

  • Search results including Event date & time, Event.Title, Event.OwnerID.Name, and, if inside the Calendar & Event Management Application, an indication of whether each Event is currently live on the calendar of the Account of the User doing the search, have been returned to the screen for all Events meeting the Search criteria where Event.NetworkClassification = "public" and Event.ApprovedForCirculation="true"

6.1.2.19. SEARCH_EVENT_QUEUE

Allows a User to search all Events within a particular queue of their Account. At the discretion of the application developer, this function may be separated into a Quick Search and Advanced Search.

Pre-Conditions:

  • User must have ViewEventQueue Permission

Input:

  • User.Account.ID (current value)*

  • User.CalNetUID (current value)*

  • $TitleDescription

  • $[]Sponsor.ID (array)

  • $OtherSponsorName

  • $[]EventType.ID (array)

  • $OtherEventType

  • $[]Audience.ID (array)

  • $OtherAudience

  • $PerformerName

  • $[]Location.ID (array)

  • $OtherLocationName

  • $EventFromDate

  • $EventToDate

  • $[]Keyword.ID (array)

  • $OtherKeyword

  • $Queue - the queue the User is searching in (e.g. "pending", "posted", "archived")

Post-Conditions:

  • Search results including the fields which are normally displayed in the queue the User is searching in have been returned to the screen for all Events meeting the Search criteria where Account_ID = User.Account.ID and Event.NetworkClassification = $Queue

6.1.2.20. EXPORT_EVENTS

Allows a User to export Events from their Pending, Posted, or Archived queue. These exported Events may be further limited by Search criteria and may be exported to several different file types. All of the file types are still being determined, but will at least include an RSS file, a tab-separated text file and a file validating against the UCBEvents.xsd W3C Schema.

Pre-Conditions:

  • User must have ExportEvent Permission

Input:

  • User.Account.ID (current value)*

  • User.CalNetUID (current value)*

  • $DataSet (Pending, Posted, and/or Archived)

  • $TitleDescription

  • $[]Sponsor.ID (array)

  • $OtherSponsorName

  • $[]EventType.ID (array)

  • $OtherEventType

  • $[]Audience.ID (array)

  • $OtherAudience

  • $PerformerName

  • $[]Location.ID (array)

  • $OtherLocationName

  • $EventFromDate

  • $EventToDate

  • $[]Keyword.ID (array)

  • $OtherKeyword

  • $FileType

Post-Conditions:

  • A file containing data to be determined when file types are chosen (most likely to include all information originally entered in CREATE_EVENT or subsequently added in EDIT_EVENT) which meets the above criteria, and for which Account_ID = User.Account.ID is created. The User is then asked where they would like to save it on their computer.

6.1.2.21. ARCHIVE_EVENTS

A job that runs nightly and puts all Events for a particular Account for which the Event Date is beyond the range of the display calendar into the archive. At the application developer's discretion, if it helps performance we may want to move these Events out of the Events table into an ArchivedEvents table.

Pre-Conditions:

  • None

Input:

  • All Account.IDs (current value)*

Post-Conditions:

  • A query has been run to determine the oldest date a non-archived Event should have ($OldestDate) in each Account using Account.CalendarDateRange.

  • A query has been run to determine the Event.ID of any Events where Event.DateTime is older than $OldestDate for that Account.

  • The Account_has_Event table is updated where Account_ID = Event.Account.ID and Event_ID = (Event returned from >$OldestDate query), Status = "archived", DateLastUpdated = Timestamp with current date & time, CalNetUIDLastUpdated = "system"

6.1.2.22. UPLOAD_EVENTS

Allows a User upload an XML file of Events to the database. Note: this function may be combined with CREATE_EVENT at the application developer's discretion.

Precondition:

  • User must have UploadEvents Permission.

  • Uploaded document must validate against the UCBEvents.xsd W3C Schema.

  • Events must have only one Primary Sponsor (which will become the Event Owner)

  • Events in the uploaded document must not be Events sent in previously by the same Account. This function accepts new Events only; editing of Events must be done through the Calendar & Event Management Application. Events with the same Location.Name, Location.StreetAddress1, Location.StreetAddress2, Location.Room, Location.City, Location.State, Location.Zip, and DateTime as an Event already in the system will be rejected.

Potential Input:

  • User.Account_ID (current value)*

  • User.CalNetUID (current value)*

  • Event.Title*

  • Event.Subtitle

  • Event_Type.ID*

  • Event.OtherType

  • Event.SubType

  • Event.Description

  • Event.ShortDescription

  • Event.Refreshments

  • Event.NetworkClassification (Public, Private)

  • Event.Status

  • Event.PrivateComment

  • Keyword+.Name

  • Event.OtherKeyword

  • Event.ImageTitle

  • Event.ImageURL

  • Event.WebPageURL

  • Event.ListingContactCalNetUID*

  • Event.DateCreated* (this is not included in the input file, but generated by the system)

  • Event.CalNetUIDCreated* (this is not included in the input file, but generated based on the User.CalNetUID of the User uploading the file)

  • Event.DateLastUpdated* (this is not included in the input file, but generated by the system)

  • Event.CalNetUIDUpdated* (this is not included in the input file, but generated based on the User.CalNetUID of the User uploading the file)

  • DateTime.(to be decided)*

  • Sponsor+.ID (if chosen from enumerated list) or Sponsor+.Name (if text was entered)

  • Sponsor+.Level

  • Sponsor+.LogoTitle

  • Sponsor+.LogoURL

  • Sponsor+.Description

  • Sponsor+.WebPageURL

  • Location+.ID (if chosen from enumerated list) or Location+.Name (if text was entered)*

  • Location+.StreetAddress1

  • Location+.StreetAddress2

  • Location+.Room

  • Location+.City

  • Location+.State

  • Location+.Zip

  • Location+.MapURL

  • Location+.Hours

  • Location+.AdditionalPublicInfo

  • Location+.Type

  • Location+.Phone

  • PerformerType+.ID (if chosen from enumerated list) or PerformerType.Name (if text was entered)

  • Performer+.Name

  • Performer+.OtherPerformerType

  • Performer+.JobTitle

  • Performer+.OrganizationName

  • Performer+.PersonalWebPageURL

  • Performer+.OrganizationWebPageURL

  • PublicContact+.Name

  • PublicContact+.JobTitle

  • PublicContact+.Organization

  • PublicContact+.AddressLine1

  • PublicContact+.AddressLine2

  • PublicContact+.City

  • PublicContact+.State

  • PublicContact+.Zip

  • PublicContact+.EmailAddress

  • PublicContact+.Phone

  • PublicContact+.Fax

  • PublicContact+.WebPageURL

  • RelatedEvent+.RelatedEventID

  • RelatedEvent+.RelationType

  • AttendanceRestriction+.Name

  • AdmissionInfoGroup+.TicketPolicy

  • AdmissionInfoGroup+.TicketContactName

  • AdmissionInfoGroup+.TicketContactPhone

  • AdmissionInfoGroup+.TicketContactURL

  • AdmissionInfoGroup+.TicketsOnSaleDate

  • AdmissionInfoGroup+.TicketAdditionalInfo

  • AdmissionInfoGroup+.ReservationPolicy

  • AdmissionInfoGroup+.ReservationContactName

  • AdmissionInfoGroup+.ReservationContactPhone

  • AdmissionInfoGroup+.ReservationContactURL

  • AdmissionInfoGroup+.Audience.ID+

  • AdmissionInfoGroup+.ReservationAdditionalInfo

  • AdmissionInfoGroup+.FreeEvent

  • AdmissionInfoGroup+.SoldOut

  • AdmissionInfoGroup+.ReservationOtherAudience

  • AdmissionInfoGroup+.AdmissionCharge+.Price

  • AdmissionInfoGroup+.AdmissionCharge+.Description

  • Document+.Name

  • Document+.URL

  • Webcast+.Title

  • Webcast+.Status

  • Webcast+.DateAvailable

  • Webcast+.PlayerType

  • Webcast+.URL+

  • Webcast+.SequenceNumber+

  • FeatureType+.ID

  • Account+.ID

  • $Status - Variable saying whether User wants uploaded Events to be "posted", put in their "pending" queue, or marked "none" to indicate that they were simply uploaded to the database to be shared

Post-Conditions:

  • Event.ID has been assigned by the database

  • All of the input fields which were entered (except those marked "current value") have been added to the corresponding in the database columns. In addition:

    • Event.DateCreated = the current DateTime

    • Event.CalNetUIDCreated = User.CalNetUID

    • Event.DateLastUpdated = Timestamp with the current DateTime

    • Event.CalNetUIDLastUpdated = User.CalNetUID

    • Event.OwnerID = Sponsor.ID of the Sponsor for which Sponsor.Level = "Primary" (this will be limited to one Sponsor in the user interface)

  • If $Status != "none," a record for each Event has been added to the Account_has_Event table where Account_ID = User.Account_ID, Event_ID = (Event.ID that was assigned by the database), Status = $Status, and Source = "xmlfeed", DateCreated = Timestamp with current date & time, CalNetUIDCreated = User.CalNetUID, DateLastUpdated = Timestamp with current date & time, CalNetUIDLastUpdated = User.CalNetUID

  • For each Event, if Event.NetworkStatus = "public" and Account.EventReleasePreference of Event.OwnerID = "immediate", Event.ApprovedForCirculation="true". Otherwise, Event.ApprovedForCirculation="false".

6.1.2.23. CREATE_RSS_FEEDS

A job that runs nightly and creates 4 RSS Event feeds for a each Account: Today's Events, This Week's Events, This Month's Events, and Events (all future Events and Events held during the past 6 months). We believe we will use RSS 2.0, but this may change. If possible, we would also like to put an RSS link on each page of the calendar (except EventDetails pages), allowing users to view each page either as HTML or an RSS feed. These pages would probably be created as users asked for them, and not in a nightly batch job.

Pre-Conditions:

  • None

Input:

  • All Account.IDs (current value)*

  • Event.Title

  • Event.DateTime

  • Event.Location.Name

  • Event.ShortDescription or (if not avail) Event.Descripition

  • $Link - Link to Event within the Event Owner's calendar

Post-Conditions:

  • Today's Events, This Week's Events, This Month's Events, and Events RSS feeds have been created for all Accounts and placed in the appropriate location so that they can be linked to from the corresponding links on that calendar's home page.

  • In the RSS feeds, Event.Title = RSS.title, $Link = RSS.link, Event.DateTime = dc:date, Event.ShortDescription or (if not avail) Event.Description = RSS.description.

6.2. Accounts

6.2.1. Properties

  • Account.ID

  • Account.Name*

  • Account.ShortName*

  • Account.StreetAddress1*

  • Account.StreetAddress2*

  • Account.City*

  • Account.State*

  • Account.Zip*

  • Account.Phone*

  • Account.Fax

  • Account.Email*

  • Account.EventReleasePreference*

  • Account.AccountStatus*

  • Account.CalendarDateRange*

  • Account.FormatCalendarData

  • Account.EmailLists*

  • Account.DateCreated*

  • Account.CalNetUIDCreated*

  • Account.DateLastUpdated*

  • Account.CalNetUIDLastUpdated*

  • Event+.ID

  • Subscription+.ID

  • User.ID*

6.3. Users

6.3.1. Properties

  • User.CalNetUID*

  • User.AccountStatus*

  • User.DateCreated*

  • User.CalNetUIDCreated*

  • User.DateLastUpdated*

  • User.CalNetUIDLastUpdated*

  • Permission+.ID

6.4. Permissions

6.4.1. Properties

  • Permission.ID*

  • Permission.Name*

  • Permission.Description

  • User+.ID

6.5. Subscriptions

A Subscription is a set of saved search criteria used to search for public Events that have been approved for circulation which meet this criteria every time a User logs into the Calendar & Event Management Application. Certain Subscription queries are also run in a nightly batch job.

6.5.1. Properties

  • Subscription.ID

  • Subscription.Name*

  • Subscription.AutomaticApproval*

  • Subscription.TimePeriod*

  • Subscription.SearchCriteria*

  • Subscription.DateCreated*

  • Subscription.CalNetUIDCreated*

  • Subscription.DateLastUpdated*

  • Subscription.CalNetUIDLastUpdated*

6.5.2. Methods

All of the following methods assume that the User is logged in (so the User's Account ID and CalNetUID can be determined). All input is assumed to be a new value unless "(current value)" is specified. All functions may only performed from within the Calendar & Event Management Application unless otherwise specified.

6.5.2.1. CREATE_SUBSCRIPTION

Allows a User to create a Subscription for their Account. The search criteria may be entered directly onto the Subcription screen or the Search Campus Events screen when the User chooses to "Save Search as a Subscription."

Pre-Conditions:

  • User must have CreateSubscription Permission

Input:

  • User.Account.ID (current value)*

  • $TitleDescription

  • $[]Sponsor.ID (array)

  • $OtherSponsorName

  • $[]EventType.ID (array)

  • $OtherEventType

  • $[]Audience.ID (array)

  • $OtherAudience

  • $PerformerName

  • $[]Location.ID (array)

  • $OtherLocationName

  • $EventFromDate

  • $EventToDate

  • $[]Keyword.ID (array)

  • $OtherKeyword

  • $Approval

  • $TimePeriod

  • $ExpirationDate

  • $SubscriptionName

Post-Conditions:

  • All Subscription Data above has been saved into the Data column of the Subscriptions table with Account_ID = User.Account.ID.

6.5.2.2. EDIT_SUBSCRIPTION

Allows a User to edit a Subscription for their Account.

Pre-Conditions:

  • Subscription.ID must exist

  • User must have EditSubscription Permission

  • User.Account.ID = Subscription.Account_ID

Input:

  • User.Account.ID (current value)*

  • Subscription.ID (current value)*

  • $TitleDescription

  • $[]Sponsor.ID (array)

  • $OtherSponsorName

  • $[]EventType.ID (array)

  • $OtherEventType

  • $[]Audience.ID (array)

  • $OtherAudience

  • $PerformerName

  • $[]Location.ID (array)

  • $OtherLocationName

  • $EventFromDate

  • $EventToDate

  • $[]Keyword.ID (array)

  • $OtherKeyword

  • $Approval

  • $TimePeriod

  • $ExpirationDate

  • $SubscriptionName

Post-Conditions:

  • All Subscription Data above (except those marked "current value") has been saved into the Data column of the Subscriptions table for this Subscription.ID.

6.5.2.3. DELETE_SUBSCRIPTION

Allows a User to delete a Subscription or Subscriptions for their Account.

Pre-Conditions:

  • Subscription.ID(s) must exist

  • User must have DeleteSubscription Permission

  • User.Account.ID = Subscription.Account_ID

Input:

  • User.Account.ID (current value)*

  • Subscription.ID (current value)*

Post-Conditions:

  • The User will be shown a confirmation screen displaying Subscription.Name, Subscription.AutomaticApproval, Subscription.TimePeriod, and Subscription.ExpirationDate, and asked to confirm the Subscription(s) being removed before they are actually removed

  • The row for the Subscription.ID(s) is/are deleted from the Subscriptions table.

6.5.2.4. VIEW_SUBSCRIPTIONS

Returns information on current Subscriptions for the active Account to the Subscriptions screen.

Pre-Conditions:

  • User must have ViewSubscriptions Permission

Input:

  • User.Account.ID (current value)*

Post-Conditions:

  • Search results including Subscription.Name, Subscription.AutomaticApproval, Subscription.TimePeriod, and Subscription.ExpirationDate have been returned to the screen for all Subcriptions for the User.Account.ID

  • If there are no Subscriptions for this Account, a message stating "There are no subscriptions at this time" will be displayed to the User.

6.5.2.5. RUN_SUBSCRIPTION_QUERIES

Every time a User logs on to the Calendar & Event Management Application, all Events meeting the Subscription criteria for all Subscriptions for User.Account.ID are put into the Account's Pending queue.

Pre-Conditions:

  • At least 1 Account.Subscription.ID must exist

Input:

  • User.Account.ID (current value)*

Post-Conditions:

  • All Subscription queries have been run and Events meeting the Subscription criteria where Event.NetworkClassification = "public" and Event.ApprovedForCirculation="true" are returned.

  • A record has been added to the Account_has_Event table for each Event returned from the Subscription queries where Account_ID = (Account.Subscription.ID), Event_ID = (Event.ID returned from query), Status = "pending", and Source = "subscription", DateCreated = the current date & time, CalNetUIDCreated = "system", DateLastUpdated = Timestamp with current date & time, CalNetUIDLastUpdated = "system"

6.5.2.6. POST_SUBSCRIPTION_EVENTS

A job that runs nightly and posts all Events meeting the Subscription criteria for a particular Account if Subscription.AutomaticApproval = "true". This means these Events will be posted to the Account automatically, without review by any User.

Pre-Conditions:

  • At least 1 Account.Subscription with Subscription.AutomaticApproval = "true" must exist

Input:

  • All Account.IDs (current value)*

Post-Conditions:

  • All Subscription queries where Subscription.AutomaticApproval = "true" have been run. Only Events meeting the Subscription criteria where Event.NetworkClassification = "public" and Event.ApprovedForCirculation="true" are returned.

  • A record has been added to the Account_has_Event table for each Event returned from the Subscription queries where Account_ID = (Account.Subscription.ID), Event_ID = (Event.ID returned from query), Status = "posted", and Source = "subscription", DateCreated = the current date & time, CalNetUIDCreated = "system", DateLastUpdated = Timestamp with current date & time, CalNetUIDLastUpdated = "system"