/***********************************************************************************************************
 * Name         : MilestoneReachedFlagController
 * Purpose      : Controller for MilestoneReachedFlag LWC
 **********************************************************************************************************/
public without sharing class MilestoneReachedFlagController {
    /**
     * @description Updates the Milestone Reached field on the specified AdvancePayment__c record
     * @param advancePaymentId ID of the AdvancePayment__c record
     * @param milestoneReached New value for the MilestoneReached__c field (true or false)
     */
    @AuraEnabled
    public static void updateMilestoneReached(String advancePaymentId, Boolean milestoneReached) {
        try {
            AdvancePayment__c advancePayment = new AdvancePayment__c(
                Id = advancePaymentId,
                MilestoneReached__c = milestoneReached
            );

            Approval.unlock(advancePayment, false);
            TriggerControl.disableTrigger(AdvancePaymentTriggerHandler.SELF);
            update advancePayment;
            TriggerControl.enableTrigger(AdvancePaymentTriggerHandler.SELF);
            Approval.lock(advancePayment, false);
        } catch (Exception e) {
            ErrorLogger.logError(e);
            throw new AuraHandledException(AP_Constants.ERROR_MESSAGE_FOR_MILESTONE_UPDATE + e.getMessage());
        }
    }
}