<?php

use App\Helpers\BibClass;
use App\Http\Controllers\NepaliDictonary\DictonaryController;
use App\Models\Log\ActivityLog;
use App\Models\Log\ErrorLog;
use App\Models\Log\OperationLog;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Str;

function pre($object, $die = false)
{
    echo "<pre>";
    print_r($object);
    echo "</pre>";
    if ($die)
        die;
}
function label($text, $echo = true)
{

    $text = strtoupper($text);
    if ($echo) {
        echo $text;
    } else {
        return $text;
    }
}
function template($filepath)
{
    $filepath = env("APP_URL") . '/' . env("CLIENT_PATH") . '/' . $filepath;
    // $filepath=str_replace('\\','/',env("APP_URL")."/layout/".$filepath);    
    echo $filepath;
    //   return 
}
function landingtemplate($filepath)
{
    $filepath = env("APP_URL") . '/' . env("CLIENT_PATH") . '/landing/' . $filepath;
    // $filepath=str_replace('\\','/',env("APP_URL")."/layout/".$filepath);    
    echo $filepath;
    //   return 
}
if (!function_exists('N2')) {
    function N2($N)
    {
        return number_format($N, 2, '.', ',');
    }
}
if (!function_exists('slugify')) {
    function slugify($text, $tableName = null)
    {
        // Generate the initial slug from the text
        $slug = preg_replace('/[^a-zA-Z0-9\-]/', '-', $text);
        $slug = preg_replace('/-+/', '-', $slug);
        $slug = trim($slug, '-');
        $slug = strtolower($slug);

        // If the table name is provided, check for uniqueness and modify the slug if needed
        if ($tableName) {
            $originalSlug = $slug;
            $count = 1;

            while (isSlugExists($tableName, $slug)) {
                $slug = $originalSlug . '-' . $count;
                $count++;
            }
        }

        return $slug;
    }
}
if (!function_exists('isSlugExists')) {
    function isSlugExists($tableName, $slug)
    {
        $aliasField = 'alias';
        $count = DB::table($tableName)
            ->where($aliasField, $slug)
            ->count();
        return $count > 0;
    }
}

function createButton($class = "", $type = "submit", $display = "Submit", $url = "")
{
    if (!$url):
        ?>
        <button class="btn <?php echo $class; ?>" type="<?php echo ($display == "Submit") ? $display : $type; ?>">
            <?php echo label($display) ?>
        </button>
        <?php
    else:
        ?>
        <a class="btn <?php echo $class; ?>" href="<?php echo $url; ?>">
            <?php echo label($display) ?>
        </a>
        <?php
    endif;
}
function createText($name, $id, $display, $class = "", $value = "", $placeHolder = "", $readonly = "", $required = "")
{
    ?>
    <?php if ($display != ""): ?><label for="<?php echo $id; ?>" class="form-label col-form-label">
            <?php echo label($display); ?>
        </label>
    <?php endif; ?>
    <div class="form-control-wrap">
        <input type="text" id="<?php echo $id; ?>" <?php echo $readonly; ?> placeholder="<?php echo $placeHolder; ?>"
            name="<?php echo $name; ?>" class="form-control <?php echo $class; ?>" value="<?php echo $value; ?>" <?php if ($required != ""): ?>required<?php endif; ?>>
    </div>
    <p id='error_<?php echo $name; ?>' class='text-danger custom-error'></p>
    <?php
}
/**
 * $tableName = Name of table
 * $pk = primary key of table
 * $name = table select column name
 * $class = extra class
 * $data = Existing data or for edit case showing selected data
 * $display = Displaying name or showing label name.
 */
