Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

.

NET Code Test (2 days)


- Source codes should be sent via github
- After you finish, submit your code and Github link here:
https://forms.gle/SEdTF3wfqpAYbDj26

What We Are Looking For


In your work, what we want to see is your ability to:
1. Understand the requirements
2. Plan before coding (shown in Entity Relationship Diagram, and State Machine Diagram)
3. Write clean code, which includes:
a. Separation of concerns
b. Clear and concise code
c. Naming conventions
d. Comments in the code

Work to submit
After you finish, submit your public Github link here: https://forms.gle/SEdTF3wfqpAYbDj26

Your public Github link should contain your code. Your code must contains migration and seed
data.

Also, in the Github link, it should contain a README which contain:


1. Instruction on how to run your code
2. Entity Relationship Diagram (e.g.
https://www.smartdraw.com/entity-relationship-diagram/)
3. State machine diagram, to define the various actions to change an entity and the side
effects of the changes (e.g.
https://www.visual-paradigm.com/guide/uml-unified-modeling-language/about-state-diagr
ams/)
4. Public link for Postman collection and environments for the API calls

Please double check your link before submitting to the Google Forms.
Requirements
● Framework & Architectures
○ Using the latest .NET Core and C#
○ MySQL
○ RESTful APIs
● Use JWT Token for API authentication. The token validity = 24 hours.
● For CMS, you can use anything you are comfortable with. For example:
○ React. Use React Admin if you can (https://marmelab.com/react-admin/).
Because you can scaffold CRUD on top of your Restful API very fast.
○ ASP.NET
○ Razor

Question

Car Workshop System

The Client is an owner of car workshops. This is how his traditional business is like:

Usually, a car owner will come to the workshop with his car. Then, the workshop will diagnose
the car and suggest the services that a car owner should take, for example:
1. Change tyres
2. Fix dents
3. Change battery
4. Etc.

After the car owner agrees to the proposal, the car owner will leave the car in the workshop for a
few days while the workshop is fixing the car. The workshop will assign a few mechanics to fulfill
the jobs. Each mechanic will perform a service. When all services are done, the workshop will
call the car owner to collect the car.

When the car owner arrives, he will inspect the jobs. If he is not satisfied with the job, the
workshop needs to note the complaint and perform one or more services to address the
dissatisfaction. Again, mechanics will be assigned to perform the services.
When the car owner is satisfied with the job, he will take back the car and the workshop will
send an invoice to the car owner.

Please create a system for the workshop to automate the process above, with the following
additional requirements.

Create a RESTful API server that captures the business logic above.
1. Design the entity relationship diagram and state machine diagram.
2. For notification to the car owner and mechanics, send via SMTP email. You can use
Mailtrap for SMTP Provider
3. Write unit tests to test the logic

Create a CMS that consumes the RESTful API. With the following additional requirements:
1. Main Menu
a. Master Data
i. Car Owners
1. Name
2. Email
3. Password
ii. Mechanics
1. Name
2. Email
3. Password
iii. Services. A CRUD which allows admin to enter the services that the
workshop provides (i.e. change tyre).
1. Name
2. Price
b. Car Repair Management. The list of the cars in the workshop that are being
repaired.
i. Who the owner is
ii. When the car is brought to the workshop
iii. Services being proposed and their status
iv. The status of the repair
c. Job management. The list of jobs needs to be assigned to the mechanics

2. Car owners can login to the system and see the status of their cars.
3. Mechanics can login to the system and:
a. See the list of jobs assigned to him
b. Mark that the job is done
Notes
If you have any questions in regards to this exercise, please feel free to contact us.

Please work within the available time frame.

You might also like