Sindbad~EG File Manager

Current Path : /home/copmadinaarea/creditunion.copeastlegondistrict.org/app/Helpers/
Upload File :
Current File : /home/copmadinaarea/creditunion.copeastlegondistrict.org/app/Helpers/general.php

<?php

use App\Models\Transaction;
use App\Models\SavingsAccount;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Cache;

if (!function_exists('_lang')) {
    function _lang($string = '') {

        $target_lang = get_language();

        if ($target_lang == '') {
            $target_lang = "language";
        }

        if (file_exists(resource_path() . "/language/$target_lang.php")) {
            include resource_path() . "/language/$target_lang.php";
        } else {
            include resource_path() . "/language/language.php";
        }

        if (array_key_exists($string, $language)) {
            return $language[$string];
        } else {
            return $string;
        }
    }
}

if (!function_exists('_dlang')) {
    function _dlang($string = '') {

        //Get Target language
        $target_lang = get_option('language');

        if ($target_lang == '') {
            $target_lang = 'language';
        }

        if (file_exists(resource_path() . "/language/$target_lang.php")) {
            include resource_path() . "/language/$target_lang.php";
        } else {
            include resource_path() . "/language/language.php";
        }

        if (array_key_exists($string, $language)) {
            return $language[$string];
        } else {
            return $string;
        }
    }
}

if (!function_exists('startsWith')) {
    function startsWith($haystack, $needle) {
        $length = strlen($needle);
        return (substr($haystack, 0, $length) === $needle);
    }
}

if (!function_exists('get_initials')) {
    function get_initials($string) {
        $words    = explode(" ", $string);
        $initials = null;
        foreach ($words as $w) {
            $initials .= $w[0];
        }
        return $initials;
    }
}

if (!function_exists('create_option')) {
    function create_option($table, $value, $display, $selected = '', $where = NULL, $concat = ' ') {
        $options   = '';
        $condition = '';
        if ($where != NULL) {
            $condition .= "WHERE ";
            foreach ($where as $key => $v) {
                $condition .= $key . "'" . $v . "' ";
            }
        }

        if (is_array($display)) {
            $display_array = $display;
            $display       = $display_array[0];
            $display1      = $display_array[1];
        }

        $query = DB::select("SELECT * FROM $table $condition ORDER BY $display asc");
        foreach ($query as $d) {
            if ($selected != '' && $selected == $d->$value) {
                if (!isset($display_array)) {
                    $options .= "<option value='" . $d->$value . "' selected='true'>" . ucwords($d->$display) . "</option>";
                } else {
                    $options .= "<option value='" . $d->$value . "' selected='true'>" . ucwords($d->$display . $concat . $d->$display1) . "</option>";
                }
            } else {
                if (!isset($display_array)) {
                    $options .= "<option value='" . $d->$value . "'>" . ucwords($d->$display) . "</option>";
                } else {
                    $options .= "<option value='" . $d->$value . "'>" . ucwords($d->$display . $concat . $d->$display1) . "</option>";
                }
            }
        }

        echo $options;
    }
}

if (!function_exists('object_to_string')) {
    function object_to_string($object, $col, $quote = false) {
        $string = "";
        foreach ($object as $data) {
            if ($quote == true) {
                $string .= "'" . $data->$col . "', ";
            } else {
                $string .= $data->$col . ", ";
            }
        }
        $string = substr_replace($string, "", -2);
        return $string;
    }
}

if (!function_exists('get_table')) {
    function get_table($table, $where = NULL) {
        $condition = "";
        if ($where != NULL) {
            $condition .= "WHERE ";
            foreach ($where as $key => $v) {
                $condition .= $key . "'" . $v . "' ";
            }
        }
        $query = DB::select("SELECT * FROM $table $condition");
        return $query;
    }
}

if (!function_exists('user_count')) {
    function user_count($user_type) {
        $count = \App\Models\User::where("user_type", $user_type)
            ->selectRaw("COUNT(id) as total")
            ->first()->total;
        return $count;
    }
}

if (!function_exists('has_permission')) {
    function has_permission($name) {
        $permission_list = \Auth::user()->role->permissions;
        $permission      = $permission_list->firstWhere('permission', $name);

        if ($permission != null) {
            return true;
        }
        return false;
    }
}

if (!function_exists('get_logo')) {
    function get_logo() {
        $logo = get_option("logo");
        if ($logo == "") {
            return asset("public/backend/images/company-logo.png");
        }
        return asset("public/uploads/media/$logo");
    }
}

if (!function_exists('get_favicon')) {
    function get_favicon() {
        $favicon = get_option("favicon");
        if ($favicon == "") {
            return asset("public/backend/images/favicon.png");
        }
        return asset("public/uploads/media/$favicon");
    }
}

if (!function_exists('profile_picture')) {
    function profile_picture($profile_picture = '') {
        if ($profile_picture == '') {
            $profile_picture = Auth::user()->profile_picture;
        }

        if ($profile_picture == '') {
            return asset('public/backend/images/avatar.png');
        }

        return asset('public/uploads/profile/' . $profile_picture);
    }
}

if (!function_exists('sql_escape')) {
    function sql_escape($unsafe_str) {
        if (get_magic_quotes_gpc()) {
            $unsafe_str = stripslashes($unsafe_str);
        }
        return $escaped_str = str_replace("'", "", $unsafe_str);
    }
}

if (!function_exists('get_option')) {
    function get_option($name, $optional = '') {
        $value = Cache::get($name);

        if ($value == "") {
            $setting = DB::table('settings')->where('name', $name)->get();
            if (!$setting->isEmpty()) {
                $value = $setting[0]->value;
                Cache::put($name, $value);
            } else {
                $value = $optional;
            }
        }
        return $value;

    }
}

if (!function_exists('get_setting')) {
    function get_setting($settings, $name, $optional = '') {
        $row = $settings->firstWhere('name', $name);
        if ($row != null) {
            return $row->value;
        }
        return $optional;

    }
}

