<?php

namespace App\Traits;

use App\Models\Company;
use App\Models\Worker;
use CArbon\Carbon;
use Illuminate\Support\Facades\Auth;

trait UserTraits
{
    public function getCurrentUser()
    {
        $id = Auth::user()->id;
        $company_user = Worker::select(
            'workers.email_address',
            'workers.password',
            'workers.first_name',
            'workers.last_name',
            'companies.name as company_name',
            'companies.id as company_id',
            'workers.id',
            'workers.phone_num',
            'workers.is_active',
            'companies.company_tel as contact',
            'companies.type as company_type',
            'companies.zipcode',
            'companies.last_read_request_notifications_at',
            'workers.date_hired')
            ->with('roles:worker_id,role_id,name')
            ->join('company_users', 'company_users.worker_id', "=", 'workers.id')
            ->join('companies', 'companies.id', '=', 'company_users.company_id')
            ->where('workers.id', $id)
            ->first();
        return $company_user;
    }

    public function getCurrentUserCompanyName()
    {
        $id = Auth::user()->id;
        return Company::select('name')
            ->join('company_users', 'company_users.company_id', '=', 'companies.id')
            ->where('company_users.worker_id', $id)
            ->first();

    }

    public function getCurrentUserName()
    {
        return Auth::user()->first_name . ' ' . Auth::user()->last_name;
    }

    public function getGovernmentTax()
    {
        return 10.0;
    }

    public function getServerTodayDate()
    {
        return Carbon::now()->format('Y-m-d');
    }

    public function getCurrentUserRate()
    {
        return Auth::user()->rate ?: 0; // Return 0 if user 'rate' is NULL.
    }
}
