Challenge Overview

App environment:
- ASP.Net MVC Core

Basic requirements for this challenge:
- Integration of ASP.Net MVC Core Web API and frontend
- Focus on Scheduler page
- Important: We running parallel challenge on our backend and frontend, as possible create separated files/code from this challenge submission. We need quickly merge later with less effort.
- Challenge winner will be responsible to fix any merge conflicts for current dev.

Challenge Overview
Hoherberg Ski School is very excited to see how the application look on real life based on previous winning storyboard. This web application need build using ASP.Net MVC Core with focus on desktop resolution only.

This is the 2nd of a Integration Code Challenge Series to wrap up the Hoherberg Ski School web application. For this challenge we need you linked Web API and the frontend, you need focus specifically on the Scheduler section and and code must be easy to upgrade by future developers for the next Hoherberg Ski School Integration Code Challenge.

Good luck and let's discuss any questions you have. See you in the challenge forum!

Technology Stack
- ASP.Net MVC Core
- HTML5
- CSS3
- Javascript
- Jquery
- Do not use Bootstrap!

Deployment environment requirements
- localhost
- live site

Challenge Assets:
Ragnar: Check challenge forum to see the url.

General Requirements:
- Use frontend repo > dev branch as base updates
- Use backend repo > dev branch as rest api source

- Use frontend repo > frontend-fixes branch for prototype reference
- You can use ‘dotnet run’ from command prompt to running both backend and frontend
- Let us know if you face issues when set up the app.

Login Credentials
Admin/adminPass
Supervisor/supervisorPass
Reservationist/reservationistPass

IMPORTANT
- Pay attention on some required improvements below. We need fix some things based on client feedback. You must capture the list on your submission

Individual Requirements
1). Scheduler

- Need able to pull Scheduler data based on Weekly and Daily view. You can use this endpoint: GET {{url}}/scheduler/records
- Render cell based on instructor reservations info. Pull the related product color. You also need display the pCode
- For weekly need restrict result to minimum 7 days
- For daily start and end date should be the detect current day
- Need able to filter based on Instructor name, pods, adult and child skill level.
- Need able to return data based on typed instructor name
- Create how not found or empty data look on table.
- Need able to move back  per 1 day and 7 days based on selected day range. This is when user click the button arrow on the top right side
- User can do Ctrl + Click on table for multi-selection to do Multi Assign Instructors to product. Endpoint: POST {{url}}/scheduler/assign
- If conflicts happens, need display the conflicted list. See postman for Assign (Conflict) example.
- Instructor row need clickable and need able to select the instructor
- On every cell need display different flyout content. Refer to existing frontend implementation

Green colored cell
- Need able to quickly assign the instructor to product capture the cell date time. Use POST {{url}}/scheduler/assign
- Need able to set off at selected date time. Endpoint: PUT {{url}}/instructors/{id}/schedule/on?date=2018-10-16&startTime=14:15&endTime=15:15

Red colored cell
- Need able to set on at selected date time. Endpoint: PUT {{url}}/instructors/{id}/schedule/off?date=2018-10-16&startTime=14:15&endTime=15:15

Grey colored cell
- This tentative cell need should still show PVT lesson details (not the smaller modal window)

Other colored cell based on product
- Display the details of Lesson. You can use this endpoint: GET {{url}}/reservations/{id}

Seasonal Program
- Just need display the title. You can use this endpoint: GET {{url}}/reservations/{id}
- Display Unassign and Swap link. Update Swap to Reassign text
- Unassign endpoint: POST {{url}}/scheduler/unassign
- Swap endpoint: POST {{url}}/scheduler/reassign

- Click Instructor name need load the additional flyout related to Instructor
- On top need able to Check in/Check out Instructor. Use this endpoint: POST {{url}}/instructors/{id}/checkIn & POST {{url}}/instructors/{id}/checkOut
- Need able to pull Private Lesson instructor Details slip:
- Click email current date schedule, need send email to user instructor. Use this endpoint: {{url}}/scheduler/email?instructorId=4&date=2018-10-18
- Need able to print current date schedule. Make sure the printing remain works with dynamic data
- Can we skip the print preview on the print buttons and have it go right to the printer or printer menu?
- Need able to pull data for current date white slips. Make sure the data load remain works with dynamic data
- Need show instructor details, Use this GET: {{url}}/instructors/{id}

Improvements:
- Daily view, need use line separator like on every cells we did on Weekly view
- Remove Adult and Child skills dropdown
- Private Lesson Instructor Detail Slips, checked on/off top checkbox need able to toggle all checkboxes
- When Print this White slips, make sure the area of overlapping of text in the reservation print preview
- Can we skip the print preview on the print buttons and have it go right to the printer or printer menu?
- Switch checkboxes POD and F/P - order should be the same as the grid > POD, F/P, Skills, Tele.

2). Daily Assignment
- Use this endpoint: GET {{url}}/scheduler/dailyAssignments?date=2018-10-18
- This page is need added to main navigation menu. Add new Daily Assignment menu on header bar
- Remove the Daily Assignment Report button from Scheduler page
- Update breadcrumb to just show the Daily Assignment title
- This will display current day instructor assignment, grouped by the product type
- Click the full size button need load all boxes in modal window.
- Need remain able to print this page
- Can we skip the print preview on the print buttons and have it go right to the printer or printer menu?

3). Unassigned View
- This will pull list for unassigned lessons
- Display additional skier list
- Need support single and multi day
- There will endpoints to pull the suggested instructors with parameters: show all, tentative and option to email details to instructor. Endpoint: {{url}}/scheduler/suggestedInstructors?reservationItemId=76&showAllAvailable=true&includeTentative=false
- Need able to assign the selected date.
- Email details to instructor need able to send email to Instructor: POST {{url}}/scheduler/email?instructorId=4&date=2018-10-18

Improvements:
- Click the full size button need load table in modal window
- Multi day private lessons > missing the control +click to get individual days within a single lesson row
- Make sure when click each Skiers # need expand the additional skiers
- Full row select on single day doesn’t work.
- Full row select on multi day doesn’t work (should be able to select all days by clicking name cell or individual days within the individual days)
- Print need remain works when pull dynamic data.
- Can we skip the print preview on the print buttons and have it go right to the printer or printer menu?

Web Browsers Requirements
Your submission must look and work consistently across these following browsers on the latest versions:  
- IE11
- Chrome,
- Edge,
- Safari,
- Firefox

Final Submission Guidelines

What To Submit?
- Patch file of updated submissions
- Updated README.md (if Any)

ELIGIBLE EVENTS:

Topcoder Open 2019

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30073056