if (!function_exists('get_trans_option')) {
    function get_trans_option($name, $optional = '') {
        $value = Cache::get($name . "-" . get_language());

        if ($value == "" || $value == NULL) {
            $setting = \App\Models\Setting::where('name', $name)->first();

            if ($setting) {
                $value = $setting->translation->value;
                Cache::put($name . "-" . get_language(), $value);
            } else {
                $value = $optional;
                Cache::put($name . "-" . get_language(), $value);
            }
        }

        return $value;
    }
}

if (!function_exists('navigationTree')) {

    function navigationTree($object, $currentParent, $controller, $currLevel = 0, $prevLevel = -1) {
        foreach ($object as $menu) {
            if ($currentParent == $menu->parent_id) {
                if ($currLevel > $prevLevel) {
                    echo "<ol id='menutree' class='dd-list'>";
                }

                if ($currLevel == $prevLevel) {
                    echo "</li>";
                }

                echo '<li class="dd-item" data-id="' . $menu->id . '"><div class="dd-handle">' . $menu->translation->name . '</div><a class="edit_menu" href="' . action("$controller@edit", $menu->id) . '"><i class="ti-trash"></i></a>
					<a class="btn-remove-2 remove_menu" href="' . action("$controller@destroy", $menu->id) . '"><i class="ti-trash"></i></a>';
                if ($currLevel > $prevLevel) {
                    $prevLevel = $currLevel;
                }
                $currLevel++;
                navigationTree($object, $menu->id, $controller, $currLevel, $prevLevel);
                $currLevel--;
            }
        }
        if ($currLevel == $prevLevel) {
            echo "</li> </ol>";
        }

    }
}

if (!function_exists('show_navigation')) {
    function show_navigation($nav_id, $main_class = '', $nav_link_class = '', $dp_1_class = '', $dp_2_class = '', $icon_type = 'down') {

        $navigation = \App\Models\Navigation::where('id', $nav_id)
            ->where('status', 1)->first();
        if ($navigation) {
            $navigation_items = $navigation->navigationItems()->where('status', 1)->get();
            buildNavigation($navigation_items, $main_class, $nav_link_class, $dp_1_class, $dp_2_class, $icon_type);
        }

    }
}

if (!function_exists('buildNavigation')) {

    function buildNavigation($navigation_items, $main_class = '', $nav_link_class = '', $dropdown_1_class = '', $dropdown_2_class = '', $icon_type = 'down', $currentParent = 0, $currLevel = 0, $prevLevel = -1) {
        foreach ($navigation_items as $nav_item) {
            if ($currentParent == $nav_item->parent_id) {

                if ($currLevel > $prevLevel && $currLevel == 0) {
                    echo "<ul class='$main_class'>";
                } else if ($currLevel > $prevLevel && $currLevel == 1) {
                    echo "<ul class='$dropdown_1_class'>";
                } else if ($currLevel > $prevLevel && $currLevel == 2) {
                    echo "<ul class='$dropdown_2_class'>";
                }

                if ($currLevel == $prevLevel) {
                    echo "</li>";
                }

                if ($nav_item->type == 'dynamic_url') {
                    $url = url($nav_item->url);
                } else if ($nav_item->type == 'page') {
                    $url = url('/' . $nav_item->page->slug);
                } else if ($nav_item->type == 'category') {
                    $url = url('/categories/' . $nav_item->category->slug);
                } else if ($nav_item->type == 'custom_url') {
                    $url = $nav_item->url;
                }

                $icon      = $nav_item->icon;
                $target    = $nav_item->target;
                $active    = $url == url()->current() ? 'active' : '';
                $css_class = $nav_item->css_class != '' ? "class='$nav_item->css_class $active $nav_link_class'" : "class='$active $nav_link_class'";
                $css_id    = $nav_item->css_id != '' ? "id='$nav_item->css_id'" : "";

                $has_child = '';

                if ($nav_item->child_items->count() > 0 && $currLevel == 0) {
                    $has_child = $icon_type == 'down' ? ' <i class="bi bi-chevron-down"></i>' : ' <i class="bi bi-chevron-right"></i>';
                } else if ($nav_item->child_items->count() > 0 && $currLevel == 1) {
                    $has_child = ' <i class="bi bi-chevron-right"></i>';
                }

                echo '<li class="nav-item"><a target="' . $target . '" href="' . $url . '" ' . $css_class . ' ' . $css_id . '>' . $icon . ' ' . $nav_item->translation->name . ' ' . $has_child . '</a>';

                if ($currLevel > $prevLevel) {
                    $prevLevel = $currLevel;
                }

                $currLevel++;
                buildNavigation($navigation_items, $main_class, $nav_link_class, $dropdown_1_class, $dropdown_2_class, $icon_type, $nav_item->id, $currLevel, $prevLevel);
                $currLevel--;
            }
        }
        if ($currLevel == $prevLevel) {
            echo "</li> </ul>";
        }

    }
}

if (!function_exists('get_array_option')) {
    function get_array_option($name, $key = '', $optional = '') {
        if ($key == '') {
            if (session('language') == '') {
                $key = get_option('language');
                session(['language' => $key]);
            } else {
                $key = session('language');
            }
        }
        $setting = DB::table('settings')->where('name', $name)->get();
        if (!$setting->isEmpty()) {

            $value = $setting[0]->value;
            if (@unserialize($value) !== false) {
                $value = @unserialize($setting[0]->value);

                return isset($value[$key]) ? $value[$key] : $value[array_key_first($value)];
            }

            return $value;
        }
        return $optional;

    }
}

if (!function_exists('get_array_data')) {
    function get_array_data($data, $key = '') {
        if ($key == '') {
            if (session('language') == '') {
                $key = get_option('language');
                session(['language' => $key]);
            } else {
                $key = session('language');
            }
        }

        if (@unserialize($data) !== false) {
            $value = @unserialize($data);
            return isset($value[$key]) ? $value[$key] : $value[array_key_first($value)];
        }

        return $data;

    }
}

