Challenge Overview
1.0 - Challenge Overview
Welcome to the QIR .NET Web App - Codes, Regions, Logs and Root Cause Assembly challenge! In this challenge, you will need to build the backend services, stored procedures and part of the pages that the new QIR .NET App will use (based on the architecture design).
NOTE: This is part 2 of a series of assembly challenges for this project!
1.1 - Project Overview
The client for this project has an existing system called Quality Incident Reporting (QIR) application. This existing application was created using SharePoint and is used for creating and managing quality incident records. The goal for this project is to build a new Quality Incident Reporting application using .NET (based on the existing QIR application).
This assembly will provide the the backend services, stored procedures and part of the pages as detailed below for Codes, Regions, Logs and Root Cause.
1.2 - Competition Task Overview
A complete list of deliverables can be found in the TopCoder Assembly competition Tutorial at: http://apps.topcoder.com/wiki/display/tc/Assembly+Competition+Tutorials
Note: Extensive implementation notes are provided at method documentation on UML Class Diagrams. Please follow them for implementation.
Note: Please read the whole Application Design Specification first. All the details not mentioned in this specification are provided in that document.
1.2.1 Backend Services
This assembly is responsible for implementing the following services on class diagram "Backend Services Class Diagram":
1) CodeService
2) DepartmentRegionService
3) ApplicationLogService
4) EventLogService
5) RootCauseService
1.2.2 Stored Procedures
This assembly is responsible for implementing all stored procedures used by the above-mentioned services.
1.2.3 RootCause Page (rootCausesPage.aspx)
Code Behind: RootCausesPage
Wireframe: manage_root_causes
We will use TreeView class to render the root causes tree. We need to prepare id, name and parentId for the data provider.
The root cause nodes of the first level cannot be added or deleted.
Clicking on any node provides a menu of the following options:
- duplicate node (handled by the namesake method in the page code behind);
- duplicate branch (handled by the namesake method in the page code behind);
- add child – opens an “input box + submit” form to request a child name, when Submit button is clicked this event is handled by #AddChild method in the page code behind;
- add sibling – opens an “input box + submit” form to request a sibling name, when Submit button is clicked this event is handled by #AddSibling method in the page code behind;
- edit – opens an “input box + submit” form to request a new name, when Submit button is clicked this event is handled by #Edit method in the page code behind;
- delete (handled by the namesake method in the page code behind);
The menu can be closed with “x” at any moment.
Drag-n-dropping nodes or branches is implemented with jQuery.
When a node is dropped on another node the page calls the RootCauseService.DragAndDropOnNode method at the server side passing both dragged node id and id of node it is dropped on.
The tree view is then refreshed.
When a node is dropped between 2 other nodes the page calls the RootCauseService.DragAndDropBetweenNodes method at the server side passing both dragged node id and id of the lower node before which it is dropped (“beforeId”). The tree view is then refreshed.
1.2.4 Codes Page (codes.aspx)
Code Behind: CodesPage
Wireframe: manage_codes
When any code type is selected GetCodesByTypeRequestHandler AJAX request is made to get all codes by this type. The code type drop down list is populated with AJAX response. We will use GridView to render the table of these codes. We need to prepare Code data (as per the code entity) for the data provider.
When an update on the grid is made (Code added and edited) it is handled by #GridUpdate method in the page code behind.
The “Clear” button erases all values entered by user in a draft of new entity. No interaction with the server side takes place.
1.2.5 Dept Regions Page (deptRegionsPage.aspx)
Code Behind: DeptRegionsPage
Wireframe: manage_dept_regions
When any department is selected GetRegionByDeptRequestHandler AJAX request is made to get all regions by this department. The grid view is populated with AJAX response. We will use GridView to render the table of these regions. We need to prepare Region data (as per the region entity) for the data provider.
When an update on the grid is made (Region added and edited) it is handled by #GridUpdate method in the page code behind.
The “Clear” button erases all values entered by user in a draft of new entity. No interaction with the server side takes place.
1.2.6 Application Log Page
Code Behind: ApplicationLogPage
Wireframe: application_log
This page is rendered on page load. Then paging and sorting is possible. It is handled by Next_Click and Previous_Click methods at server side.
1.2.7 Request handlers
This assembly is responsible for implementing all HTTP Request handlers used by the above-mentioned pages.
1.3 - Technology Overview
- Windows Server 2008 R2
- MS SQL Server 2012
- IIS 7
- C# 4.0
- .NET Framework 4.0
- ASP.NET Web Form
- jQuery 1.11.1 http://jquery.com
Browser Requirements:
Your submission must works on browser in the list below:
- IE8+
- Safari latest version on Mac & Windows
- Firefox latest version on Mac & Windows
- Chrome latest version on Mac & Windows
1.4 - Documentation Provided
Documentation and Applications that will be provided to registered members:
Document Name | Document Description |
---|---|
Application Design Specification | Architecture documentation attached |
Class Diagrams | Architecture documentation attached |
Sequence Diagrams | Architecture documentation attached |
ERD | Architecture documentation attached |
UI Prototype | HTML / CSS / JS prototype attached |
Assembly 1: Model, Exception, Authorization, and Notification Assembly | Completed 1st assembly challenge in this series |
Quality Incident Report Enhancements - Dec 19 2014.xlsx | Excel file with latest requirements (form fields, access levels, classifications, root causes, etc) |
1.5 - Testing
Please include unit tests to verify your application successfully meets the requirements of the project. You should provide functional tests.
Final Submission Guidelines
- Completed code for the application (see architecture documentation and section 1.2 of this challenge spec above)
- A complete and detailed deployment documented explaining how to deploy the application including configuration information.
- Tests to verify your application successfully meets the requirements of the project.
A complete list of deliverables can be found in the TopCoder Assembly competition Tutorial at: http://apps.topcoder.com/wiki/display/tc/Assembly+Competition+Tutorials