Key Information

Register
Submit
The challenge is finished.

Challenge Overview

Appirio has a client which would like to create a team calendar interface.  This calendar will track customer-related meetings but also assist managers/sales operations staff to schedule meetings when key team members will be available.  In addition to tracking the customer meetings, Salesforce users will load non-account related entries into the calendar when they will be unavailable.  Our client also has several teams.  Each team should only see the calendar events related to their users.  Team membership is tracked on the user record in the "Organization__c" field.  Currently the teams/organizations are Sales, Marketing, Legal, and Executive.

Appirio has an existing JQuery-based Calendar widget which we would like to enhance usage with this challenge.  The current calendar is functional but requirements outlined above and the legacy implementation in the current clients tenant mean that we'll need to make significant adjustments in the current functionality to handle the new requirements.

1.  We should create a new tab call Team Schedule.  Typical users of the system should only see the events related to their team.   There is some latitude here in how the segmentation of events by team is implemented.   We can either create a complete calendar for each team and then provide a mechanism to change between calendars (for system admins) or the system can dynamically display the calendar events based on the team assignments of the user.

2.  The Team Schedule tab should contain the ability to filter events by both account/customer and user.

3. Our client has multiple custom event-based objects which we'll need to render in the calendar interface.  Right now the Calendar interface uses the "Event__c" custom object to render it's interface.  However, we need to be able to save and display both Event__c custom objects and Event2__c custom objects on the calendar.  Normally, we would simply "type" (using a picklist or something like that) the event data in the calendars and use one object type for all the events but that isn't going to be an option in this case because of way the Customer Events are implemented in the current system.

4.  This calendar is going to be displayed on the account interface and will show all the meetings associated with a particular account.

5.  There are going to be two basic types of events.  One type - Event__c is going to track customer/business related activity.  The second type Event2__c is going to track non-customer-related events like employee vacations or scheduling conflicts like conferences, etc.  Sales management doesn't want to schedule meetings when key people will be unavailable.

6.  There are multiple organizations which interact with each account.  However, each organization only need visiblity to it's own meetings. There is a custom picklist field on the user - Organization__c which is used to drive this segmentation/visibility.  A user that is a part of the Sales organization shouldn't see meetings for the Marketing organization.

7.  When a user clicks the calendar interface to create a new event user will need to choose whether the event is a customer or non-customer Event object/type they will be creating -- along with the other more typical Event characteristics.



Final Submission Guidelines

1. You should use the existing code and controllers as a starting point.

2.  You should implement the calendar on the account detail page.

3.  The component uses JQuery extensively. 

4.  Provide a video of your submission in action.  If english isn't your first language please feel free to annotate with text comments.

5.  Provide detailed documentation of your solution.

6.  Please provide your submission as an Ant package for evaluation.

7.  The code will be provided as a zip file but is also available in the following developer org:

username: calendar_proto@topcoder.com
password: @ppirio123
token:  091g6s6J9BZXdijZm4uxNAEd2
 

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30042047