Challenge Overview
Project Overview
The Customer Access System (CAS) is an external facing web site (ASP.NET) that interfaces with some portions of Helium Operation’s Volume Tracking System (VTS) and Container Tracking System (CTS). The system was initially designed to allow liquid helium customers to view container movement to or from their facility and monitor any readings that may have been placed in the system by container mounted remote telemetry units (RTUs). In addition to showing logistical information by customer, the customers are also privy to GIS location data.
The CAS has a “check in” system which allows customers to key in certain pieces of upon container arrival; this in turn allows Helium logistics to easily gather key information about the containers. The customer can also choose to set up alarms in the CAS in order to receive email notification should certain conditions warrant one.
The last piece of the outward facing system is for booking agents. A booking agent receives notification of overseas shipments and arranges for passage on a container ship in order to meet the delivery dates. Once booked on the vessel, the agents log into the CAS and complete the booking in order to inform logistics of the details.
Competition Task Overview
The purpose of this contest is to implement the basic UI and admin console. Please refer to the provided documents in the forum as well as the sections below to get a better idea.
NOTE: we don't have architecture for this contest, so asking questions early in the forum would be helpful! And as the developer, you'll be responsible of designing the database to store the users / roles data.
UI Protoype
Not all pages in the prototype are in scope, see mappings from the slides in the PowerPoint document to the prorotype pages below:
- slide 2 -> master-page.html
- slide 3 -> login.html
- slide 4 -> register.html
- slide 5 -> all prototype pages that use grid
- slide 6 -> admin.html
- slide 7 -> admin-users.html
- slide 8 -> admin-roles.html
Please note that pages not listed above but can be reached via these pages are also in scope.
Base Project
Please use the base project in forum as start (HCAS.zip), you must also use sitemap as the base project currently does.
Make sure this is a website project in Visual Studio, NOT a web application.
Database Tables
You must define/design the tables used to store the users / roles data. We'll at least need to create 3 tables and add the fields we need to them. The tables would be 'Users','Roles', and 'UsersInRoles'. Users and Roles would be the main data tables while, UsersInRoles would be a linking table. No need to complicate the tables, just cover whatever is available in the prototype so we have a simpler starting point.
We'll need CRUD operations for the Users and Roles tables as well as a way to assign/unassign roles to/from the users.
By default we should have 8 roles: 1 role for each module listed in the overview document and 1 admin role.
Securiy
Security is very important for this project, we must make sure no customer can see any other customer's data.
Slide 3
Login should be straightforward, just validate against the Users table. After the user logs in, she/he should see menus based on the roles she/he has (each role corresponds to a menu, see the base project) except for admin role (admin role should see no menus, just like the prototype shows, more details below). For example: a user with roles Gas, Liquid and MRI will see 3 menus at the top: Gas, Liquid and MRI. The homepage doesn't need to have any contents. We just want to demonstrate dynamic menus based on roles.
For "Forgot my password", just ask the user to enter username and if the name is valid, randomally generate a complex enough password and send that to the user's email address.
For "Register", just save the data from the form into database and mark the user as pending / inactive, when admin logs in she/he will need to approve the user befor the user can log in.
Slide 4
Just follow the prototype, should be straightforward.
Slide 5
Just follow the prototype.
Slide 6
Follow the prototype and make sure all functions work properly with the database backend. Note we can approve users on this page, and navigate to other pages like users / roles / edit user info / etc.
Slide 7
Follow the prototype and make sure all functions work properly with the database backend.
Slide 8
Follow the prototype and make sure all functions work properly with the database backend.
NOTE: it should not be able to delete or deactive an admin role. An admin should not be able to remove itself from the admin role either.
VM
The winner maybe asked to deploy this on a VM, and switch to Azure DB instead of local DB during final fixes (usuage is the same though so should be trivial).
Testing
This contest only requires manual testing.
Technology Overview
The working environment requirement details for this application are outlined in the Application Requirements Specification. An overview of the environment requirements are listed below:
- .NET 4.5
- ASP.NET 4.5 WebSite Project (NO MVC)
- C#
- Visual Studio 2012
- SQL Server 2012
Documentation Provided
Register to see documents in the forum.
Final Submission Guidelines
Submission Deliverables
A complete list of deliverables can be viewed in the TopCoder Assembly competition Tutorial at: http://apps.topcoder.com/wiki/display/tc/Assembly+Competition+Tutorial
Below is an overview of the deliverables:
- Fully Implemented WebSite that meets the listed requirements.
- A complete and detailed deployment documented explaining how to deploy the application including configuration information.
- Test data to demonstrate how the site works.
Final Submission
For each member, the final submission should be uploaded to the Online Review Tool.