---
# System prepended metadata

title: Tech. Test

---

# Tech. Test

Implement a simple WebAPI application that helps manage tasks. 

**A Task should have these properties:**
- Title (required)
- Description (required)
- CreatedOn (required)
- CompletedOn
- RejectedOn
- RejectedReason
- AssignedToUser *as string*
- Status *as enum* (required)

**hints:**
The task's status value should be: 
`Draft` when create new task.
`Assigned` when AssignedToUser has a value.
`Completed` when CompletedOn has a value.
`Rejected` when RejectedOn has a value.

## Requirements
- The application should have functionality to:
- Add new Task.
- Edit draft Task.
- Assign draft task. 
- Complete Assigned task. 
- Reject Assigned task.
- Delete draft Tasks.
- Search Tasks by title and status.
- View Tasks summary - "total number of assigned tasks".
- Upon opening the application should generate some test data - random tasks with random words/text.
- Use JSON request and response.
- Use MediatR pattern.
- Use Error handlers.
- Focus on DDD concept and clean code with documentation for classes and methods.
- Add MD file for any readme content.

**Note**:
- You should send me a public github repo link of the test application.
- Send me the link to mtafish14@outlook.com by 10:00 PM.


If it is found that you have shared the test, or any part of your answer has been plagiarized, i.e. that any part of your answers has been copied from existing publicly available material, you may be disqualified from the process. If it is found at any point in the process that you have completed the assignment with the help of another person or that another person has completed the assignment on your behalf, you will be disqualified from the process.




