<?php

namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
use App\Models\Role;

abstract class Controller
{
    public static function getRole(){
        if(Auth::check()){
            return (Role::find(Auth::user()->role) === null ? "" : Role::find(Auth::user()->role)->privilages);
        }
        return "";
    }

    public static function getDepartment(){
        if(Auth::check()){
            $list = json_decode(Auth::user()->default_department_id);$hasil = [];
            foreach($list as $l){
                array_push($hasil,$l->department_id);
            }
            return $hasil;
        }
        return [];
    }

    public static function numberToWords($number) {
        $number = floor($number);
        $words = [
            '', 'satu', 'dua', 'tiga', 'empat', 'lima', 'enam', 'tujuh', 'delapan', 'sembilan', 'sepuluh', 'sebelas'
        ];

        if ($number < 12) {
            return $words[$number];
        } else if ($number < 20) {
            return $words[$number - 10] . ' belas';
        } else if ($number < 100) {
            $result = $words[floor($number / 10)] . ' puluh ' . $words[$number % 10];
        } else if ($number < 200) {
            $result = 'seratus ' . self::numberToWords($number - 100);
        } else if ($number < 1000) {
            $result = $words[floor($number / 100)] . ' ratus ' . self::numberToWords($number % 100);
        } else if ($number < 2000) {
            $result = 'seribu ' . self::numberToWords($number - 1000);
        } else if ($number < 1000000) {
            $result = self::numberToWords(floor($number / 1000)) . ' ribu ' . self::numberToWords($number % 1000);
        } else if ($number < 1000000000) {
            $result = self::numberToWords(floor($number / 1000000)) . ' juta ' . self::numberToWords($number % 1000000);
        } else if ($number < 1000000000000) {
            $result = self::numberToWords(floor($number / 1000000000)) . ' milyar ' . self::numberToWords($number % 1000000000);
        } else if ($number < 1000000000000000) {
            $result = self::numberToWords(floor($number / 1000000000000)) . ' triliun ' . self::numberToWords($number % 1000000000000);
        } else {
            return 'Jumlah terlalu besar';
        }

        // Remove double spaces and trim
        return trim(preg_replace('/\s+/', ' ', $result));
    }

    public static function formatNumber($number) {
        if (floor($number) == $number) {
            return number_format($number, 0);
        } else {
            return number_format($number, 2);
        }
    }
}