function getSelectForForeignColumn($tableName, $pk, $name, $class = "form-control", $data = null, $display = null, $customColumnName = null)
{
    $tableName = strtolower(trim($tableName));
    $pk = trim($pk);
    $name = trim($name);
    $class = trim($class);
    $systems = DB::table($tableName)->where('status', '<>', -1)->orderBy($pk, 'asc')->pluck($name, $pk);
    $customColumnName = !empty($customColumnName) ? $customColumnName : $pk; //if we pass column name other then primary key.
    customCreateSelect($pk, $pk, $class, $display ?? $name, $systems, ($data) ? $data->$customColumnName : null);
}
function customCreateSelect($name, $id, $class = "form-control", $display = '', $values = array(), $defaultValue = '')
{
    $disabled = (in_array("DISABLED", explode(" ", strtoupper($class)))) ? "Disabled" : false;
    $required = (in_array("REQUIRED", explode(" ", strtoupper($class)))) ? "Required" : false;
    ?><label for="<?php echo $id; ?>" class="form-label col-form-label">
        <?php echo label($display); ?>
    </label>
    <?php if ($disabled): ?>
        <input type="hidden" name="<?php echo $name; ?>" value="<?php echo $defaultValue; ?>" />
    <?php endif; ?>
    <select class="form-select  <?php echo $class ?>" name="<?php echo $name; ?>" data-search="true"
        id="<?php echo $name; ?>" aria-label="Default select example" <?php echo ($disabled) ? "Disabled" : ""; ?>     <?php echo ($required) ? "Required" : ""; ?>>
        <option value="">
            <?php label("Select Option"); ?>
        </option>
        <?php foreach ($values as $key => $value) { ?>
            <option value="<?= $key ?>" <?php echo $defaultValue == $key ? 'selected' : '' ?>>
                <?= $value ?>
            </option>
        <?php } ?>
    </select>
    <p id='error_<?php echo $name; ?>' class='text-danger custom-error'></p>
    <?php
}
function createCustomSelectFromArray($Array, $displayTextForLabel, $HTMLElementName, $defaultValueSelected = '', $additionalClass = "form-control")
{
    $disabled = (in_array("DISABLED", explode(" ", strtoupper($additionalClass)))) ? "Disabled" : false;
    $required = (in_array("REQUIRED", explode(" ", strtoupper($additionalClass)))) ? "Required" : false;
    ?>
    <label for="<?php echo $HTMLElementName; ?>" class="form-label col-form-label">
        <?php echo label($displayTextForLabel); ?>
    </label>
    <?php if ($disabled): ?>
        <input type="hidden" name="<?php echo $HTMLElementName; ?>" value="<?php echo $defaultValueSelected; ?>" />
    <?php endif; ?>
    <select class="form-select  <?php echo $additionalClass ?>" name="<?php echo $HTMLElementName; ?>" data-search="true"
        id="<?php echo $HTMLElementName; ?>" aria-label="Default select example" <?php echo ($disabled) ? "Disabled" : ""; ?>     <?php echo ($required) ? "Required" : ""; ?>>
        <option <?php if ($required): ?>value="-1" <?php endif; ?>>
            <?php label("Select Option"); ?>
        </option>
        <?php foreach ($Array as $option): ?>
            <option value="<?php echo $option['value']; ?>" <?php echo $defaultValueSelected == $option['value'] ? 'selected' : ''; ?>>
                <?php echo $option['display']; ?>
            </option>
        <?php endforeach; ?>
    </select>
    <p id='error_<?php echo $HTMLElementName; ?>' class='text-danger custom-error'></p>
    <?php
}

