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/dceprojects.corals.io/Corals/modules/ProjectPlan/Classes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/dceprojects.corals.io/Corals/modules/ProjectPlan/Classes/ProjectPlan.php
<?php

namespace Corals\Modules\ProjectPlan\Classes;

use Carbon\Carbon;
use Corals\Modules\ProjectPlan\Classes\Constants\ProjectPlansRoles;
use Corals\Modules\ProjectPlan\DataTables\Scopes\CrewProjectsScope;
use Corals\Modules\ProjectPlan\Models\Project;
use Corals\Modules\ProjectPlan\Models\ProjectCrew;
use Corals\User\Models\Role;
use Corals\User\Models\User;
use Illuminate\Support\Facades\DB;

class ProjectPlan
{
    /**
     * ProjectPlan constructor.
     */
    function __construct()
    {
    }

    public function isPPAdmin(): bool
    {
        if (!user()) {
            return false;
        }

        return user()->hasRole(ProjectPlansRoles::PP_ADMIN) || isSuperUser();
    }


    public function getProjectCrewTotalCost($project, $positionCode = null)
    {
        return $project->crews()
            ->when($positionCode, function ($query, $positionCode) {
                $query->where('position_code', $positionCode);
            })->sum('total_cost');
    }

    public function getCrews()
    {
        return User::whereHas('roles', function ($query) {
            return $query->where('role_id', Role::findByName(ProjectPlansRoles::PP_CREW)->id);
        })->pluck('name', 'id')->toArray();
    }

    /**
     * @param Project $project
     * @param $scheduleCode
     * @return mixed
     */
    public function getScheduleMealsTotalCost($project, $scheduleCode)
    {
        $schedule = $project->schedules()->where('type', $scheduleCode)->first();
        return $schedule ? $schedule->meals()->sum(\DB::raw('cost_per_person * total_number_to_feed')) : 0;
    }

    public function getMealFields($show = false)
    {
        return [
            ($show ? 'meal_time_formatted' : 'meal_time') => [
                'input_type' => 'timePicker',
                'label' => trans('ProjectPlan::attributes.meal.time')
            ],
            'source' => [
                'input_type' => 'text',
                'label' => trans('ProjectPlan::attributes.meal.meal_source')
            ],
            'type' => [
                'input_type' => 'select',
                'input_options' => trans('ProjectPlan::attributes.meal.type_options'),
                'label' => trans('ProjectPlan::attributes.meal.type')
            ],
            ($show ? 'type_time_formatted' : 'type_time') => [
                'input_type' => 'timePicker',
                'label' => trans('ProjectPlan::attributes.meal.type_time')
            ],
            'type_location' => [
                'input_type' => 'text',
                'label' => trans('ProjectPlan::attributes.meal.type_location')
            ],
            'what_is_ordered' => [
                'input_type' => 'text',
                'label' => trans('ProjectPlan::attributes.meal.what_is_ordered')
            ],
            'who_will_pickup' => [
                'input_type' => 'text',
                'label' => trans('ProjectPlan::attributes.meal.who_will_pickup')
            ],
            'total_number_to_feed' => [
                'input_type' => 'number',
                'label' => trans('ProjectPlan::attributes.meal.total_number_to_feed'),
                'attributes' => [
                    'class' => 'total_number_to_feed'
                ]
            ],
            'cost_per_person' => [
                'input_type' => 'number',
                'label' => trans('ProjectPlan::attributes.meal.cost_per_person'),
                'attributes' => [
                    'class' => 'cost_per_person',
                    'step' => '0.01',
                ]
            ],
            'total' => [
                'input_type' => 'number',
                'label' => trans('ProjectPlan::attributes.meal.total'),
                'attributes' => [
                    'class' => 'total',
                    'disabled' => true,
                    'step' => '0.01',
                ]
            ]
        ];
    }

    public function getCrewProjects(User $crew = null)
    {
        if (!$crew) {
            $crew = user();
        }

        $projectQuery = Project::query();
        (new CrewProjectsScope())->apply($projectQuery);
        return $projectQuery->pluck('name', 'id')->toArray();
    }

    public  function getProjects(User $user = null)
    {
      return  Project::query()
            ->when($user, function ($query) use ($user) {
                $query->whereHas('crews', function ($subQuery) use ($user) {
                    $subQuery->where('id', $user->id);
                });
            })
            ->pluck('name', 'id')
            ->toArray();
    }

}

Spamworldpro Mini