using LMS.Repository.DTO;
using LMS.Repository.Models.DB;
using LMS.Repository.Models.Machine;
using LMS.service.Service;
using LMS.Tools.Extensions;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System.ComponentModel.DataAnnotations;
using static LMS.Common.Enums.MachineEnum;
using static LMS.Common.Enums.ResponseCodeEnum;
using static LMS.Repository.DTO.MachineResponse.MachineDto;
namespace LMS.service.Controllers
{
[Route("lms/[controller]/[action]")]
[ApiController]
public class MachineController(MachineService machineService) : ControllerBase
{
private readonly MachineService _machineService = machineService;
#region 获取指定机器码的状态
///
/// 获取指定机器码的状态
///
///
///
[HttpGet("{machineId}")]
public async Task>> GetMachineStatus(string machineId)
{
return await _machineService.GetMachineStatus(machineId);
}
#endregion
#region 修改机器码数据
///
/// 修改当前机器码
///
///
///
[HttpPost("{id}")]
[Authorize]
public async Task>> ModifyMachine(string id, [FromBody] MachineModel request)
{
if (!ModelState.IsValid)
{
return APIResponseModel.CreateErrorResponseModel(ResponseCode.ParameterError);
}
long userId = ConvertExtension.ObjectToLong(HttpContext.Items["UserId"] ?? 0);
return await _machineService.ModifyMachine(id, request, userId);
}
#endregion
#region 添加机器码
///
/// 添加机器码
///
///
///
[HttpPost]
[Authorize]
public async Task>> AddMachine([FromBody] MachineModel request)
{
if (!ModelState.IsValid)
{
return APIResponseModel.CreateErrorResponseModel(ResponseCode.ParameterError);
}
long userId = ConvertExtension.ObjectToLong(HttpContext.Items["UserId"] ?? 0);
return await _machineService.AddMachine(request, userId);
}
#endregion
#region 获取机器码列表
///
/// 通过查询条件获取机器码列表
///
///
///
///
///
///
///
///
///
///
[HttpGet]
[Authorize]
public async Task>>> QueryMachineCollection([Required] int page, [Required] int pageSize, string? machineId, string? createdUserName, MachineStatus? status, MachineUseStatus? useStatus, string? remark, string? ownUserName)
{
long requestUserId = ConvertExtension.ObjectToLong(HttpContext.Items["UserId"] ?? 0);
return await _machineService.QueryMachineCollection(page, pageSize, machineId, createdUserName, status, useStatus, remark, ownUserName, requestUserId);
}
#endregion
#region 获取指定的机器码详情
[HttpGet("{Id}")]
[Authorize]
public async Task>> GetMachineDetail(string Id)
{
long userId = ConvertExtension.ObjectToLong(HttpContext.Items["UserId"] ?? 0);
return await _machineService.GetMachineDetail(Id, userId);
}
#endregion
#region 将机器码停用
[HttpPost("{Id}")]
[Authorize]
public async Task>> DeactivateMachine(string Id)
{
long userId = ConvertExtension.ObjectToLong(HttpContext.Items["UserId"] ?? 0);
return await _machineService.DeactivateMachine(Id, userId);
}
#endregion
#region 将机器码升级
[HttpPost("{Id}")]
[Authorize]
public async Task>> UpgradeMachine(string Id)
{
long userId = ConvertExtension.ObjectToLong(HttpContext.Items["UserId"] ?? 0);
return await _machineService.UpgradeMachine(Id, userId);
}
#endregion
#region 删除机器码
///
/// 删除机器码
///
///
///
[HttpDelete("{id}")]
[Authorize]
public async Task>> DeleteMachine(string id)
{
long userId = ConvertExtension.ObjectToLong(HttpContext.Items["UserId"] ?? 0);
return await _machineService.DeleteMachine(id, userId);
}
#endregion
}
}