if (!function_exists('update_option')) {
    function update_option($name, $value) {
        date_default_timezone_set(get_option('timezone', 'Asia/Dhaka'));

        $data               = array();
        $data['value']      = $value;
        $data['updated_at'] = \Carbon\Carbon::now();
        if (\App\Models\Setting::where('name', $name)->exists()) {
            \App\Models\Setting::where('name', $name)->update($data);
        } else {
            $data['name']       = $name;
            $data['created_at'] = \Carbon\Carbon::now();
            \App\Models\Setting::insert($data);
        }
        Cache::put($name, $value);
    }
}

if (!function_exists('timezone_list')) {

    function timezone_list() {
        $zones_array = array();
        $timestamp   = time();
        foreach (timezone_identifiers_list() as $key => $zone) {
            date_default_timezone_set($zone);
            $zones_array[$key]['ZONE'] = $zone;
            $zones_array[$key]['GMT']  = 'UTC/GMT ' . date('P', $timestamp);
        }
        return $zones_array;
    }

}

if (!function_exists('create_timezone_option')) {

    function create_timezone_option($old = "") {
        $option    = "";
        $timestamp = time();
        foreach (timezone_identifiers_list() as $key => $zone) {
            date_default_timezone_set($zone);
            $selected = $old == $zone ? "selected" : "";
            $option .= '<option value="' . $zone . '"' . $selected . '>' . 'GMT ' . date('P', $timestamp) . ' ' . $zone . '</option>';
        }
        echo $option;
    }

}

if (!function_exists('get_country_list')) {
    function get_country_list($old_data = '') {
        if ($old_data == '') {
            echo file_get_contents(app_path() . '/Helpers/country.txt');
        } else {
            $pattern      = '<option value="' . $old_data . '">';
            $replace      = '<option value="' . $old_data . '" selected="selected">';
            $country_list = file_get_contents(app_path() . '/Helpers/country.txt');
            $country_list = str_replace($pattern, $replace, $country_list);
            echo $country_list;
        }
    }
}

if (!function_exists('decimalPlace')) {
    function decimalPlace($number, $symbol = '', $format = '') {

        if ($symbol == '') {
            return money_format_2($number, $format);
        }

        if (get_currency_position() == 'right') {
            return money_format_2($number, $format) . $symbol;
        } else {
            return $symbol . money_format_2($number, $format);
        }

    }

}

/* Method use for Global amount only */
if (!function_exists('g_decimal_place')) {
    function g_decimal_place($number, $symbol = '', $format = '') {

        if ($symbol == '') {
            return money_format_2($number, $format);
        }

        if ($currency_position == 'left') {
            return $symbol . ' ' . money_format_2($number, $format);
        } else {
            return money_format_2($number, $format) . ' ' . $symbol;
        }

    }
}

