<?php

namespace App\Http\Controllers;
use App\Services\SessionService;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\MessageBag;

abstract class Controller
{
    public function processApiResponseToBack(
        mixed $apiResponse,
        array $data = [],
        array $input = [],
        MessageBag $errors = new MessageBag()
    ): Response|RedirectResponse {

        if ($apiResponse === null) {
            $errors->add('api_message', 'A system error occurred. Please try again later');
        }

        if (is_string($apiResponse)) {
            $errors->add('api_message', $apiResponse);
            Log::channel('kedebah_api')->info('storing  api message in sessions');
            SessionService::flashApiMessage($apiResponse);
        }

        return back()
            ->with($data)
            ->withInput($input)
            ->withErrors($errors);
    }
}
