Barton Admin Tool Device Tagging System & C# DALC Code Challenge

Key Information

Register
Submit
The challenge is finished.

Challenge Overview

Welcome to Barton Admin Tool Device Tagging System & C# DALC Code Challenge

We are pleased with the outcome of previous challenge in this series Barton Admin Tool Operations and Roles Code Challenge that set the stage for the Angular / Polymer framework hosted on Heroku.

Now we are on step to enhance existing web application by these 2 following tasks:
1). Update existing Device collection on MongoDB and Front End behaviour, also
2). Create C# Data Access Layer Component (DALC) for Devices CRUD Operations.

Read more details about the challenge requirements as explained below.

General Requirements:
- Pull the full stack source for the app and install it locally or on Heroku.
- This is our latest Barton Admin Tool application, deployed on heroku: https://insidegatewayadmintool.herokuapp.com/ (Login info: admin@test.com / abc123)
- Challenge winner need responsible to do the Pull Request for this winning submission.

Submissions Requirements:

1) Update Device Collection


Problem Background
In the MongoDB, there is a collection called Devices. It stores a list of device tree (usually 1 to 3 levels deep) structures. Each device tree structure is implemented following the materialized path pattern. See:  https://docs.mongodb.com/manual/tutorial/model-tree-structures-with-materialized-paths/. For example, there are two trees stored in the MongoDB Devices collection: Device1 and Device2. Each tree has a few child devices. Child devices hace path that indicated its parent Here the documents examples:
{
"_id": "66dfadde-700b-4e84-8389-e7fe2b9af507",
"path": "/66dfadde-700b-4e84-8389-e7fe2b9af507",
"name": "Device1"
}
{
"_id": "2f1c2f28-3ed5-424e-bd30-0bba6965e03a",
"path": "/66dfadde-700b-4e84-8389-e7fe2b9af507/2f1c2f28-3ed5-424e-bd30-0bba6965e03a",
"name": "Device1.1"
}
{
"_id": "f1fb820b-20e1-47e3-9bf8-bb9090c5be28",
"path": "/66dfadde-700b-4e84-8389-e7fe2b9af507/f1fb820b-20e1-47e3-9bf8-bb9090c5be28",
"name": "Device1.2"
}
{
"_id": "1aaa0983-7391-48a1-bb66-e8d4bcece913",
"path": "/1aaa0983-7391-48a1-bb66-e8d4bcece913",
"name": "Device2"
}

Update Device Collection Task Requirements
- We want to build a Tagging system using MongoDB, so that we can group and select devices in a flexible way.
- Design the MongoDB schema to support the tagging system.
- Keep existing Device collection structure on MongoDB, you just need insert field to support the tagging
- Integrate with the existing Devices documents.
- A use case would be to group devices in buildings, floors, etc. For example, the Device1 is assigned tags “floor1” and “north”, the Device2 is assigned tags “floor2” and “north”, etc.
- Then we can query all devices with north tag, or with floor1 and/or north tags, etc.



- This is the updated Device page
- On the top left, add search button that will swap the top area to search field. Read details on next screenshot below
- On the content area, add new field for Tag
- User can add/remove one or more tags to a device or a list of devices.
- You can use this Paper Chip component: https://www.webcomponents.org/element/fabbricadigitale/paper-chip
- Use autocomplete when add new tag, after select the option need display the selected tag
- All tag need able to remove by click the x button on the right side of tag
- Need confirmation before remove the tag
- Use same field when user add new Device, but Tag field must empty at first load



- After user click Search button on the left side bar of Device page we need able to search Devices by tag
- Use autocomplete to search the Device tag from all Site
- Need able to remove the selected
- Display search result of tag on the left side list after tag selected
- Keep existing indentation of the Device list
- Click X button need take use back to previous top area content

2) C# Data Access Layer Component (DALC) for Devices CRUD Operations
- For this task, you need write the C# Data Access Layer Component (DALC) with the basic CRUD operations on the device Tag system.
- C# can be independent other than existing NodeJS backend
- The query should support the basic And/Or, also wildcard/regular expression style queries.
- Develop the C# DALC with the clean public interfaces, so that this C# library can be used by other applications that client hosted on Azure Cloud Service written on C#
- Your C# Data Access Layer need testing and working with the MongoDB database
- Create clear documentation how to testing Device CRUD Operations of the C# DALC layer
- See this url reference to create simple DALC layer with MongoDB: http://rundevrun.blogspot.co.id/2014/10/c-simple-dal-layer-with-mongodb.html

Final Submission Guidelines

Submission Guidelines
- Please submit a single zip file which includes the .git directory intact. You should create a new branch with the name of your tc handle.
- Deploy your solution on Heroku so we can see it in action and include the link to your submission.
- Create clear documentation how to testing Device CRUD Operations of the C# DALC layer
- Provide documentation, (usage and deployment guide if ) for your solution in the main readme.md under a new section name Devices and/or edit the main readme to make it current.

ELIGIBLE EVENTS:

2018 Topcoder(R) Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30059186