version 3
This commit is contained in:
98
src/GreenHome.Api/Controllers/ChecklistsController.cs
Normal file
98
src/GreenHome.Api/Controllers/ChecklistsController.cs
Normal 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 });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user