2026-08-19 10:54:55 +07:00
|
|
|
using System.ComponentModel.DataAnnotations;
|
2026-08-19 12:15:20 +07:00
|
|
|
using System.Text.Json;
|
2026-08-19 10:54:55 +07:00
|
|
|
|
|
|
|
|
namespace WordVersioning.Api.Models;
|
|
|
|
|
|
|
|
|
|
/// <summary>body ของ POST /api/documents/{documentId}/versions (multipart/form-data)</summary>
|
|
|
|
|
public class UploadVersionRequest
|
|
|
|
|
{
|
|
|
|
|
[Required]
|
|
|
|
|
public IFormFile File { get; set; } = null!;
|
|
|
|
|
|
|
|
|
|
/// <summary>GUID ที่ client generate ต่อ version — ใช้เป็นส่วนหนึ่งของ object key</summary>
|
|
|
|
|
[Required]
|
|
|
|
|
public string ClientVersionId { get; set; } = string.Empty;
|
|
|
|
|
|
2026-08-19 12:15:20 +07:00
|
|
|
/// <summary>JSON object map tag→text จาก content controls (FR-11)</summary>
|
2026-08-19 10:54:55 +07:00
|
|
|
public string? Fields { get; set; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public record UploadVersionResponse(Guid VersionId, int VersionNumber);
|
|
|
|
|
|
2026-08-19 12:15:20 +07:00
|
|
|
/// <summary>body ของ POST /api/documents/generate (FR-10)</summary>
|
|
|
|
|
public class GenerateDocumentRequest
|
|
|
|
|
{
|
|
|
|
|
[Required]
|
|
|
|
|
public Guid TemplateId { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>map fieldKey → value (ค่า scalar ทั้งหมด)</summary>
|
|
|
|
|
public JsonElement Values { get; set; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public record GenerateDocumentResponse(Guid DocumentId, Guid VersionId, int VersionNumber, string DownloadUrl);
|
|
|
|
|
|
2026-08-19 10:54:55 +07:00
|
|
|
/// <summary>item ของ version history — fields คือ snapshot ที่ parse แล้ว (ถ้ามี)</summary>
|
|
|
|
|
public record VersionListItem(
|
|
|
|
|
Guid VersionId,
|
|
|
|
|
int VersionNumber,
|
|
|
|
|
DateTimeOffset CreatedAt,
|
|
|
|
|
string CreatedByUserId,
|
|
|
|
|
string ContentHash,
|
|
|
|
|
object? Fields);
|