using Microsoft.EntityFrameworkCore.Migrations;

#nullable disable

namespace SolutionErp.Infrastructure.Persistence.Migrations
{
    /// <inheritdoc />
    public partial class BackfillEndedByLevelFinalizeFromChangelog : Migration
    {
        /// <inheritdoc />
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            // [S97 anh Kiệt FDC — data-fix] Mig 60 backfill soi NHẦM bảng: nó query
            // PurchaseEvaluationApprovals cho marker "[Duyệt KẾT THÚC tại...]", nhưng marker đó do
            // LogTransitionAsync ghi vào PurchaseEvaluationChangelogs.ContextNote (approval-history
            // là record RIÊNG ở dòng :745, LogTransition CHỈ ghi Changelog dòng :1073). → Mig 60
            // match 0 dòng; phiếu finalize-sớm PRE-Mig60 (vd PE/2026/A/005, A/008 — Phan Văn Chương
            // duyệt-thay-CEO tại CCM Cấp 2, KHÔNG qua CEO) giữ EndedByLevelFinalize=0 → hiển thị SAI
            // "Đã được CEO duyệt" thay vì "Kết thúc tại CCM". Đính chính: set =1 cho phiếu DaDuyet có
            // Changelog terminal (PhaseAtChange=7) chứa marker finalize. Idempotent (WHERE ...=0).
            // SQL-Server-only (tests SQLite EnsureCreated no-replay migration, gotcha #63). Gotcha #79.
            migrationBuilder.Sql(@"
UPDATE pe SET EndedByLevelFinalize = 1
FROM PurchaseEvaluations pe
WHERE pe.Phase = 7 AND pe.EndedByLevelFinalize = 0
  AND EXISTS (
      SELECT 1 FROM PurchaseEvaluationChangelogs c
      WHERE c.PurchaseEvaluationId = pe.Id
        AND c.PhaseAtChange = 7
        AND c.ContextNote LIKE N'%Duyệt KẾT THÚC tại%');");
        }

        /// <inheritdoc />
        protected override void Down(MigrationBuilder migrationBuilder)
        {
            // Data-fix đính chính (Mig 60 wrong-table) — KHÔNG reverse (không snapshot trạng thái
            // trước; revert = tái tạo lỗi). No-op an toàn.
        }
    }
}