if (!function_exists('money_format_2')) {
    function money_format_2($floatcurr, $curr = 'USD') {
        $currencies['ARS'] = array(2, ',', '.'); //  Argentine Peso
        $currencies['AMD'] = array(2, '.', ','); //  Armenian Dram
        $currencies['AWG'] = array(2, '.', ','); //  Aruban Guilder
        $currencies['AUD'] = array(2, '.', ' '); //  Australian Dollar
        $currencies['BSD'] = array(2, '.', ','); //  Bahamian Dollar
        $currencies['BHD'] = array(3, '.', ','); //  Bahraini Dinar
        $currencies['BDT'] = array(2, '.', ','); //  Bangladesh, Taka
        $currencies['BZD'] = array(2, '.', ','); //  Belize Dollar
        $currencies['BMD'] = array(2, '.', ','); //  Bermudian Dollar
        $currencies['BOB'] = array(2, '.', ','); //  Bolivia, Boliviano
        $currencies['BAM'] = array(2, '.', ','); //  Bosnia and Herzegovina, Convertible Marks
        $currencies['BWP'] = array(2, '.', ','); //  Botswana, Pula
        $currencies['BRL'] = array(2, ',', '.'); //  Brazilian Real
        $currencies['BND'] = array(2, '.', ','); //  Brunei Dollar
        $currencies['CAD'] = array(2, '.', ','); //  Canadian Dollar
        $currencies['KYD'] = array(2, '.', ','); //  Cayman Islands Dollar
        $currencies['CLP'] = array(0, '', '.'); //  Chilean Peso
        $currencies['CNY'] = array(2, '.', ','); //  China Yuan Renminbi
        $currencies['COP'] = array(2, ',', '.'); //  Colombian Peso
        $currencies['CRC'] = array(2, ',', '.'); //  Costa Rican Colon
        $currencies['HRK'] = array(2, ',', '.'); //  Croatian Kuna
        $currencies['CUC'] = array(2, '.', ','); //  Cuban Convertible Peso
        $currencies['CUP'] = array(2, '.', ','); //  Cuban Peso
        $currencies['CYP'] = array(2, '.', ','); //  Cyprus Pound
        $currencies['CZK'] = array(2, '.', ','); //  Czech Koruna
        $currencies['DKK'] = array(2, ',', '.'); //  Danish Krone
        $currencies['DOP'] = array(2, '.', ','); //  Dominican Peso
        $currencies['XCD'] = array(2, '.', ','); //  East Caribbean Dollar
        $currencies['EGP'] = array(2, '.', ','); //  Egyptian Pound
        $currencies['SVC'] = array(2, '.', ','); //  El Salvador Colon
        $currencies['ATS'] = array(2, ',', '.'); //  Euro
        $currencies['BEF'] = array(2, ',', '.'); //  Euro
        $currencies['DEM'] = array(2, ',', '.'); //  Euro
        $currencies['EEK'] = array(2, ',', '.'); //  Euro
        $currencies['ESP'] = array(2, ',', '.'); //  Euro
        $currencies['EUR'] = array(2, ',', '.'); //  Euro
        $currencies['FIM'] = array(2, ',', '.'); //  Euro
        $currencies['FRF'] = array(2, ',', '.'); //  Euro
        $currencies['GRD'] = array(2, ',', '.'); //  Euro
        $currencies['IEP'] = array(2, ',', '.'); //  Euro
        $currencies['ITL'] = array(2, ',', '.'); //  Euro
        $currencies['LUF'] = array(2, ',', '.'); //  Euro
        $currencies['NLG'] = array(2, ',', '.'); //  Euro
        $currencies['PTE'] = array(2, ',', '.'); //  Euro
        $currencies['GHC'] = array(2, '.', ','); //  Ghana, Cedi
        $currencies['GIP'] = array(2, '.', ','); //  Gibraltar Pound
        $currencies['GTQ'] = array(2, '.', ','); //  Guatemala, Quetzal
        $currencies['HNL'] = array(2, '.', ','); //  Honduras, Lempira
        $currencies['HKD'] = array(2, '.', ','); //  Hong Kong Dollar
        $currencies['HUF'] = array(0, '', '.'); //  Hungary, Forint
        $currencies['ISK'] = array(0, '', '.'); //  Iceland Krona
        $currencies['INR'] = array(2, '.', ','); //  Indian Rupee
        $currencies['IDR'] = array(2, ',', '.'); //  Indonesia, Rupiah
        $currencies['IRR'] = array(2, '.', ','); //  Iranian Rial
        $currencies['JMD'] = array(2, '.', ','); //  Jamaican Dollar
        $currencies['JPY'] = array(0, '', ','); //  Japan, Yen
        $currencies['JOD'] = array(3, '.', ','); //  Jordanian Dinar
        $currencies['KES'] = array(2, '.', ','); //  Kenyan Shilling
        $currencies['KWD'] = array(3, '.', ','); //  Kuwaiti Dinar
        $currencies['LVL'] = array(2, '.', ','); //  Latvian Lats
        $currencies['LBP'] = array(0, '', ' '); //  Lebanese Pound
        $currencies['LTL'] = array(2, ',', ' '); //  Lithuanian Litas
        $currencies['MKD'] = array(2, '.', ','); //  Macedonia, Denar
        $currencies['MYR'] = array(2, '.', ','); //  Malaysian Ringgit
        $currencies['MTL'] = array(2, '.', ','); //  Maltese Lira
        $currencies['MUR'] = array(0, '', ','); //  Mauritius Rupee
        $currencies['MXN'] = array(2, '.', ','); //  Mexican Peso
        $currencies['MZM'] = array(2, ',', '.'); //  Mozambique Metical
        $currencies['NPR'] = array(2, '.', ','); //  Nepalese Rupee
        $currencies['ANG'] = array(2, '.', ','); //  Netherlands Antillian Guilder
        $currencies['ILS'] = array(2, '.', ','); //  New Israeli Shekel
        $currencies['TRY'] = array(2, '.', ','); //  New Turkish Lira
        $currencies['NZD'] = array(2, '.', ','); //  New Zealand Dollar
        $currencies['NOK'] = array(2, ',', '.'); //  Norwegian Krone
        $currencies['PKR'] = array(2, '.', ','); //  Pakistan Rupee
        $currencies['PEN'] = array(2, '.', ','); //  Peru, Nuevo Sol
        $currencies['UYU'] = array(2, ',', '.'); //  Peso Uruguayo
        $currencies['PHP'] = array(2, '.', ','); //  Philippine Peso
        $currencies['PLN'] = array(2, '.', ' '); //  Poland, Zloty
        $currencies['GBP'] = array(2, '.', ','); //  Pound Sterling
        $currencies['OMR'] = array(3, '.', ','); //  Rial Omani
        $currencies['RON'] = array(2, ',', '.'); //  Romania, New Leu
        $currencies['ROL'] = array(2, ',', '.'); //  Romania, Old Leu
        $currencies['RUB'] = array(2, ',', '.'); //  Russian Ruble
        $currencies['SAR'] = array(2, '.', ','); //  Saudi Riyal
        $currencies['SGD'] = array(2, '.', ','); //  Singapore Dollar
        $currencies['SKK'] = array(2, ',', ' '); //  Slovak Koruna
        $currencies['SIT'] = array(2, ',', '.'); //  Slovenia, Tolar
        $currencies['ZAR'] = array(2, '.', ' '); //  South Africa, Rand
        $currencies['KRW'] = array(0, '', ','); //  South Korea, Won
        $currencies['SZL'] = array(2, '.', ', '); //  Swaziland, Lilangeni
        $currencies['SEK'] = array(2, ',', '.'); //  Swedish Krona
        $currencies['CHF'] = array(2, '.', '\''); //  Swiss Franc
        $currencies['TZS'] = array(2, '.', ','); //  Tanzanian Shilling
        $currencies['THB'] = array(2, '.', ','); //  Thailand, Baht
        $currencies['TOP'] = array(2, '.', ','); //  Tonga, Paanga
        $currencies['AED'] = array(2, '.', ','); //  UAE Dirham
        $currencies['UAH'] = array(2, ',', ' '); //  Ukraine, Hryvnia
        $currencies['USD'] = array(2, '.', ','); //  US Dollar
        $currencies['VUV'] = array(0, '', ','); //  Vanuatu, Vatu
        $currencies['VEF'] = array(2, ',', '.'); //  Venezuela Bolivares Fuertes
        $currencies['VEB'] = array(2, ',', '.'); //  Venezuela, Bolivar
        $currencies['VND'] = array(0, '', '.'); //  Viet Nam, Dong
        $currencies['ZWD'] = array(2, '.', ' '); //  Zimbabwe Dollar
        $currencies['XOF'] = array(2, '.', ' '); //  West African CFA franc

        if (array_key_exists($curr, $currencies)) {
            return number_format($floatcurr, $currencies[$curr][0], $currencies[$curr][1], $currencies[$curr][2]);
        } else {
            return number_format($floatcurr, $currencies['USD'][0], $currencies['USD'][1], $currencies['USD'][2]);
        }

    }
}

