HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: /var/www/html/appointmentbook.me/wp-content/plugins/booknetic/app/Backend/Workflow/ActionsAjax.php
<?php

namespace BookneticApp\Backend\Workflow;


use BookneticApp\Models\Workflow;
use BookneticApp\Models\WorkflowAction;
use BookneticApp\Providers\Common\WorkflowEventsManager;
use BookneticApp\Providers\Helpers\Helper;

class ActionsAjax extends \BookneticApp\Providers\Core\Controller
{
    private $workflowDriversManager;

    private $workflowEventsManager;

    /**
     * @param WorkflowEventsManager $workflowEventsManager
     */
    public function __construct($workflowEventsManager)
    {
        $this->workflowEventsManager = $workflowEventsManager;
        $this->workflowDriversManager = $workflowEventsManager->getDriverManager();
    }


    public function set_booking_status_view()
    {
        $id = Helper::_post( 'id', 0, 'int' );

        $workflowActionInfo = WorkflowAction::get( $id );

        if ( ! $workflowActionInfo )
        {
            return $this->response( false );
        }

        $data = json_decode($workflowActionInfo->data, true);

        $availableParams = $this->workflowEventsManager->get(Workflow::get($workflowActionInfo->workflow_id)['when'])
            ->getAvailableParams();

        $idShortcodes = $this->workflowEventsManager->getShortcodeService()->getShortCodesList($availableParams, ['appointment_id']);

        $IDS = [];
        foreach ($idShortcodes as $shortcode)
        {
            $IDS[ '{'. $shortcode['code'] . '}' ] = [
                'name'      => $shortcode['name'],
                'selected'  => false
            ];
        }
        $selectedIds = isset($data['appointment_ids']) ? explode(',',   $data['appointment_ids']) : [];
        foreach ($selectedIds as $ID)
        {
            if (empty($ID)) continue;

            if (array_key_exists($ID, $IDS))
            {
                $IDS[$ID]['selected'] = true;
            } else {
                $IDS[$ID] = [
                    'selected' => true,
                    'name' => $ID
                ];
            }
        }

        return $this->modalView( 'action_set_booking_status', [
            'action_info'           => $workflowActionInfo,
            'appointment_ids'       => $IDS,
            'status'                => isset($data['status']) ? $data['status'] : '',
            'run_workflows'         => isset($data['run_workflows']) ? $data['run_workflows'] : true
        ], [
            'workflow_action_id' => $id,
        ] );
    }

    public function set_booking_status_save()
    {
        $id                 = Helper::_post( 'id', 0, 'int' );
        $is_active          = Helper::_post( 'is_active', 1, 'int' );
        $appointment_ids    = Helper::_post( 'appointment_ids', '', 'string' );
        $status             = Helper::_post( 'status', '', 'string' );
        $run_workflows      = Helper::_post( 'run_workflows', '', 'num' );

        $checkWorkflowActionExist = WorkflowAction::get( $id );

        if ( ! $checkWorkflowActionExist )
        {
            return $this->response( false );
        }

        $newData = [
            'appointment_ids' => $appointment_ids,
            'status' => $status,
            'run_workflows' => $run_workflows == 1 ? true : false
        ];

        WorkflowAction::where( 'id', $id )->update( [
            'data' => json_encode( $newData ),
            'is_active' => $is_active
        ] );

        return $this->response( true );
    }

}