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