Challenge Overview

The client 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.  

The goal of this challenge is to implement “View Reports” page and integrate it with backend, and implement the missing pieces to make that page functional

Challenge Requirements

Pages in Scope

You will implement “View Report” page and all backend/frontend that support the functionality of this page.

Architecture

You are provided with an architecture documents, it in extensive implementation notes are provided at method documentation on UML Class Diagrams. Please follow them for implementing the required controllers if the controller is not already implemented from past challenges.

Please read the whole Application Design Specification first. All the details not mentioned in this specification are provided in that document.

Please note there may be some changes needed to backend in order to support the frontend features, these are in scope of this challenge as well.

Authentication

Authentication and authorization are out of scope for this project, the backend should expect network ID to be passed to the backend.

So in this challenge you need to enable windows authentication in IIS, and use that information to authorize the user.

Front End Classes

This challenge is responsible for implementing all classes on class diagram "Front End Class Diagram" that will be needed to implement the frontend pages in scope of this challenge.

The REST API endpoints of the handlers are configured via web.config like below:

<httpHandlers>

 <add verb="supported http verbs" path="path" type="namespace.classname, assemblyname" />

<httpHandlers>

The path is up to assemblers, it may be like <base-url>/<handler-name>.

View Reports page

  • - It is view-reports.html in the UI prototype.

  • - Accessed by clicking on “View Reports” menu tab.

  • - It calls the SearchReportsHandler to search reports.

  • - User can search reports by name.

  • - Clicking “New Report” will take user to “Generate Report Page”

  • - Pagination and Sorting must be implemented in server side.

  • - Clicking a report forwards user to the Custom Report Detail page.

  • - The edit icon forwards user to the Generate Report page with report data populated to be edited.

  • - The copy icon forwards user to the Generate Custom Reports page, with the selected report populated into the page. The copy is not done in server side yet, only after user modifies and saves the copied report, a new copied report will be created.

  • - It calls DeleteReportHandler to delete selected report.

  • - The "share report" will trigger ShareReportHandler.

  • - For report export, it calls ExportReportHandler to do so. We will support both pdf export and excel export.

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

- Application Design Specification

- ERD

- Source Code that you will use as basis for your work.

GitLab Access



Final Submission Guidelines

Submission

  • - Upload documentation for how to run your submission

  • - Upload all your solution as git patch files.

  • - Add elkhawajah as a member of your forked repository

  • - Winner will be required to submit a merge request on gitlab against the branch specified.

ELIGIBLE EVENTS:

2016 TopCoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30051802