function createCustomSelect($tableName, $fieldNameToDisplay, $fieldNameForValue, $defaultValueSelected, $displayTextForLabel, $HTMLElementName, $additionalClass = "form-control", $defaultCondition = null, $extra = null)
{
    // Supply conditions as $defaultCondition = "column_name = 'value'";
    $tableName = strtolower(trim($tableName));
    $fieldNameToDisplay = trim($fieldNameToDisplay);
    $fieldNameForValue = trim($fieldNameForValue);
    $additionalClass = trim($additionalClass);

    $query = DB::table(DB::raw("`$tableName`"))->where('status', '<>', -1);

    if ($defaultCondition) {
        $query->whereRaw($defaultCondition);
    }

    $systems = $query->orderBy($fieldNameForValue, 'asc')->pluck($fieldNameToDisplay, $fieldNameForValue);

    ?>
    <?php if ($displayTextForLabel != ''): ?><label class="form-label col-form-label">
            <?php echo label($displayTextForLabel); ?>
        </label>
    <?php endif; ?>
    <select class="form-select <?php echo $additionalClass; ?>" name="<?php echo $HTMLElementName; ?>" id="<?php echo $HTMLElementName; ?>" data-search="true"
        aria-label="" <?php if (stripos($additionalClass, 'required') !== false) { echo "REQUIRED"; } ?> <?php if (stripos($additionalClass, 'readonly') !== false) { echo "DISABLED"; } ?>     <?php echo $extra; ?>>
        <?php if (stripos($additionalClass, 'required') !== false) { ?>
            <option value="">
                <?php label("Select Option"); ?>
            </option>
        <?php } else { ?>
            <option value="0">
                <?php label("Select Option"); ?>
            </option>
        <?php } ?>
        <?php foreach ($systems as $key => $value) { ?>
            <option value="<?= $key ?>" <?php echo $defaultValueSelected == $key ? 'selected' : '' ?>>
                <?= $value ?>
            </option>
        <?php } ?>
    </select>
    <p id='error_<?php echo $fieldNameForValue; ?>' class='text-danger custom-error'></p>
    <?php
}

function createImageInput($name, $display = "", $class = "", $default = "")
{
    ?>
    <div class="input-group">
        <span class="input-group-btn">
            <a id="<?php echo $name; ?>" data-input="<?php echo $name; ?>_url" data-preview="<?php echo $name; ?>holder"
                class="btn btn-primary">
                <i class="fa fa-picture-o"></i>
                <?php echo ($display != "") ? $display : "Upload"; ?>
            </a>
        </span>
        <input id="<?php echo $name; ?>_url" class="form-control lfm <?php echo $class; ?>" type="text"
            name="<?php echo $name; ?>" <?php if ($default != ""): ?> value="<?php echo env("APP_URL") . "/" . $default; ?>"
            <?php endif; ?> multiple>
    </div>
    <div id="<?php echo $name; ?>holder" style="margin-top:15px;max-height:80px;overflow:hidden;">
        <?php if ($default != ""): ?> <img src="<?php echo env("APP_URL") . "/" . $default; ?>" style="height: 5rem" />
        <?php endif; ?>
    </div>
    <?php
    collectScripts(function () use ($name) {
        ?>
        <script>
            lfm('<?php echo $name; ?>', 'image', {
                prefix: '<?php echo env("APP_URL"); ?>/files'
            });
        </script>
    <?php });
}

function createMultiImageInput($name, $display = "", $class = "", $default = "")
{
    ?>
    <div class="input-group">
        <span class="input-group-btn">
            <a id="<?php echo $name; ?>" data-input="<?php echo $name; ?>_url" data-preview="<?php echo $name; ?>holder"
                class="btn btn-primary">
                <i class="fa fa-picture-o"></i>
                <?php echo ($display != "") ? $display : "Choose Photo"; ?>
            </a>
        </span>
        <input id="<?php echo $name; ?>_url" class="form-control lfm <?php echo $class; ?>" type="text"
            name="<?php echo $name; ?>" <?php if ($default != ""): ?> value="<?php echo env("APP_URL") . "/" . $default; ?>"
            <?php endif; ?> multiple>
    </div>
    <div id="<?php echo $name; ?>holder" style="margin-top:15px;max-height:80px;overflow:hidden;">
        <?php if ($default != ""): ?> <img src="<?php echo env("APP_URL") . "/" . $default; ?>" style="height: 5rem" />
        <?php endif; ?>
    </div>
    <?php
    collectScripts(function () use ($name) {
        ?>
        <script>
            lfm('<?php echo $name; ?>', 'image', {
                prefix: '<?php echo env("APP_URL"); ?>/files',
                type: 'file',
                multi_selection: true
            });
        </script>
    <?php });
}

