using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using MTWorkHR.Application.Filters; using MTWorkHR.Application.Models; using MTWorkHR.Application.Services; using MTWorkHR.Application.Services.Interfaces; namespace MTWorkHR.API.Controllers { [Route("api/[controller]")] [ApiController] [AppAuthorize] public class ContractController : ControllerBase { private readonly IContractService _ContractService; private readonly IContractTaskAttachmentService _ContractTaskAttachmentService; private readonly IProjectStageAttachmentService _ProjectStageAttachmentService; private readonly IFileService _fileService; public ContractController(IContractService UserContractService, IFileService fileService) { _ContractService = UserContractService; _fileService = fileService; } [HttpGet("GetAll")] [ProducesResponseType(StatusCodes.Status200OK)] public async Task>> GetAll([FromQuery] ContractPagingInputDto pagingInput) { return Ok(await _ContractService.GetAll(pagingInput)); } [HttpGet("Get")] [ProducesResponseType(StatusCodes.Status200OK)] // [AppAuthorize(Permissions = "Contract")] public async Task> Get(long ContractId) { return Ok(await _ContractService.GetById(ContractId)); } [HttpPost("Create")] [ProducesResponseType(StatusCodes.Status200OK)] // [AppAuthorize(Permissions = "Contract.Create")] public async Task> Create([FromBody] ContractDto input) { return await _ContractService.Create(input); } [HttpPost("Update")] [ProducesResponseType(StatusCodes.Status200OK)] // [AppAuthorize(Permissions = "Contract.Update")] public async Task Update([FromBody] ContractDto input) { await _ContractService.Update(input); } [HttpDelete("Delete")] [ProducesResponseType(StatusCodes.Status200OK)] // [AppAuthorize(Permissions = "Contract.Delete")] public async Task Delete([FromQuery] long id) { await _ContractService.Delete(id); } [HttpPost("ChangeStatus")] [ProducesResponseType(StatusCodes.Status200OK)] public async Task ChangeStatus([FromBody] ContractStatusDto input) { return await _ContractService.ChangeStatus(input.ContractId, input.StatusId); } [HttpPost("UploadAttachment")] [ProducesResponseType(StatusCodes.Status200OK)] [Consumes("multipart/form-data")] public async Task> UploadAttachment(IFormFile input) { return await _fileService.UploadFile(input); } //[HttpPost("CreateTaskAttachment")] //[ProducesResponseType(StatusCodes.Status200OK)] //[Consumes("multipart/form-data")] //public async Task> CreateTaskAttachment([FromForm] AttachmentDto input) //{ // return await _ContractTaskAttachmentService.Create(input); //} //[HttpPost("CreateProjectAttachment")] //[ProducesResponseType(StatusCodes.Status200OK)] //[Consumes("multipart/form-data")] //public async Task> CreateProjectAttachment([FromForm] AttachmentDto input) //{ // return await _ProjectStageAttachmentService.Create(input); //} } }