if (!function_exists('formatinr')) {
    // custom function to generate: ##,##,###.##
    function formatinr($input) {
        $dec = "";
        $pos = strpos($input, ".");
        if ($pos === FALSE) {
            //no decimals
        } else {
            //decimals
            $dec   = substr(round(substr($input, $pos), 2), 1);
            $input = substr($input, 0, $pos);
        }
        $num   = substr($input, -3); // get the last 3 digits
        $input = substr($input, 0, -3); // omit the last 3 digits already stored in $num
        // loop the process - further get digits 2 by 2
        while (strlen($input) > 0) {
            $num   = substr($input, -2) . "," . $num;
            $input = substr($input, 0, -2);
        }
        return $num . $dec;
    }
}

if (!function_exists('load_language')) {
    function load_language($active = '') {
        $path    = resource_path() . "/language";
        $files   = scandir($path);
        $options = "";

        foreach ($files as $file) {
            $name = pathinfo($file, PATHINFO_FILENAME);
            if ($name == "." || $name == "" || $name == "language") {
                continue;
            }

            $selected = "";
            if ($active == $name) {
                $selected = "selected";
            } else {
                $selected = "";
            }

            $options .= "<option value='$name' $selected>" . $name . "</option>";

        }
        echo $options;
    }
}

if (!function_exists('get_language_list')) {
    function get_language_list() {
        $path  = resource_path() . "/language";
        $files = scandir($path);
        $array = array();

        foreach ($files as $file) {
            $name = pathinfo($file, PATHINFO_FILENAME);
            if ($name == "." || $name == "" || $name == "language" || $name == "flags") {
                continue;
            }

            $array[] = $name;

        }
        return $array;
    }
}

if (!function_exists('process_string')) {

    function process_string($search_replace, $string) {
        $result = $string;
        foreach ($search_replace as $key => $value) {
            $result = str_replace($key, $value, $result);
        }
        return $result;
    }

}

if (!function_exists('permission_list')) {
    function permission_list() {

        $permission_list = \App\Models\AccessControl::where("role_id", Auth::user()->role_id)
            ->pluck('permission')->toArray();
        return $permission_list;
    }
}

if (!function_exists('get_currency_list')) {
    function get_currency_list($old_data = '', $serialize = false) {
        $currency_list = file_get_contents(app_path() . '/Helpers/currency.txt');

        if ($old_data == "") {
            echo $currency_list;
        } else {
            if ($serialize == true) {
                $old_data = unserialize($old_data);
                for ($i = 0; $i < count($old_data); $i++) {
                    $pattern       = '<option value="' . $old_data[$i] . '">';
                    $replace       = '<option value="' . $old_data[$i] . '" selected="selected">';
                    $currency_list = str_replace($pattern, $replace, $currency_list);
                }
                echo $currency_list;
            } else {
                $pattern       = '<option value="' . $old_data . '">';
                $replace       = '<option value="' . $old_data . '" selected="selected">';
                $currency_list = str_replace($pattern, $replace, $currency_list);
                echo $currency_list;
            }
        }
    }
}

if (!function_exists('get_currency_symbol')) {
    function get_currency_symbol($currency_code) {
        include app_path() . '/Helpers/currency_symbol.php';

        if (array_key_exists($currency_code, $currency_symbols)) {
            return $currency_symbols[$currency_code];
        }
        return $currency_code;

    }
}

if (!function_exists('status')) {
    function status($status) {
        if ($status == 0) {
            return "<span class='badge badge-danger'>" . _lang('Deactivated') . "</span>";
        } else if ($status == 1) {
            return "<span class='badge badge-success'>" . _lang('Active') . "</span>";
        }
    }
}

if (!function_exists('transaction_status')) {
    function transaction_status($status) {
        if ($status == 0) {
            return "<span class='badge badge-warning'>" . _lang('Pending') . "</span>";
        } else if ($status == 1) {
            return "<span class='badge badge-danger'>" . _lang('Cancelled') . "</span>";
        } else if ($status == 2) {
            return "<span class='badge badge-success'>" . _lang('Completed') . "</span>";
        }
    }
}

if (!function_exists('show_status')) {
    function show_status($value, $status) {
        return "<span class='badge badge-$status'>" . $value . "</span>";
    }
}

if (!function_exists('user_status')) {
    function user_status($status) {
        if ($status == 1) {
            return "<span class='badge badge-success'>" . _lang('Active') . "</span>";
        } else if ($status == 0) {
            return "<span class='badge badge-danger'>" . _lang('In Active') . "</span>";
        }
    }
}

//Request Count
if (!function_exists('request_count')) {
    function request_count($request, $html = false, $class = "sidebar-notification-count") {
        if ($request == 'pending_loans') {
            $notification_count = \App\Models\Loan::where('status', 0)->count();
        } else if ($request == 'deposit_requests') {
            $notification_count = \App\Models\DepositRequest::where('status', 0)->count();
        } else if ($request == 'withdraw_requests') {
            $notification_count = \App\Models\WithdrawRequest::where('status', 0)->count();
        } else if ($request == 'member_requests') {
            $notification_count = \App\Models\Member::withoutGlobalScopes(['status'])->where('status', 0)->count();
        }

        if ($html == false) {
            return $notification_count;
        }

        if ($notification_count > 0) {
            return '<span class="' . $class . '">' . $notification_count . '</span>';
        }

    }
}

