Challenge Overview
Challenge Overview
Welcome to the Managed Risk - Custom Reporting Module Backend Assembly! The client for this project is looking to build dynamic reports out of database tables of data. Their current tool allows these reports to be built by a developer, but this requires a normal development cycle to build, test, and release these reports. They would like to have a system in place that allows them to build these custom reports, joining multiple database objects (tables, views, stored procedures) if necessary, into dynamic data to populate different visualizations.
The closest system to equate it to would be Salesforce Reporting. In there, you can wire up multiple related objects into a grouped, filtered, and sorted data source. In this assembly challenge, we need a recommendation, given the environment, as to how we can accomplish this level of configurability and surface it in a way that the end-user can build meaningful reports.
This assembly will provide the data models, exceptions, backend services and scheduler job.
Competition Task Overview
The specific tasks for this backend assembly challenge are detailed below. 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.
Model Classes
This assembly is responsible for implementing all model classes on class diagram "Model Class Diagram".
Exceptions
This assembly is responsible for implementing all exceptions on class diagram "Exceptions Class Diagram".
Backend Services and Job
This assembly is responsible for implementing all services and job on class diagram "Backend Services Class Diagram".
Unit Tests
Assemblers are required to write unit tests using MS Unit Testing Framework, please do NOT use NUnit
Technology Overview
- Windows Server
- SQL Server 2012
- Visual Studio 2012
- IIS 7
- C#
- .NET Framework 4.5
- ASP.NET
- Unity 3.5: http://unity.codeplex.com/
- Enterprise Library 6: Logging https://msdn.microsoft.com/en-us/library/ff648951.aspx
- Quartz.NET 2.3.3: http://quartznet.sourceforge.net/
- jQuery 1.11.3: http://jquery.com
- Microsoft OpenXML SDK 2.5: https://msdn.microsoft.com/en-us/library/office/bb448854.aspx
- DevExpress ASP.NET Chart Control: http://demos.devexpress.com/XtraChartsDemos/Default.aspx
Existing Documents
- Class Diagrams
- Sequence Diagrams
- Assembly Diagram
- Application Design Specification
- ERD
- Assembly Specifications
Testing
- Unit tests are required for this challenge (see "Unit Test" section above).
Project Setup
- Request access to the Gitlab repo group here http://tc-gitlab-ragnar.herokuapp.com/#!/ragnar/joinGroup/55cc117fba02d50f0080b5e2/290828, by posting on the forums, or emailing the copilot.
- Once added to the team, fork the repository and work off https://gitlab.com/aers-managed-risk/backend/tree/feature/30050551-backend-assembly
- Note: This is the first challenge of this set, so this repo is empty. Forking the repo will make submitting a request easier later.
Final Submission Guidelines
A complete list of deliverables can be viewed in the TopCoder Assembly competition Tutorial at: http://apps.topcoder.com/wiki/display/tc/Assembly+Competition+Tutorials
Below is an overview of the deliverables:
- Code that covers all requirements
- A complete and detailed deployment document explaining how to deploy the application including configuration information.
Submission
- Upload documentation for how to run your submission (via OR as normal)
- Upload all your source code as a zip (via OR as normal)
- Add jcori as a member of your forked repository
- Winner will be required to submit a merge request on gitlab against the branch specified