![]() 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/ |
<?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(); } }