function site_url($url = "")
{
    return env("APP_URL") . "/" . trim($url, "/");
}
function base_url($url = "")
{
    return env("APP_URL") . "/" . trim($url, "/");
}
function showImageThumb($url)
{ ?>
    <div style="max-height:40px;overflow:hidden">
        <?php if ($url != ""): ?> <img src="<?php echo env("APP_URL") . "/" . $url; ?>" style="height: 40px;"
                class="img-fluid" />
        <?php endif; ?>
    </div>
    <?php
}

function getFieldData($tableName, $returnField, $referenceFieldName, $referenceValue)
{
    $tableName = strtolower(trim($tableName));
    $returnField = trim($returnField);
    $referenceFieldName = trim($referenceFieldName);

    $query = DB::table(DB::raw("`$tableName`"))->where($referenceFieldName, $referenceValue);

    $fieldData = ($query->value($returnField)) ? $query->value($returnField) : "N/A";

    return $fieldData;
}


function createErrorParagraph($name, $class = null)
{
    echo "<p id='error_$name' class='text-danger custom-error $class'></p>";
}
function createActivityLog($controllerName, $methodName, $activity)
{
    $user_id = (auth()->user()) ? auth()->user()->id : "0";
    ActivityLog::create([
        'user_id' => $user_id,
        'controllerName' => $controllerName,
        'methodName' => $methodName,
        'actionUrl' => request()->fullUrl(),
        'activity' => $activity,
    ]);
}
function getOperationNumber()
{
    $startNumber = date('YmdHis') . rand(1000, 9999);
    $isExists = OperationLog::where('operation_end_no', $startNumber)->first();
    while ($isExists) {
        $startNumber = date('YmdHis') . rand(1000, 9999);
        $isExists = OperationLog::where('operation_end_no', $startNumber)->first();
    }
    return $startNumber;
}

function createOperationLog($startOperationNumber, $endOperationNumber, $modelName, $modelId, $operationName, $previousValues, $newValues)
{
    $operationId = getOperationNumber();
    $user_id = (auth()->user()) ? auth()->user()->id : "0";
    OperationLog::create([
        'user_id' => $user_id,
        'operation_start_no' => $startOperationNumber,
        'operation_end_no' => $endOperationNumber,
        'model_name' => $modelName,
        'model_id' => $modelId,
        'operation_name' => $operationName,
        'previous_values' => $previousValues ? json_encode($previousValues) : null,
        'new_values' => $newValues ? json_encode($newValues) : null,
    ]);
}
function createErrorLog($controllerName, $methodName, $errors)
{
    $user_id = (auth()->user()) ? auth()->user()->id : "0";
    ErrorLog::create([
        'user_id' => $user_id,
        'controller_name' => $controllerName,
        'method_name' => $methodName,
        'errors' => $errors,
    ]);
}
function createDate($name, $display = "", $class = "datepicker", $default = "")
{
    ?>

    <div class="form-group">
        <label for="<?php echo $name; ?>" class="form-label col-form-label">
            <?php echo label($display); ?>
        </label>
        <div class="form-control-wrap">
            <input type="text" name="<?php echo $name; ?>" id="<?php echo $name; ?>"
                class="form-control datepicker<?php echo $class; ?>" value="<?php echo $default; ?>" />
        </div>
    </div>
    <?php
}
function createPassword($name, $display = "", $class = "password", $default = "")
{
    ?>

    <div class="form-group">
        <label for="<?php echo $name; ?>" class="form-label col-form-label">
            <?php echo label($display); ?>
        </label>
        <div class="form-control-wrap">
            <input type="password" name="<?php echo $name; ?>" id="<?php echo $name; ?>"
                class="form-control <?php echo $class; ?>" value="<?php echo $default; ?>" />
        </div>
    </div>
    <?php
}
function createTextArea($name, $class = "", $display = "", $default = "", $row = "")
{
    $hasCkeditorClassic = strpos($class, 'ckeditor-classic') !== false;
    $uploadUrlAttribute = $hasCkeditorClassic ? ' data-upload-url="' . route('upload') . '"' : '';
    ?>

    <div class="form-group">
        <label for="<?php echo $name; ?>" class="form-label col-form-label">
            <?php echo label($display); ?>
        </label>
        <div class="form-control-wrap">
            <textarea class="form-control text-area <?php echo $class; ?>" name="<?php echo $name; ?>"
                id="<?php echo $name; ?>" rows="<?php echo $row; ?>" <?php echo $uploadUrlAttribute; ?>><?php if (isset($default)) {
                             echo ($default);
                         } ?></textarea>
        </div>
    </div>
    <?php
}
function createPlainTextArea($name, $class = "", $display = "", $default = "", $row = "")
{
    ?>

    <div class="form-group">
        <label for="<?php echo $name; ?>" class="form-label col-form-label">
            <?php echo label($display); ?>
        </label>
        <div class="form-control-wrap">
            <textarea class="form-control text-area <?php echo $class; ?>" name="<?php echo $name; ?>"
                id="<?php echo $name; ?>"
                rows="<?php echo $row; ?>"><?php if (isset($default)) {
                       echo ($default);
                   } ?></textarea>
        </div>
    </div>
    <?php
}


