TasksTracker.TasksManager.Backend.Api/Controllers/TasksController.cs (75 lines of code) (raw):

using Microsoft.AspNetCore.Mvc; using TasksTracker.TasksManager.Backend.Api.Models; using TasksTracker.TasksManager.Backend.Api.Services; // For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860 namespace TasksTracker.TasksManager.Backend.Api.Controllers { [Route("api/tasks")] [ApiController] public class TasksController : ControllerBase { private readonly ILogger<TasksController> _logger; private readonly ITasksManager _tasksManager; public TasksController(ILogger<TasksController> logger, ITasksManager tasksManager) { _logger = logger; _tasksManager = tasksManager; } [HttpGet] public async Task<IEnumerable<TaskModel>> Get(string createdBy) { return await _tasksManager.GetTasksByCreator(createdBy); } [HttpGet("{taskId}")] public async Task<IActionResult> GetTask(Guid taskId) { var task = await _tasksManager.GetTaskById(taskId); if (task != null) { return Ok(task); } return NotFound(); } [HttpPost] public async Task<IActionResult> Post([FromBody] TaskAddModel taskAddModel) { var taskId = await _tasksManager.CreateNewTask(taskAddModel.TaskName, taskAddModel.TaskCreatedBy, taskAddModel.TaskAssignedTo, taskAddModel.TaskDueDate); return Created($"/api/tasks/{taskId}", null); } [HttpPut("{taskId}")] public async Task<IActionResult> Put(Guid taskId, [FromBody] TaskUpdateModel taskUpdateModel) { var updated = await _tasksManager.UpdateTask(taskId, taskUpdateModel.TaskName, taskUpdateModel.TaskAssignedTo, taskUpdateModel.TaskDueDate); if (updated) { return Ok(); } return BadRequest(); } [HttpPut("{taskId}/markcomplete")] public async Task<IActionResult> MarkComplete(Guid taskId) { var updated = await _tasksManager.MarkTaskCompleted(taskId); if (updated) { return Ok(); } return BadRequest(); } [HttpDelete("{taskId}")] public async Task<IActionResult> Delete(Guid taskId) { var deleted = await _tasksManager.DeleteTask(taskId); if (deleted) { return Ok(); } return NotFound(); } } }