using Dlhis.Basic.Appointment.Request;
using Dlhis.Basic.Appointment.Response;
using Dlhis.Basic.Appointment.Services;
using Dlhis.Entity.Visitor.Enums;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.Appointment.Controllers;
///
/// 预约
///
[Authorize]
[ApiController]
[Route("api/[controller]")]
public class AppointmentsController : ControllerBase
{
private readonly IAppointmentService _appointmentService;
public AppointmentsController(IAppointmentService appointmentService)
{
_appointmentService = appointmentService;
}
///
/// 预约申请分页
///
///
///
[HttpGet("page")]
public async Task> GetPageAsync([FromQuery] AppointmentPageRequest request)
{
return await _appointmentService.GetPageAsync(request);
}
///
/// 获取预约明细
///
///
///
[HttpGet("details")]
public async Task> GetAppointmentDetailsByIdAsync(string no)
{
return await _appointmentService.GetAppointmentDetailsByIdAsync(no);
}
///
/// 确认到达
///
///
///
[AllowAnonymous]
[HttpPost("confirm")]
[Transactional]
[IgnoreTenant]
public async Task ConfirmAsync(AppointmentConfirmRequest request)
{
await _appointmentService.ConfirmAsync(request);
}
///
/// 强制离场
///
///
[HttpPost("focusleave")]
[Transactional]
public async Task FocusLeaveAsync(AppointmentFocusLeaveRequest request)
{
await _appointmentService.FocusLeaveAsync(request.Id, request.Reason);
}
///
/// 人脸更新
///
///
[AllowAnonymous]
[HttpPost("face/update")]
[Transactional]
[IgnoreTenant]
public async Task UpdateFaceAsync(AppointmentConfirmRequest request)
{
await _appointmentService.UpdateFaceAsync(request.Id, request.Base64Image);
}
///
/// 根据身份证获取当天预约信息
///
///
///
///
[AllowAnonymous]
[HttpGet("today")]
public async Task GetTodayByIdNoAsync(string idNo, string factory)
{
return await _appointmentService.GetTodayByIdNoAsync(idNo, factory);
}
///
/// 门禁预约
///
///
///
///
///
///
///
[AllowAnonymous]
[HttpGet("door/list")]
public async Task> GetRecordListAsync(string factory, string search, VisitorAppointmentDetailStatusEnumType? status, DateTime start, DateTime end)
{
return await _appointmentService.GetRecordListAsync(factory, search, status, start, end);
}
///
/// 根据身份证获取预约信息分页
///
///
///
[AllowAnonymous]
[HttpGet("idno/page")]
public async Task> GetRecordPageByIdNoAsync([FromQuery] AppointmentIdNoPageRequest request)
{
return await _appointmentService.GetRecordPageByIdNoAsync(request);
}
///
/// 数据明细
///
///
///
///
///
[AllowAnonymous]
[HttpGet("summary")]
public async Task GetSummaryAsync(string factory, DateTime start, DateTime end)
{
end = start.Date.AddDays(1).AddMilliseconds(-1);
return await _appointmentService.GetSummaryAsync(factory, start, end);
}
///
/// 自动离职处理
///
[AllowAnonymous]
[HttpPost("autoResign")]
[IgnoreTenant]
public async Task AutoResignAsync()
{
await _appointmentService.AutoResignAsync();
}
[AllowAnonymous]
[HttpPost("recover")]
[IgnoreTenant]
public async Task RecoverAsync()
{
await _appointmentService.RecoverAsync();
}
[AllowAnonymous]
[IgnoreTenant]
[HttpGet("visitor-devices")]
public async Task> GetVisitorDevicesAsync(long detailId)
{
return await _appointmentService.GetVisitorDevicesAsync(detailId);
}
}