function getDisplayOrder($tableName)
{
    // echo $tableName;die;
    $maxDisplayOrder = DB::select("select max(display_order) as display_order from $tableName")[0]->display_order;
    $nextDisplayOrder = $maxDisplayOrder + 1;
    return $nextDisplayOrder;
}
function getAlias($textField, $tableName)
{

    $maxDisplayOrder = DB::select("select max(display_order) as display_order from $tableName")[0]->display_order;
    $nextDisplayOrder = $maxDisplayOrder + 1;
    return $nextDisplayOrder;
}
if (!function_exists('myDate')) {
    function myDate($originalDate)
    {
        return date("F d Y", strtotime($originalDate));
    }
}

if (!function_exists('dbDate')) {
    function dbDate($date)
    {
        return date("Y-m-d", strtotime($date));
    }
}

if (!function_exists('myTime')) {
    function myTime($originalDate)
    {
        return date("g:i A", strtotime($originalDate));
    }
}

if (!function_exists('myDateTime')) {
    function myDateTime($originalDate)
    {
        return date("F d Y g:i A", strtotime($originalDate));
    }
}

if (!function_exists('myDaysDiff')) {
    function myDaysDiff($fromDate, $toDate)
    {
        $fromDate = strtotime($fromDate);
        $toDate = strtotime($toDate);
        $datediff = $toDate - $fromDate;
        return round($datediff / (60 * 60 * 24));
    }
}

if (!function_exists('firstDayOfNepaliMonth')) {
    function firstDayOfNepaliMonth($engDate = "")
    {
        $engDate = ($engDate != "") ? $engDate : date("Y-m-d");
        $NepaliDate = NepaliDate($engDate);
        $nD = explode("-", $NepaliDate);
        $Day = '1';
        $Month = $nD[1];
        $Year = $nD[0];
        $t = "select bs_date from tbl_nepengcalendar where bs_date='" . $Year . "-" . $Month . "-" . $Day . "'";
        return DB::select($t)[0]->bs_date;
    }
}

if (!function_exists('firstDayOfNepaliMonth1')) {
    function firstDayOfNepaliMonth1($engDate = "")
    {
        $engDate = ($engDate != "") ? $engDate : date("Y-m-d");
        $NepaliDate = NepaliDate($engDate);
        $nD = explode("-", $NepaliDate);
        $Day = '1';
        $Month = ($nD[1] < 10) ? '0' . $nD[1] : $nD[1];
        $Year = $nD[0];
        $t = "select ad_date from tbl_nepengcalendar where bs_date='" . $Year . "-" . $Month . "-" . $Day . "'";
        return DB::select($t)[0]->ad_date;
    }
}

if (!function_exists('lastDayOfNepaliMonth')) {
    function lastDayOfNepaliMonth($engDate = "")
    {
        $engDate = ($engDate != "") ? $engDate : date("Y-m-d");
        $NepaliDate = NepaliDate1($engDate);
        $nD = explode("-", $NepaliDate);
        $Day = '1';
        $Month = $nD[1];
        $Year = $nD[0];
        $t = "select ad_date from tbl_nepengcalendar where bs_date like '" . $Year . "-" . $Month . "-%' order by ad_date";
        $dates = DB::select($t);
        $date = end($dates);
        return $date->ad_date;
    }
}

