Challenge Overview

The goal of this challenge is to make few updates to Job Scheduler functionality of the AERS Managed Risk application.

Challenge Requirements

When generating a report user can create a job scheduler to receive emails regularly with an updated report.

The Job Scheduling functionality is implemented, you can refer to “Deployment Guide - Custom Reporting Module Front End Assembly.doc” for how to test the functionality.

You will address the following in this challenge :

Frontend Update

In Job scheduling step (in report generation flow) make following fixes :

  1. Add new field for “Frequency” for how frequent the email should be sent  :

    1. Label : Frequency

    2. Values : dropdown list with options :

      1. Never

      2. 2 Times Per Day

      3. Every Day

      4. Every Week

      5. Every Month

  2. End date field should be disabled if frequency is “Never”

  3. Add group checkboxes buttons to specify the report type to receive (at least one checkbox must be checked), checkboxes are :

    1. PDF

    2. Excel

  4. Update the “Send Email To Other People” to show zero fields initially, when user click on “Add Other Email Address” it will add new input field. When adding new field there should be a button to delete it as well, right now we cannot delete the new email field after clicking “Add Other Email Address”

Backend Update

Update the backend to support the following :

  1. Update DDL to store the new fields we added to UI as mentioned above.

  2. Update the sending email logic to create pdf or excel or both file formats depends on the selection comes from frontend, also update

  3. Update the logic to create Quartz cron job for the created schedule

    1. Quartz jobs should be stored in database and associated with Reports

    2. For a given schedule there will be exactly one cron job, so when creating new schedule the logic should search existing Quartz jobs to see if there is already a cron job with similar schedule and associate report with it, otherwise, create new Quartz job.

    3. When changing a schedule of existing report, a new Quartz Job should be created and the old one should be deleted if no other reports are associated with it.

  4. Provide configurations for the send email to use Google SMTP and provide instructions how to configure it.

  5. Provide verification steps to test the job scheduler functionality.

Technology overview

- SQL Server 2012

- C#

- .NET Framework 4.5

- ASP.NET

- 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

- You can get access to the Gitlab repo group in this tool https://tc-ragnar.herokuapp.com/ragnar/groups/564783092789620e00fa75d1/290828  .  If you are having trouble with the auto registration tool, please ask in the forums.

- Once added to the team, fork the repository and work off this branch



Final Submission Guidelines

.

Submission

- Upload documentation for how to run and verify 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: 30051806