<?php
namespace App;

use DateTime;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\DB;

class Helper
{

    public static function getOnlineArrahnConnection()
    {

        $online_arrahn_connection = array_filter(config('database.connections'), function ($connection) {
            if ($connection['database'] === config('tennant_database.master_db')) {
                return $connection;
            }
        });

        return array_keys($online_arrahn_connection)[0];
    }
    public static function formatNumber($amount)
    {
        $formattedAmount = number_format($amount, 2, '.', ',');

        return $formattedAmount;
    }

    public static function formatDate($date_string)
    {
        return (new DateTime($date_string))->format("d-m-Y");
    }

    public static function getActiveCawanganDbConnection()
    {
        $queryActiveCawanganDbConnection = function () {
            $all_active_db_keys = array_filter(array_keys(config('database.connections')), function ($connection) {
                try {
                    DB::connection($connection)->getPdo();
                    return true;
                } catch (\Throwable $th) {
                    return false;
                }
            });

            $non_cawangan_database = ['lelong', config('tennant_database.master_db'), config('tennant_database.kaunter_db')];

            $all_cawangan_db = array_filter($all_active_db_keys, function ($db_key) use ($non_cawangan_database) {
                $isNotCawangan = in_array(config('database.connections.' . $db_key . '.database'), $non_cawangan_database);

                if ($isNotCawangan) {
                    return false;
                }

                return true;
            });

            return $all_cawangan_db;

        };

        return $queryActiveCawanganDbConnection();
    }

    public static function getInactiveCawanganDbConnection()
    {
        $queryInactiveCawanganDbConnection = function () {
            $all_inactive_db_keys = array_filter(array_keys(config('database.connections')), function ($connection) {
                try {
                    DB::connection($connection)->getPdo();
                    return false;
                } catch (\Throwable $th) {
                    return true;
                }
            });

            $non_cawangan_database = ['lelong', config('tennant_database.master_db'), config('tennant_database.kaunter_db')];

            $all_cawangan_db = array_filter($all_inactive_db_keys, function ($db_key) use ($non_cawangan_database) {
                $isNotCawangan = in_array(config('database.connections.' . $db_key . '.database'), $non_cawangan_database);
                $isNotCawanganKey = in_array($db_key, $non_cawangan_database);

                if ($isNotCawangan OR $isNotCawanganKey) {
                    return false;
                }


                return true;
            });

            return $all_cawangan_db;

        };

        $all_cawangan_db_connection = array_map(function ($db_connection) {
            return [
                'connection' => $db_connection,
                'database' => config('database.connections.' . $db_connection . '.database'),
            ];
        }, $queryInactiveCawanganDbConnection());

        return $all_cawangan_db_connection;

    }

    public static function getActiveCawangan() {

        return Cawangan::whereIn('mysql', helper::getactivecawangandbconnection())->get();

    }

}