if (!function_exists('EnglishDate')) {
    function EnglishDate($NepaliYear, $NepaliMonth, $NepaliDay)
    {
        if ($NepaliMonth < 10) {
            $NepaliMonth = "0" . $NepaliMonth;
        }
        $bs_date = $NepaliYear . "-" . $NepaliMonth . "-" . $NepaliDay;
        $t = "select ad_date from tbl_nepengcalendar where bs_date='$bs_date'";
        $q = DB::select($t);
        return $q[0]->ad_date;
    }
}

if (!function_exists('Today')) {
    function Today()
    {
        return date("Y-m-d");
    }
}

if (!function_exists('NepaliToEnglishDate')) {
    function NepaliToEnglishDate($NepaliDate)
    {
        $NepaliDate = trim($NepaliDate);
        if (trim($NepaliDate) == "") {
            return date("Y-m-d");
        }
        $NepaliDate = explode("-", $NepaliDate);
        $NepaliMonth = intval($NepaliDate[1]);
        $NepaliYear = intval($NepaliDate[0]);
        $NepaliDay = intval($NepaliDate[2]);
        if ($NepaliMonth < 10) {
            $NepaliMonth = "0" . $NepaliMonth;
        }
        $bs_date = $NepaliYear . "-" . $NepaliMonth . "-" . $NepaliDay;
        $t = "select ad_date from tbl_nepengcalendar where bs_date='$bs_date'";
        $q = DB::select($t);
        return $q[0]->ad_date;
    }
}

if (!function_exists('NepaliDate')) {
    function NepaliDate($engDate = "")
    {
        $engDate = ($engDate != "") ? $engDate : date("Y-m-d");
        if ($engDate != "0000-00-00") {
            // return str_replace("-0", "-", DB::table('tbl_nepengcalendar')->where('ad_date', $engDate)->first()->bs_date);
            $result = DB::table('tbl_nepengcalendar')->where('ad_date', $engDate)->first();

            if ($result) {
                $bsDate = $result->bs_date;
                $convertedDate = convertNumbersToUnicode(str_replace("-", "-", $bsDate));
                return $convertedDate;
            } else {
                // Handle the case when the query result is null
                return null;
            }
        } else {
            return "";
        }
    }
}
function convertNumbersToUnicode($number = "2080-10-13")
{
    $unicodeDigits = [
        '0' => '०',
        '1' => '१',
        '2' => '२',
        '3' => '३',
        '4' => '४',
        '5' => '५',
        '6' => '६',
        '7' => '७',
        '8' => '८',
        '9' => '९',
    ];

    $converted = '';
    $digits = str_split((string) $number);

    foreach ($digits as $digit) {
        if (isset($unicodeDigits[$digit])) {
            $converted .= $unicodeDigits[$digit];
        } elseif ($digit === '-') {
            $converted .= '-';
        } else {
            $converted .= $digit;
        }
    }
    //dd($converted);
    return $converted;
}




if (!function_exists('NepaliMonth')) {
    function NepaliMonth($engDate = "")
    {
        $NepaliDate = NepaliDate($engDate);
        $nD = explode("-", $NepaliDate);
        $Month = $nD[1];
        return intval($Month);
    }
}

if (!function_exists('NepaliYear')) {
    function NepaliYear($engDate = "")
    {
        $NepaliDate = NepaliDate($engDate);
        $nD = explode("-", $NepaliDate);
        $Year = $nD[0];
        return intval($Year);
    }
}

if (!function_exists('NepaliMonthNameByNumber')) {
    function NepaliMonthNameByNumber($number)
    {
        $MonthNames = array(
            "Baisakh",
            "Jestha",
            "Ashad",
            "Shrawan",
            "Bhadra",
            "Asoj",
            "Kartik",
            "Mangsir",
            "Poush",
            "Magh",
            "Falgun",
            "Chaitra"
        );
        return $MonthNames[$number - 1];
    }
}

