Challenge Overview

App environment:
- REST API application based on Java 8, Maven, and MS SQL.

Basic requirements for this challenge:
- Update existing REST API app to improve current endpoints and create some additional some endpoints explained more details below
- Add more initial data for the new additions
- Improve the integration testing for the new additions

Project Background
The goal of this project is to create a web based tool for operators to share frac schedules and locations with other operators. Currently we have a consortium of 15 operators that share their schedules via email roughly once a week to monthly. The email list changes monthly with people being added or taken off, which makes it tough to manage if you are getting all the schedules you need. Not only does the email list change, but so does each individual company’s frac schedule. With so many moving parts, manually sharing emails and aggregating schedules is unsustainable. These emails contain API # (unique public well identifier), well name, Frac start, Frac end, Bottom Hole Lat/Long, Surf Hole Lat/Long, and sometimes the underground formation name.  

In the current state, we go into our internal mapping tool or the State website and manually measure out the distances between our well locations and the offset operators locations to see if we need to prepare our wells.  From this frac schedule, it us up to the individual companies to check in to see if offset fracs are on time or delayed and if the operator will impact any of their assets. This methodology is cumbersome and time consuming. A tool should be easily accessible, be able to quickly upload operator information and provide a visual and user adjustable display of areas and times where frac operations may cause operational hazards due to “frac hits” http://www.eagleford.training/2015/08/what-are-frac-hits/

For this challenge, we need improve existing REST API to capture client requirements below

Technology Stack
Programming language(s) to be used:
- Java 8
- Maven

Deployment environment requirements
- localhost
- AWS

Database
- MS SQL Server

Code access
Java REST API Source Code
https://gitlab.com/quartz-energy/ops-frac-schedule/java-services (dev)

Postman Collection for API endpoints Testing
https://gitlab.com/quartz-energy/ops-frac-schedule/java-services/tree/dev/docs (dev)

App Demo on Development
http://ec2-18-207-109-34.compute-1.amazonaws.com
Application support 3 roles:
systemadmin/password
operatoradmin/password
operator/password

Submission Requirements

1). Schedule Data displayed max 3 months from today
- All schedule data only need displayed max 3 months from current date only.
- Need affect data on these pages:
-- Dashboard (Map, List and Chart view)
-- Upcoming Schedule
- Double check all those pages response

2). Submit Data Page
Manual Update

- Remove the Bottomhole Lat, Long fields
- Add "API Number" to Single Well Upload form.
- Need use auto-load for API Number after select the Well name
- Split TVD and Target Formation Fields to different fields on Single Well Upload form.
- Make sure that API Number field is enforces as a unique index in the database.
- Our manual update will need to perform an insert/update operation rather than a simple insert.  
- If a API Number already exists in the system we'll need to update data in the system based on the latest info provided.
- We should keep existing comments and risk assessment data.  

Batch Upload
- Make sure that API Number field is enforces as a unique index in the database.
- Our batch upload will need to perform an insert/update operation rather than a simple insert.  
- If a API Number already exists in the system we'll need to update data in the system based on the latest info provided.  
- We should keep existing comments and risk assessment data.
- Important: when upload the xlsx, If operator column value is different than current user logged in company value, need cancel the upload and displayed error message "You only able to upload data for your own company schedule".
- Add TVD and Target Formation fields to XLS upload column detection. We will add new columns in the future. Make sure your updates able to proceed if columns not exists on the xlsx file.
- Check batch upload sample data from here: https://drive.google.com/open?id=17O9mOUjYw1ZiMVrRgvddJ3d-Eb51_Wyj

3) Upcoming Schedule
- Need able to export of upcoming schedule as xlsx file

4). Dashboard List View and Chart View
- Right now they support to download csv
- List view and chart view need able to download as xlsx

5). Contacts and User Table
- Right now contact and user table are separated, need combine both data as single table
- Fields need captured:

Table contact
id
contactType
fullName
jobTitle
email
phone
city
companyId
stateId

Table User
id
username
passwordHash
fullName
email
role
companyName
companyId
secretQuestionId
secretQuestionAnswerHash
status
lockedUntil
loginFailedAttemptCount

Merged Table
Id
contactType
username
passwordHash
fullName
phone
Email
role
companyName
companyId
city
stateId
secretQuestionId
secretQuestionAnswerHash
status
lockedUntil
loginFailedAttemptCount

Important!
- Data structure for to access Contacts need remain the same like previous one.
- Update these endpoints to load correct data: “contact api” endpoints
- Get Contacts need sort from Primary, Secondary contact and then normal users
- Add new configuration field for Welcome Tours configuration from database.
- Create new endpoints to toggle the values: true or false

6). Update data init scripts
- For all the fixes above, you need update the data init scripts on related sql files

7). Postman collection check
- After all the updates above make sure postman running okay.

8). Unit Testing Fixes
- Make sure Backend unit testing pass
- We made some edits on previous challenge. As part of this challenge task, we need your help to fix any error/missing the unit testing

9). Java Services
- We need make the Java services support HTTPS, not just HTTP
- Create documentation how to use HTTPS with the frontend part.

Final Submission Guidelines

What To Submit?
- Submit git patch based current repo on dev branch: https://gitlab.com/quartz-energy/ops-frac-schedule/java-services  
- README in markup language
- Updated insert data scripts
- Updated Postman collections to match with new additions
- Challenge winner need send Merge Request to our repo

 

ELIGIBLE EVENTS:

Topcoder Open 2019

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30067596