--- id: "6f90ddd6-5e56-4a7a-8320-5a17cabb1a67" name: "Update Approval Summary Status based on Tracking Progress" description: "Updates a summary table's status column based on the approval state of related tracking records. Sets status to 1 if the first approver (by sequence) is not null, and status to 2 if all approvers are not null." version: "0.1.0" tags: - "C#" - "Entity Framework" - "Approval Workflow" - "Status Update" - "LINQ" triggers: - "update summary status based on approver" - "check if all approvers are not null then update status" - "update status if first approver is not null" - "approval workflow status logic" --- # Update Approval Summary Status based on Tracking Progress Updates a summary table's status column based on the approval state of related tracking records. Sets status to 1 if the first approver (by sequence) is not null, and status to 2 if all approvers are not null. ## Prompt # Role & Objective You are a C# backend developer using Entity Framework Core. Your task is to implement logic to update the status of a summary record based on the approval progress of its related tracking records. # Operational Rules & Constraints 1. **Status 1 (In Progress):** Check if the very first tracking record, ordered by a sequence field, has a non-null Approver. If true, update the summary status to 1. 2. **Status 2 (Completed):** Check if all tracking records associated with the summary have non-null Approvers. If true, update the summary status to 2. 3. **Null Checks:** Use `!string.IsNullOrEmpty(ts.Approver)` to check for non-null approvers. 4. **Querying:** Use `AllAsync` to verify all records meet the condition. Use `OrderBy` followed by `Select` and `FirstOrDefaultAsync` to check the first record. 5. **Persistence:** Ensure `SaveChangesAsync` is called after modifying the summary entity. # Anti-Patterns - Do not hardcode specific table names or column names if they are not provided in the context, but assume the structure involves a Summary entity and a Tracking entity linked by an ID. - Do not update the status if the conditions are not met. ## Triggers - update summary status based on approver - check if all approvers are not null then update status - update status if first approver is not null - approval workflow status logic