if (!function_exists('file_icon')) {
    function file_icon($mime_type) {
        static $font_awesome_file_icon_classes = [
            // Images
            'image'                                                                     => 'fa-file-image',
            // Audio
            'audio'                                                                     => 'fa-file-audio',
            // Video
            'video'                                                                     => 'fa-file-video',
            // Documents
            'application/pdf'                                                           => 'fa-file-pdf',
            'application/msword'                                                        => 'fa-file-word',
            'application/vnd.ms-word'                                                   => 'fa-file-word',
            'application/vnd.oasis.opendocument.text'                                   => 'fa-file-word',
            'application/vnd.openxmlformats-officedocument.wordprocessingml'            => 'fa-file-word',
            'application/vnd.ms-excel'                                                  => 'fa-file-excel',
            'application/vnd.openxmlformats-officedocument.spreadsheetml'               => 'fa-file-excel',
            'application/vnd.oasis.opendocument.spreadsheet'                            => 'fa-file-excel',
            'application/vnd.ms-powerpoint'                                             => 'fa-file-powerpoint',
            'application/vnd.openxmlformats-officedocument.presentationml'              => 'ffa-file-powerpoint',
            'application/vnd.oasis.opendocument.presentation'                           => 'fa-file-powerpoint',
            'text/plain'                                                                => 'fa-file-alt',
            'text/html'                                                                 => 'fa-file-code',
            'application/json'                                                          => 'fa-file-code',
            'application/vnd.openxmlformats-officedocument.wordprocessingml.document'   => 'fa-file-word',
            'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'         => 'fa-file-excel',
            'application/vnd.openxmlformats-officedocument.presentationml.presentation' => 'fa-file-powerpoint',
            // Archives
            'application/gzip'                                                          => 'fa-file-archive',
            'application/zip'                                                           => 'fa-file-archive',
            'application/x-zip-compressed'                                              => 'fa-file-archive',
            // Misc
            'application/octet-stream'                                                  => 'fa-file-archive',
        ];

        if (isset($font_awesome_file_icon_classes[$mime_type])) {
            return $font_awesome_file_icon_classes[$mime_type];
        }

        $mime_group = explode('/', $mime_type, 2)[0];
        return (isset($font_awesome_file_icon_classes[$mime_group])) ? $font_awesome_file_icon_classes[$mime_group] : 'fa-file';
    }
}

if (!function_exists('update_currency_exchange_rate')) {
    function update_currency_exchange_rate() {
        date_default_timezone_set(get_option('timezone', 'Asia/Dhaka'));

        $start = new \Carbon\Carbon(get_option('currency_update_time', date("Y-m-d H:i:s", strtotime('-24 hours', time()))));
        $end   = \Carbon\Carbon::now();

        $last_run = $start->diffInHours($end);

        if ($last_run >= 12) {
            // Set API Endpoint and API key
            $endpoint   = 'latest';
            $access_key = get_option('fixer_api_key');

            // Initialize CURL:
            $ch = curl_init('http://data.fixer.io/api/' . $endpoint . '?access_key=' . $access_key . '');
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

            // Store the data:
            $json = curl_exec($ch);
            curl_close($ch);

            // Decode JSON response:
            $exchangeRates = json_decode($json, true);

            if ($exchangeRates['success'] == false) {
                return false;
            }

            $base_currency = $exchangeRates['base'];

            $currency_rates = array();

            foreach ($exchangeRates['rates'] as $currency => $rate) {
                $currency_rates[] = array(
                    "currency"   => $currency,
                    "rate"       => $rate,
                    "created_at" => date('Y-m-d H:i:s'),
                    "updated_at" => date('Y-m-d H:i:s'),
                );
                //echo $currency." - ".$rate."<br>";
            }

            DB::beginTransaction();

            \App\Models\Currency::getQuery()->delete();

            DB::statement("ALTER TABLE currency_rates AUTO_INCREMENT = 1");

            \App\Models\Currency::insert($currency_rates);

            //Store Last Update time
            update_option("currency_update_time", \Carbon\Carbon::now());

            DB::commit();
        }
    }
}

if (!function_exists('convert_currency')) {
    function convert_currency($from_currency, $to_currency, $amount) {
        if ($from_currency == $to_currency || $amount == 0) {
            return (double) $amount;
        }
        $currency1 = \App\Models\Currency::where('name', $from_currency)->first()->exchange_rate;
        $currency2 = \App\Models\Currency::where('name', $to_currency)->first()->exchange_rate;

        $converted_output = ($amount / $currency1) * $currency2;
        return $converted_output;
    }
}

if (!function_exists('convert_currency_2')) {
    function convert_currency_2($currency1_rate, $currency2_rate, $amount) {
        $currency1 = $currency1_rate;
        $currency2 = $currency2_rate;

        $converted_output = ($amount / $currency1) * $currency2;
        return $converted_output;
    }
}

if (!function_exists('get_country_codes')) {
    function get_country_codes() {
        return json_decode(file_get_contents(app_path() . '/Helpers/country.json'), true);
    }
}

