<?php
use App\Models\User;
use App\Models\Central\Tenant;
use Stancl\Tenancy\Facades\Tenancy;
use Illuminate\Support\Facades\Storage;

if (!function_exists('tenant_user')) {
    function tenant_user()
    {
        $base_user = Auth::user();
        return User::where('base_user_id', $base_user->id)->first();
    }
}

if (!function_exists('tenant_id')) {
    function tenant_id()
    {
        $token = request()->bearerToken();
        $parts = explode('|', $token);
        $tenant_id = end($parts);
        return $tenant_id;
    }
}

if (!function_exists('initTenant')) {
    function initTenant()
    {
        $tenant_id = tenant_id();
        $tenant = Tenant::find($tenant_id);
        Tenancy::initialize($tenant);
    }
}

if (!function_exists('killTenant')) {
    function killTenant()
    {
        Tenancy::end();
    }
}

if (!function_exists('saveTenantFile')) {
    function saveTenantFile(string $name)
    {
        $file = request()->file($name);

        if ($file) {
            $extension = $file->getClientOriginalExtension();
            $filename =  uniqid() . '.' . $extension;
            $tenant_id = tenant_id();
            Storage::disk('public')->putFileAs("tenants/$tenant_id/$name", $file, $filename);

            return asset("storage/tenants/$tenant_id/$name/$filename");
        }
    }

}



if (!function_exists('kedebah_tenant_storages')) {
    function kedebah_tenant_storages()
    {
        return  kedebah_storages(). "/tenant";
    }
}

if (!function_exists('kedebah_storages')) {
    function kedebah_storages()
    {
        return  dirname(base_path()) . "/kedebah_storages";
    }
}