if (!function_exists('NepaliMonthName')) {
    function NepaliMonthName($engDate = "")
    {
        $Month = NepaliMonth($engDate);
        $MonthNames = array(
            "Baisakh",
            "Jestha",
            "Ashad",
            "Shrawan",
            "Bhadra",
            "Asoj",
            "Kartik",
            "Mangsir",
            "Poush",
            "Magh",
            "Falgun",
            "Chaitra"
        );
        return $MonthNames[$Month - 1];
    }
}

if (!function_exists('N2')) {
    function N2($N)
    {
        return number_format($N, 2, '.', ',');
    }
}
function collectScripts(callable $callback)
{
    ob_start();
    $callback();
    $script = ob_get_clean();

    if (!empty($script)) {
        pushScriptToFooter($script);
    }
}

function pushScriptToFooter($script)
{
    if (!isset($GLOBALS['scripts'])) {
        $GLOBALS['scripts'] = [];
    }

    $GLOBALS['scripts'][] = $script;
}
function sectionHeader($text, $sectiontitle = null)
{
    $texts = explode(" ", $text);
    ?>
    <div class="row text-center intro">

        <div class="col-12">
            <?php if ($sectiontitle): ?>
                <span class="pre-title">
                    <?php echo $sectiontitle; ?>
                </span>
            <?php endif; ?>

            <h2 class="ylw-clr">
                <?php echo $texts[0];
                unset($texts[0]); ?> <span class="featured"><span>
                        <?php echo implode(" ", $texts); ?>
                    </span></span>
            </h2>

        </div>

    </div>
    <?php
}
if (!function_exists('replace_img_src')) {
    function replace_img_src($content)
    {
        return preg_replace(
            '/src="storage(\/[^"]*)"/',
            'src="' . site_url() . 'storage$1"',
            $content
        );
    }
}
function processForShortcode($content)
{
    $content = replace_img_src($content);
    return preg_replace_callback('/\[([\w_]+)([^]]*)\]/', function ($matches) {
        $shortcodeName = $matches[1];
        $shortcodeAttributes = [];
        $mandatoryAttributes = ['alias', 'css', 'title'];

        preg_match_all('/\s*(\w+)\s*=\s*(?:"([^"]*)"|\'([^\']*)\'|([^"\'][^\s]*))/', $matches[2], $attrMatches, PREG_SET_ORDER);

        foreach ($attrMatches as $attrMatch) {
            $attrName = $attrMatch[1];
            $attrValue = $attrMatch[2] ?: ($attrMatch[3] ?: $attrMatch[4]); // Use non-empty capture group as the attribute value
            $attrValue = trim($attrValue, "\"'"); // Remove both single and double quotes from the attribute value
            $shortcodeAttributes[$attrName] = $attrValue;
        }

        // Fill in missing mandatory attributes with empty strings
        foreach ($mandatoryAttributes as $attribute) {
            if (!isset($shortcodeAttributes[$attribute])) {
                $shortcodeAttributes[$attribute] = '';
            }
        }
        return view("shortcodes." . $shortcodeName, $shortcodeAttributes);
    }, $content);
}
function createCustomCheckboxes($tableName, $labelColumn, $valueColumn, $selectedValue = null, $extraAttributes = "", $name = "", $inputType = "checkbox", $condition = "")
{
    // Your implementation logic goes here
    
    // Example: Fetching data from the database
    $options = DB::table($tableName)
                ->whereRaw($condition)
                ->get();

    // Example: Creating checkboxes
    foreach ($options as $option) {
        $isChecked = ($option->$valueColumn == $selectedValue) ? 'checked' : '';

        echo " <div class='form-check mb-0 '><input class='form-check-input' type='$inputType' name='$name'  id='valuefor$name".$option->{$valueColumn}."' value='".$option->{$valueColumn}."' $isChecked $extraAttributes> <label class='form-check-label' for='valuefor$name".$option->{$valueColumn}."' >
        {$option->$labelColumn}
    </label> </div>";
    }
}