if (!function_exists('xss_clean')) {
    function xss_clean($data) {
        // Fix &entity\n;
        $data = str_replace(array('&amp;', '&lt;', '&gt;'), array('&amp;amp;', '&amp;lt;', '&amp;gt;'), $data);
        $data = preg_replace('/(&#*\w+)[\x00-\x20]+;/u', '$1;', $data);
        $data = preg_replace('/(&#x*[0-9A-F]+);*/iu', '$1;', $data);
        $data = html_entity_decode($data, ENT_COMPAT, 'UTF-8');

        // Remove any attribute starting with "on" or xmlns
        $data = preg_replace('#(<[^>]+?[\x00-\x20"\'])(?:on|xmlns)[^>]*+>#iu', '$1>', $data);

        // Remove javascript: and vbscript: protocols
        $data = preg_replace('#([a-z]*)[\x00-\x20]*=[\x00-\x20]*([`\'"]*)[\x00-\x20]*j[\x00-\x20]*a[\x00-\x20]*v[\x00-\x20]*a[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iu', '$1=$2nojavascript...', $data);
        $data = preg_replace('#([a-z]*)[\x00-\x20]*=([\'"]*)[\x00-\x20]*v[\x00-\x20]*b[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iu', '$1=$2novbscript...', $data);
        $data = preg_replace('#([a-z]*)[\x00-\x20]*=([\'"]*)[\x00-\x20]*-moz-binding[\x00-\x20]*:#u', '$1=$2nomozbinding...', $data);

        // Only works in IE: <span style="width: expression(alert('Ping!'));"></span>
        $data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?expression[\x00-\x20]*\([^>]*+>#i', '$1>', $data);
        $data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?behaviour[\x00-\x20]*\([^>]*+>#i', '$1>', $data);
        $data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:*[^>]*+>#iu', '$1>', $data);

        // Remove namespaced elements (we do not need them)
        $data = preg_replace('#</*\w+:\w[^>]*+>#i', '', $data);

        do {
            // Remove really unwanted tags
            $old_data = $data;
            $data     = preg_replace('#</*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|i(?:frame|layer)|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|title|xml)[^>]*+>#i', '', $data);
        } while ($old_data !== $data);

        // we are done...
        return $data;
    }
}

if (!function_exists('get_account_details')) {
    function get_account_details($member_id) {

        $accounts = SavingsAccount::select('savings_accounts.*', DB::raw("((SELECT IFNULL(SUM(amount),0)
        FROM transactions WHERE dr_cr = 'cr' AND status = 2 AND savings_account_id = savings_accounts.id) -
        (SELECT IFNULL(SUM(amount),0) FROM transactions WHERE dr_cr = 'dr'
        AND status != 1 AND savings_account_id = savings_accounts.id)) as balance"), DB::raw("(SELECT IFNULL(SUM(guarantors.amount),0)
        FROM guarantors JOIN loans ON loans.id=guarantors.loan_id WHERE (loans.status = 0 OR loans.status = 1)
        AND guarantors.savings_account_id=savings_accounts.id) as blocked_amount"))
            ->with(['savings_type', 'savings_type.currency'])
            ->where('savings_accounts.member_id', $member_id)
            ->orderBy('id', 'desc')
            ->get();

        return $accounts;
    }
}

if (!function_exists('get_account_balance')) {
    function get_account_balance($account_id, $member_id) {
        $blockedAmount = App\Models\Guarantor::join('loans', 'loans.id', 'guarantors.loan_id')
            ->whereRaw('loans.status = 0 OR loans.status = 1')
            ->where('guarantors.member_id', $member_id)
            ->where('guarantors.savings_account_id', $account_id)
            ->sum('guarantors.amount');

        $result = DB::select("SELECT ((SELECT IFNULL(SUM(amount),0) FROM transactions WHERE dr_cr = 'cr'
	    AND member_id = $member_id AND savings_account_id = $account_id AND status = 2) - (SELECT IFNULL(SUM(amount),0) FROM transactions
	    WHERE dr_cr = 'dr' AND member_id = $member_id AND savings_account_id = $account_id AND status != 1)) as balance");

        return $result[0]->balance - $blockedAmount;
    }
}

if (!function_exists('get_blocked_balance')) {

    function get_blocked_balance($account_id, $member_id) {

        $blockedAmount = App\Models\Guarantor::join('loans', 'loans.id', 'guarantors.loan_id')
            ->whereRaw('loans.status = 0 OR loans.status = 1')
            ->where('guarantors.member_id', $member_id)
            ->where('guarantors.savings_account_id', $account_id)
            ->sum('guarantors.amount');

        return $blockedAmount;
    }

}

// convert seconds into time
if (!function_exists('time_from_seconds')) {
    function time_from_seconds($seconds) {
        $h = floor($seconds / 3600);
        $m = floor(($seconds % 3600) / 60);
        $s = $seconds - ($h * 3600) - ($m * 60);
        return sprintf('%02d:%02d:%02d', $h, $m, $s);
    }
}

/* Intelligent Functions */
if (!function_exists('get_language')) {
    function get_language($force = false) {

        $language = $force == false ? session('language') : '';

        if ($language == '') {
            $language = Cache::get('language');
        }

        if ($language == '') {
            $language = get_option('language');
            if ($language == '') {
                \Cache::put('language', 'language');
            } else {
                \Cache::put('language', $language);
            }

        }
        return $language;
    }
}

if (!function_exists('get_currency_position')) {
    function get_currency_position() {
        $currency_position = Cache::get('currency_position');

        if ($currency_position == '') {
            $currency_position = get_option('currency_position');
            \Cache::put('currency_position', $currency_position);
        }

        return $currency_position;
    }
}

if (!function_exists('base_currency_id')) {
    function base_currency_id() {
        $base_currency_id = Cache::get('base_currency_id');

        if ($base_currency_id == '') {
            $currency = \App\Models\Currency::where("base_currency", 1)->first();
            if ($currency) {
                $base_currency_id = $currency->id;
                \Cache::put('base_currency_id', $base_currency_id);
            }
        }

        if (!$base_currency_id) {
            $currency         = \App\Models\Currency::all()->first();
            $base_currency_id = $currency->id;
            \Cache::put('base_currency_id', $base_currency_id);
        }
        return $base_currency_id;
    }
}

if (!function_exists('get_base_currency')) {
    function get_base_currency() {
        $base_currency = Cache::get('base_currency');

        if ($base_currency == '') {
            $currency      = \App\Models\Currency::where("base_currency", 1)->first();
            $base_currency = $currency->name;
            \Cache::put('base_currency', $base_currency);
        }

        if (!$base_currency) {
            $currency      = \App\Models\Currency::all()->first();
            $base_currency = $currency->name;
            \Cache::put('base_currency', $base_currency);
        }
        return $base_currency;
    }
}

if (!function_exists('get_currency')) {
    function get_currency($currency_id) {
        $currency = \App\Models\Currency::find($currency_id);
        return $currency;
    }
}

if (!function_exists('currency')) {
    function currency($currency = '') {
        if ($currency == '') {
            $currency = get_base_currency();
        }
        return html_entity_decode(get_currency_symbol($currency), ENT_QUOTES, 'UTF-8');
    }
}

if (!function_exists('get_date_format')) {
    function get_date_format() {
        $date_format = Cache::get('date_format');

        if ($date_format == '') {
            $date_format = get_option('date_format', 'Y-m-d');
            \Cache::put('date_format', $date_format);
        }

        return $date_format;
    }
}

if (!function_exists('get_time_format')) {
    function get_time_format() {
        $time_format = Cache::get('time_format');

        if ($time_format == '') {
            $time_format = get_option('time_format', 'H:i');
            \Cache::put('time_format', $time_format);
        }

        $time_format = $time_format == 24 ? 'H:i' : 'h:i A';

        return $time_format;
    }
}

if (!function_exists('processShortCode')) {
    function processShortCode($body, $replaceData = []) {
        $message = $body;
        foreach ($replaceData as $key => $value) {
            $message = str_replace('{{' . $key . '}}', $value, $message);
        }
        return $message;
    }
}

if (!function_exists('ignoreRoutes')) {
    function ignoreRoutes($route) {
        $notAllowed = [
            url('profile'),
            url('administration'),
            url('admin/administration'),
            url('admin/interest_calculation'),
            url('admin/permission'),
            url('admin'),
            url('reports'),
        ];

        if (in_array(url($route), $notAllowed)) {
            return false;
        }
        return true;

    }
}

if (!function_exists('generate_input_field')) {
    function generate_input_field($field, $initialValue = null) {
        $field_name = $field->field_name;
        $field_type = $field->field_type;
        $validation = $field->is_required;

        $value = $initialValue == null ? old('custom_fields.' . $field_name) : $initialValue;

        $field_html = '';
        if ($field_type == 'text') {
            $field_html = '<input type="text" class="form-control" name="custom_fields[' . $field_name . ']" value="' . $value . '" placeholder="' . $field_name . '"' . $validation . '>';
        } elseif ($field_type == 'textarea') {
            $field_html = '<textarea class="form-control" name="custom_fields[' . $field_name . ']" placeholder="' . $field_name . '"' . $validation . '>' . $value . '</textarea>';
        } elseif ($field_type == 'number') {
            $field_html = '<input type="number" class="form-control" name="custom_fields[' . $field_name . ']" value="' . $value . '" placeholder="' . $field_name . '"' . $validation . '>';
        } elseif ($field_type == 'select') {
            $selectOptions = '<option value="">' . _lang('Select One') . '</option>';
            foreach (explode(",", $field->default_value) as $option) {
                $option = trim($option);
                $selectOptions .= "<option value='$option'>$option</option>";
            }
            $field_html = '<select class="form-control auto-select" name="custom_fields[' . $field_name . ']" data-selected="' . $value . '" data-placeholder="' . $field_name . '"' . $validation . '>' . $selectOptions . '</select>';
        } elseif ($field_type == 'file') {
            if ($initialValue == null) {
                $field_html = '<input type="file" class="trickycode-file" name="custom_fields[' . $field_name . ']" data-value="' . $value . '" data-placeholder="' . $field_name . '"' . $validation . '>';
            } else {
                $field_html = '<input type="file" class="trickycode-file" name="custom_fields[' . $field_name . ']" data-value="' . $value . '" data-placeholder="' . $field_name . '">';
            }
        }

        return $field_html;
    }
}

if (!function_exists('generate_custom_field_validation')) {
    function generate_custom_field_validation($custom_fields, $edit = false) {
        $validationRules    = [];
        $validationMessages = [];

        if (!empty($custom_fields)) {
            foreach ($custom_fields as $field) {
               
                $validationRules['custom_fields.' . $field->field_name] = $field->is_required;

                if ($field->field_type == 'file') {
					$file_required = $field->is_required;
					if($edit == true){
						$file_required = 'nullable';
					}
                    $max_size                                               = $field->max_size * 1024;
                    $validationRules['custom_fields.' . $field->field_name] = $file_required . "|mimes:jpeg,jpg,png,pdf|max:$max_size";
                }

                if ($field->is_required == 'required') {
                    $validationMessages['custom_fields.' . $field->field_name . '.required'] = 'The ' . $field->field_name . ' is required';
                }

                if ($field->field_type == 'file') {
                    $validationMessages['custom_fields.' . $field->field_name . '.mimes'] = 'The ' . $field->field_name . ' must be a file of type: jpeg, jpg, png, pdf';
                    $validationMessages['custom_fields.' . $field->field_name . '.max']   = 'The ' . $field->field_name . ' may not be greater than ' . $field->max_size . ' MB';
                }
            }
        }

        return [
            'rules'    => $validationRules,
            'messages' => $validationMessages,
        ];

    }
}

// Create function to store custom field data
if (!function_exists('store_custom_field_data')) {
    function store_custom_field_data($custom_fields, $existingData = null) {
        $data = [];
        if (!empty($custom_fields)) {
            foreach ($custom_fields as $field) {
                $field_name = $field->field_name;
                $field_type = $field->field_type;

                if ($field_type == 'file') {
                    if (request()->hasFile('custom_fields.' . $field_name)) {
                        $file      = request()->file('custom_fields.' . $field_name);
                        $file_name = $file->getClientOriginalName();
                        $file_name = str_replace(' ', '_', $file_name);
                        $file_name = time() . md5(uniqid()) . '_' . $file_name;
                        $file->move('public/uploads/media/', $file_name);
                        $field_value = $file_name;
                    } else {
						$field_value = $existingData[$field->field_name]['field_value'] ?? null;
                        //$field_value = null;
                    }
                } else {
                    $field_value = request()->custom_fields[$field_name];
                }

                $data[$field_name] = [
                    'field_name'  => $field_name,
                    'field_type'  => $field_type,
                    'field_value' => $field_value,
                ];
            }
        }
        return $data;

    }
}

if (!function_exists('process_loan_fee')) {
    function process_loan_fee($fee_name, $member_id, $account_id, $amount, $charge, $fee_type, $loan_id) {
        if ($charge <= 0) {
            return;
        }

        if ($fee_type == 1) {
            $charge = ($charge / 100) * $amount;
        }

        $fee                     = new Transaction();
        $fee->trans_date         = now();
        $fee->member_id          = $member_id;
        $fee->savings_account_id = $account_id;
        $fee->amount             = $charge;
        $fee->charge             = $charge;
        $fee->dr_cr              = 'dr';
        $fee->type               = $fee_name;
        $fee->method             = 'Online';
        $fee->status             = 2;
        $fee->created_user_id    = auth()->id();
        $fee->description        = ucwords(str_replace('_', ' ', $fee_name));
        $fee->loan_id            = $loan_id;
        $fee->save();
    }
}

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists