123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- using System.Linq;
- using System.Threading.Tasks;
- using AutoMapper;
- using Microsoft.AspNetCore.Mvc;
- using ToDoManagementSystem.Domain.Entities;
- using ToDoManagementSystem.Interfaces;
- using ToDoManagementSystem.Models.DTO;
- namespace ToDoManagementSystem.Controllers
- {
- [Route("api/[controller]")]
- [ApiController]
- public class ToDoController : ControllerBase
- {
- private readonly IRepository _repository;
- private readonly IMapper _mapper;
- public ToDoController(IRepository repository, IMapper mapper)
- {
- _repository = repository;
- _mapper = mapper;
- }
- [HttpGet()]
- public async Task<IActionResult> List()
- {
- var items = await _repository.List<ToDoItem>();
- //items = items?.OrderBy(x => x.IsDone).ThenByDescending(y => y.CreatedDate)?.ToList();
- var model = items?.Select(x => _mapper.Map<ToDoItem, ToDoItemDTO>(x));
- return Ok(model);
- }
- [HttpGet("{id}")]
- public async Task<IActionResult> GetById([FromRoute] int id)
- {
- var item = await _repository.GetById<ToDoItem>(id);
- var model = _mapper.Map<ToDoItem, ToDoItemDTO>(item);
- return Ok(model);
- }
- [HttpPost]
- public async Task<IActionResult> Post([FromBody] ToDoItemDTO item)
- {
- if (!ModelState.IsValid)
- {
- return new BadRequestObjectResult(ModelState);
- }
- item.Id = 0;
- var data = _mapper.Map<ToDoItemDTO, ToDoItem>(item);
- var model = await _repository.Add(data);
- return Ok(_mapper.Map<ToDoItem, ToDoItemDTO>(model));
- }
- [HttpPut]
- public async Task<IActionResult> Put([FromBody] ToDoItemDTO item)
- {
- if (item.Id == 0)
- ModelState.AddModelError(nameof(item.Id), "This is required.");
- if (!ModelState.IsValid)
- return new BadRequestObjectResult(ModelState);
- var data = await _repository.GetById<ToDoItem>(item.Id);
- if (data == null)
- return NotFound();
- //To do : include automapper here
- data.Description = item.Description;
- data.IsDone = item.IsDone;
- await _repository.Update(data);
- // var temp = _mapper.Map<ToDoItemDTO, ToDoItem>(item);
- // await _repository.Update(temp);
- var model = _mapper.Map<ToDoItem, ToDoItemDTO>(data);
- return Ok(model);
- }
- [HttpDelete("{id}")]
- public async Task<IActionResult> Delete([FromRoute] int id)
- {
- var item = await _repository.GetById<ToDoItem>(id);
- if (item == null)
- {
- return NotFound();
- }
- await _repository.Delete(item);
- return Ok();
- }
- }
- }
|