using System.Threading.Tasks; using API.Database; using API.Service; using AutoMapper; using Microsoft.AspNetCore.Mvc; using Data.Models.DTOs; using Microsoft.AspNetCore.Authorization; using Data.Models.Classes; using Microsoft.Extensions.Configuration; namespace API.Controllers { [ApiController] [Route("/api/[controller]")] public class UserController: ControllerBase { private readonly UserService _service; public UserController(DevHiveContext context, IMapper mapper, IConfiguration configuration) { this._service = new UserService(context, mapper, configuration.GetSection("AppSettings")); } [HttpPost] [Route("login")] public async Task Login([FromBody] LoginDTO loginDTO) { return await this._service.LoginUser(loginDTO); } [HttpPost] [Route("register")] public async Task Register([FromBody] RegisterDTO registerDto) { return await this._service.RegisterUser(registerDto); } //Read [HttpGet] public async Task GetById(int id) { return await this._service.GetUserById(id); } //Update [HttpPut] [Authorize] public async Task Update(int id, [FromBody] UserDTO userDTO) { return await this._service.UpdateUser(id, userDTO); } //Delete [HttpDelete] [Authorize] public async Task Delete(int id) { return await this._service.DeleteUser(id); } } }