Challenge Overview

1.0 - Challenge Overview

Welcome to the QIR .NET Web App - Model, Exception, Authorization, and Notification Assembly challenge! In this challenge, you will need to build the data models and tables, exceptions and a part of backend services and stored procedures that the new QIR .NET App will use (based on the architecture design).

NOTE: This is part 1 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 data models, exceptions, authorization, email notifications services and pages, relevant stored procedures these services use and relevant request handlers these pages use.

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    Model Classes
This assembly is responsible for implementing all model classes on class diagram "Model Class Diagram". 

1.2.2    Database Tables
This assembly is also responsible for creating/updating tables in the database as per provided ERD.

1.2.3    Exceptions
This assembly is responsible for implementing all exceptions on class diagram "Exceptions Class Diagram".

1.2.4    Backend Services
This assembly is responsible for implementing the following services on class diagram "Backend Services Class Diagram":
    1) BaseService
    2) RoleService
    3) PersonService
    4) EmailTemplateService
    5) DepartmentNotificationListService
    6) NotificationPersonService
    7) EmailService

1.2.5    Stored Procedures
This assembly is responsible for implementing all stored procedures used by the above-mentioned services.

1.2.6    Dept Notification Lists Page (deptNofiticationListsPage.aspx)

Code Behind: ViewScheduleOption2Page
Wireframe: manage_dept_notification_lists

- When any department is selected GetRegionByDeptRequestHandler AJAX request is made to get all regions by this department. These regions from AJAX response are populated into “Select Region” drop down list.
- When any region is selected GetDeptNotificationListsByDeptRegionRequestHandler AJAX request is made to get all dept notification lists by this department and region (both parameters are passed). 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 code entity) for the data provider.
- Roles values are retrieved on page load (see #PageLoad impl notes).
- When “…” button is clicked a modal popup appears for user selection. It will make SearchPersonsRequestHandler AJAX request to get user by keyword asynchronously.
- When an update on the grid is made (Dept Notification list item is 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.7    Email Templates Page (emailTemplatesPage.aspx)

Code Behind: EmailTemplatesPage
Wireframe: manage_email_templates

- This page is rendered on page load. Clicking “Delete” link button against the template delete it (handled by #Delete method of the page).
- By clicking “Add new template” a modal popup appears with the form for the template.
- By clicking “Edit” link button a modal popup appears populated with the draft of the template (handled by #Edit method).
- Subject or body variables come from EmailTemplate.SubjectVars and EmailTemplate.BodyVars.
- If “Cancel” button is clicked the popup closes, nothing is saved (for both creating and editing mode).
- Saving a template is handled by #Save_Click method.

1.2.8    Manage Roles Page (manageRolesPage.aspx)

Code Behind: ManageRolesPage
Wireframe: none

- Roles values are retrieved on page load (see #PageLoad impl notes).
- When any role is selected GetUsersByRoleRequestHandler AJAX request is made to get all users by this role.  The grid view is populated with AJAX response. We will use GridView to render the table of these users (name, lanID and roles). We need to prepare User data (name, lanID and roles) for the data provider.
- When any role is clicked GetRoleOfUserRequestHandler AJAX request is made to get all roles by this person. Then a small popup against the user appears populated with roles from AJAX response. There is a checkbox against each role, if user has the role the checkbox is TRUE. Admin manipulates these checkboxes and clicks “Save user roles” button which is handled with the namesake method of the page. It accepts person’s ID and their set of roles.
- If “Cancel” button is clicked the popup closes, nothing is saved.

1.2.9    Request Handlers
This assembly is responsible for implementing all HTTP Request handlers used by the above-mentioned pages.

1.2.10    Scheduled Jobs for Email Notification
The scheduled jobs for sending email notifications must be implemented within this assembly (see ADS 1.3.19 for details).

 

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
- Infragistics Ultimate 2014 Vol. 1 - http://www.infragistics.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
qualityincidents_scripts_20141112.sql.txt    Script to create the existing database with stored procs
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

ELIGIBLE EVENTS:

2015 topcoder Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30046858