version 3

This commit is contained in:
2025-12-17 00:34:41 +03:30
parent 139924db94
commit 74e8480a68
38 changed files with 5399 additions and 70 deletions

View File

@@ -0,0 +1,98 @@
using Microsoft.AspNetCore.Mvc;
using GreenHome.Application;
namespace GreenHome.Api.Controllers;
[ApiController]
[Route("api/[controller]")]
public class ChecklistsController : ControllerBase
{
private readonly IChecklistService _checklistService;
public ChecklistsController(IChecklistService checklistService)
{
_checklistService = checklistService;
}
/// <summary>
/// دریافت چک‌لیست فعال یک دستگاه
/// </summary>
[HttpGet("active/{deviceId}")]
public async Task<ActionResult<ChecklistDto>> GetActiveChecklist(int deviceId, CancellationToken cancellationToken)
{
var result = await _checklistService.GetActiveChecklistByDeviceIdAsync(deviceId, cancellationToken);
if (result == null)
{
return NotFound(new { error = "چک‌لیست فعالی برای این دستگاه یافت نشد" });
}
return Ok(result);
}
/// <summary>
/// دریافت تمام چک‌لیست‌های یک دستگاه
/// </summary>
[HttpGet("device/{deviceId}")]
public async Task<ActionResult<List<ChecklistDto>>> GetChecklists(int deviceId, CancellationToken cancellationToken)
{
var result = await _checklistService.GetChecklistsByDeviceIdAsync(deviceId, cancellationToken);
return Ok(result);
}
/// <summary>
/// دریافت جزئیات یک چک‌لیست
/// </summary>
[HttpGet("{id}")]
public async Task<ActionResult<ChecklistDto>> GetChecklistById(int id, CancellationToken cancellationToken)
{
var result = await _checklistService.GetChecklistByIdAsync(id, cancellationToken);
if (result == null)
{
return NotFound(new { error = $"چک‌لیست با شناسه {id} یافت نشد" });
}
return Ok(result);
}
/// <summary>
/// ایجاد چک‌لیست جدید (چک‌لیست قبلی غیرفعال می‌شود)
/// </summary>
[HttpPost]
public async Task<ActionResult<int>> CreateChecklist(
CreateChecklistRequest request,
CancellationToken cancellationToken)
{
var id = await _checklistService.CreateChecklistAsync(request, cancellationToken);
return Ok(new { id, message = "چک‌لیست با موفقیت ایجاد شد و چک‌لیست قبلی غیرفعال شد" });
}
/// <summary>
/// دریافت سابقه تکمیل‌های یک چک‌لیست
/// </summary>
[HttpGet("{checklistId}/completions")]
public async Task<ActionResult<List<ChecklistCompletionDto>>> GetCompletions(
int checklistId,
CancellationToken cancellationToken)
{
var result = await _checklistService.GetCompletionsByChecklistIdAsync(checklistId, cancellationToken);
return Ok(result);
}
/// <summary>
/// ثبت تکمیل چک‌لیست
/// </summary>
[HttpPost("complete")]
public async Task<ActionResult<int>> CompleteChecklist(
CompleteChecklistRequest request,
CancellationToken cancellationToken)
{
try
{
var id = await _checklistService.CompleteChecklistAsync(request, cancellationToken);
return Ok(new { id, message = "چک‌لیست با موفقیت تکمیل شد" });
}
catch (InvalidOperationException ex)
{
return NotFound(new { error = ex.Message });
}
}
}