Ngiler SH3LL 360
Home
Information
Create File
Create Folder
:
/
home
/
tbf
/
cursbackend
/
app
/
Helpers
/
Information Server
MySQL :
OFF
Perl :
OFF
CURL :
ON
WGET :
OFF
PKEXEC :
OFF
Directive
Local Value
IP Address
89.40.16.97
System
Linux server.atelieruldeit.ro 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64
User
tbf
PHP Version
7.3.33
Software
Apache
Doc root
Writable
close
Edit File :
reports.php
| Size :
25.99
KB
Copy
<?php use Illuminate\Http\Request; use App\Models\Instance; use App\Models\KeyResult; use App\Models\KeyResultLog; use App\Models\User; use App\Models\Promise; use Carbon\Carbon; function dailyPromisesReport(Request $request, Instance $instance){ $authUser = Auth::user(); $startDate = Carbon::parse($request->start_date)->startOfDay(); $endDate = Carbon::parse($request->end_date)->endOfDay(); $promises = $instance->promises()->whereBetween('created_at', [$startDate, $endDate])->whereNull('reason_not_set')->orWhere('reason_not_set', '!=', Promise::REASON_NO_KR)->get(); // total promises $totalPromises = $promises->count(); // promises set $setPromises = $promises->where('is_set', 1)->count(); // remained promises to be set $remainedPromises = $totalPromises - $setPromises; $remainedPromisesPercent = $totalPromises > 0 ? ($remainedPromises * 100 / $totalPromises) : 0; // completed promises $completedPromises = $promises->whereNotNull('resolved_at')->whereNull('why_not')->count(); // uncompleted promises $uncompletedPromises = $setPromises - $completedPromises; $uncompletedPromisesPercent = $setPromises > 0 ? ($uncompletedPromises * 100 / $setPromises) : 0; // last 3 users who set their promises $lastUsersWithPromiseSet = $promises->where('is_set', 1)->whereNotNull('user_id')->unique('user_id')->sortByDesc('created_at')->take(3) ->map(function ($promise) { return [ 'name' => $promise->user->getFullName(), ]; })->pluck('name'); // last 3 users who completed their promises $lastUsersWithPromiseCompleted = $promises->whereNotNull('resolved_at')->whereNull('why_not')->whereNotNull('user_id')->unique('user_id')->sortByDesc('created_at')->take(3) ->map(function ($promise) { return [ 'name' => $promise->user->getFullName(), ]; })->pluck('name'); $promisesData = $promises->map(function ($promise) use ($authUser) { $user = $promise->user; if($user){ $tags = $user->tags->map(function ($tag) { return [ 'id' => $tag->id, 'name' => $tag->name, 'color_name' => $tag->color ? $tag->color->name : null, 'color_code' => $tag->color ? $tag->color->code : null, ]; })->toArray(); } $keyResultsNames = $promise->key_results->map(function ($keyResult) use ($authUser) { // check if this auth user can see a private objective if($authUser->can('crudAction', User::class) && in_array($keyResult->objective_id, explode(',', $authUser->private_objective_ids))){ return false; } return $keyResult->name; })->filter()->toArray(); return [ 'name' => $promise->name, 'why_not' => $promise->why_not, 'status' => $promise->status(), 'user' => $user ? [ 'id' => $user->id, 'first_name' => $user->first_name, 'last_name' => $user->last_name, 'avatar' => $user->avatar, ] : null, 'key_results_names' => $keyResultsNames ? implode(', ', $keyResultsNames) : null, 'tags' => $user ? $tags : null, 'created_at' => $promise->created_at, ]; })->toArray(); return [ 'remained_promises' => $remainedPromises, 'remained_promises_percent' => $remainedPromisesPercent, 'set_promises' => $setPromises, 'people_working' => $promises->where('is_set', 1)->unique('user_id')->count(), 'set_promise_percent' => $remainedPromisesPercent > 0 ? (100 - $remainedPromisesPercent) : 0, 'completed_promises' => $completedPromises, 'completed_promises_percent' => $uncompletedPromisesPercent > 0 ? (100 - $uncompletedPromisesPercent) : 0, 'uncompleted_promises' => $uncompletedPromises, 'uncompleted_promises_percent' => $uncompletedPromisesPercent, 'last_users_with_promise_set' => $lastUsersWithPromiseSet, 'last_users_with_promise_completed' => $lastUsersWithPromiseCompleted, 'promises' => $promisesData, ]; } // function companyReport(Request $request, Instance $instance){ // $startDate = Carbon::parse($request->start_date)->startOfDay(); // $endDate = Carbon::parse($request->end_date)->endOfDay(); // $keyResults = $instance->key_results()->where([ // ['start_date', '>=', $startDate->toDateString()], // ['start_date', '<=', $endDate->toDateString()] // ])->get(); // $objectives = $instance->objectives()->where([ // ['start_date', '>=', $startDate->toDateString()], // ['start_date', '<=', $endDate->toDateString()] // ])->get(); // // key results with missing update // $keyResultsNotUpdated = $keyResults->filter(function ($keyResult) use ($startDate, $endDate) { // return !empty($keyResult->datesForUpdate($startDate->toDateString(), $endDate->toDateString())); // })->count(); // // key results without promises // $keyResultsWithoutPromises = $keyResults->filter(function ($keyResult) use ($startDate, $endDate) { // return $keyResult->promises()->where('is_set', 1)->whereBetween('created_at', [$startDate, $endDate])->first() ? false : true; // })->count(); // // total promises // $promises = $instance->promises()->whereBetween('created_at', [$startDate, $endDate])->get(); // $setPromises = $promises->where('is_set', 1)->count(); // $totalPromises = $promises->count(); // $setPromisesPercent = $totalPromises > 0 ? ($setPromises * 100 / $totalPromises) : 0; // // total key results // $totalKeyResults = $keyResults->count(); // // active key results percentage // $activeKeyResultsPercent = $totalKeyResults > 0 ? ($keyResults->where('status', KeyResult::STATUS_ACTIVE)->count() * 100 / $totalKeyResults) : 0; // // overdue key results percentage // $overdueKeyResultsPercent = $totalKeyResults > 0 ? ($keyResults->where('status', KeyResult::STATUS_OVERDUE)->count() * 100 / $totalKeyResults) : 0; // // upcoming key results percentage // $upcomingKeyResultsPercent = $totalKeyResults > 0 ? ($keyResults->where('status', KeyResult::STATUS_UPCOMING)->count() * 100 / $totalKeyResults) : 0; // // finished key results percentage // $finishedKeyResultsPercent = $totalKeyResults > 0 ? ($keyResults->where('status', KeyResult::STATUS_FINISHED)->count() * 100 / $totalKeyResults) : 0; // $keyResultLogs = $instance->key_result_logs()->whereBetween('related_to_date', [$startDate, $endDate])->orderBy('related_to_date', 'desc')->get(); // // total key result logs // $totalKeyResultLogs = $keyResults->sum(function ($keyResult) use ($startDate, $endDate) { // return $keyResult->totalKeyResultLogs($startDate->toDateString(), $endDate->toDateString()); // }); // // on time key result logs percentage // $onTimeKeyResultLogsPercent = $totalKeyResultLogs > 0 ? ($keyResultLogs->where('updated_on_date', 1)->count() * 100 / $totalKeyResultLogs) : 0; // // overdue key result logs percentage // $overdueKeyResultLogsPercent = $totalKeyResultLogs > 0 ? ($keyResultLogs->where('updated_on_date', 0)->count() * 100 / $totalKeyResultLogs) : 0; // $users = $instance->users()->whereBetween('created_at', [$startDate, $endDate])->get(); // // people without objectives or key results // $peopleWithoutObjOrKeyRes = $users->filter(function ($user) use ($objectives, $keyResults) { // $hasObjective = in_array($user->id, $objectives->pluck('user_id')->toArray()); // $hasKeyResult = in_array($user->id, $keyResults->pluck('user_id')->toArray()); // return $hasObjective || $hasKeyResult; // })->count(); // // key results with last key results log with confidence status 'sure' // $sureMorale = $keyResultLogs->unique('key_result_id')->where('status', KeyResultLog::STATUS_SURE)->count(); // // key results logs with confidence status 'not_very_sure' // $notVerySureMorale = $keyResultLogs->unique('key_result_id')->where('status', KeyResultLog::STATUS_NOT_VERY_SURE)->count(); // // key results logs with confidence status 'uncertain' // $uncertainMorale = $keyResultLogs->unique('key_result_id')->where('status', KeyResultLog::STATUS_UNCERTAIN)->count(); // return [ // 'key_results_not_updated' => $keyResultsNotUpdated, // 'key_results_without_promises' => $keyResultsWithoutPromises, // 'set_promises' => $setPromises, // 'set_promises_percent' => $setPromisesPercent, // 'total_objectives' => $objectives->count(), // 'total_key_results' => $totalKeyResults, // 'active_key_results_percent' => $activeKeyResultsPercent, // 'overdue_key_results_percent' => $overdueKeyResultsPercent, // 'upcoming_key_results_percent' => $upcomingKeyResultsPercent, // 'finished_key_results_percent' => $finishedKeyResultsPercent, // 'key_result_logs' => $keyResultLogs->count(), // 'on_time_key_result_logs_percent' => $onTimeKeyResultLogsPercent, // 'overdue_key_result_logs_percent' => $overdueKeyResultLogsPercent, // 'total_people' => $users->count(), // 'people_without_obj_or_key_res' => $peopleWithoutObjOrKeyRes, // 'sure_morale' => $sureMorale, // 'not_very_sure_morale' => $notVerySureMorale, // 'uncertain_morale' => $uncertainMorale, // ]; // } function peoplePromisesCompletedReport(Request $request, Instance $instance){ $startDate = Carbon::parse($request->start_date)->startOfDay(); $endDate = Carbon::parse($request->end_date)->endOfDay(); $data = $instance->users->map(function ($user) use ($startDate, $endDate) { $promises = $user->promises()->whereBetween('created_at', [$startDate, $endDate])->get(); // total promises $totalPromises = $promises->count(); // completed promises $completedPromises = $promises->whereNotNull('resolved_at')->whereNull('why_not')->count(); $completedPromisesPercent = $totalPromises > 0 ? ($completedPromises * 100 / $totalPromises) : 0; return [ 'first_name' => $user->first_name, 'last_name' => $user->last_name, 'avatar' => $user->avatar, 'total_promises' => $totalPromises, 'completed_promises_percent' => $completedPromisesPercent, ]; })->values(); return $data; } // function keyResultsDistributionReport(Request $request, Instance $instance){ // $startDate = Carbon::parse($request->start_date)->startOfDay(); // $endDate = Carbon::parse($request->end_date)->endOfDay(); // $data = $instance->users->map(function ($user) use ($startDate, $endDate) { // $totalKeyResults = $user->key_results()->where([ // ['start_date', '>=', $startDate->toDateString()], // ['start_date', '<=', $endDate->toDateString()] // ])->count(); // return [ // 'first_name' => $user->first_name, // 'last_name' => $user->last_name, // 'avatar' => $user->avatar, // 'total_key_results' => $totalKeyResults, // ]; // })->filter()->toArray(); // return $data; // } // function problemPeopleReport(Request $request, Instance $instance){ // $startDate = Carbon::parse($request->start_date)->startOfDay(); // $endDate = Carbon::parse($request->end_date)->endOfDay(); // $data = $instance->users->map(function ($user) use ($startDate, $endDate) { // // promises // $promises = $user->promises()->whereBetween('created_at', [$startDate, $endDate])->get(); // $failedPromises = $promises->whereNotNull('resolved_at')->whereNotNull('why_not')->count(); // $notSetPromises = $promises->where('is_set', 0)->count(); // // key results // $keyResults = $user->key_results()->where([ // ['start_date', '>=', $startDate->toDateString()], // ['start_date', '<=', $endDate->toDateString()] // ])->get(); // $overdueKeyResults = $keyResults->where('status', KeyResult::STATUS_OVERDUE)->count(); // // updates missing from key result // $keyResultLogsMissing = $keyResults->sum(function ($keyResult) use ($startDate, $endDate) { // return count($keyResult->datesForUpdate($startDate->toDateString(), $endDate->toDateString())); // }); // $formula = $failedPromises + $notSetPromises + $overdueKeyResults + $keyResultLogsMissing; // if($formula >= config('constants.problem_formula_limit')){ // return [ // 'first_name' => $user->first_name, // 'last_name' => $user->last_name, // 'avatar' => $user->avatar, // 'failed_promises' => $failedPromises, // 'failed_promises' => $failedPromises, // 'not_set_promises' => $notSetPromises, // 'key_result_logs_missing' => $keyResultLogsMissing, // 'overdue_key_results' => $overdueKeyResults, // 'formula' => $formula, // ]; // } // })->filter()->sortByDesc('formula')->values()->toArray(); // return $data; // } // function userReport(Request $request, Instance $instance){ // $startDate = Carbon::parse($request->start_date)->startOfDay(); // $endDate = Carbon::parse($request->end_date)->endOfDay(); // $user = User::findOrFail($request->user_id); // $keyResults = $user->key_results()->where([ // ['start_date', '>=', $startDate->toDateString()], // ['start_date', '<=', $endDate->toDateString()] // ])->get(); // // key results with missing update // $keyResultsNotUpdated = $keyResults->filter(function ($keyResult) use ($startDate, $endDate) { // return !empty($keyResult->datesForUpdate($startDate->toDateString(), $endDate->toDateString())); // })->count(); // // key results without promises // $keyResultsWithoutPromises = $keyResults->filter(function ($keyResult) use ($startDate, $endDate) { // return $keyResult->promises()->where([ // ['user_id', $keyResult->user_id], // ['is_set', 1] // ])->whereBetween('created_at', [$startDate, $endDate])->first() ? false : true; // })->count(); // // key results logs with unique key result // $uniqueKeyResultLogs = $user->key_result_logs()->whereBetween('related_to_date', [$startDate, $endDate])->orderBy('related_to_date', 'desc')->get()->unique('key_result_id'); // // key results data // $keyResultsMorale = $uniqueKeyResultLogs->map(function ($keyResultLog) { // return [ // 'status' => $keyResultLog->status, // 'key_result' => $keyResultLog->key_result ? [ // 'name' => $keyResultLog->key_result->name, // ] : null, // ]; // })->values()->toArray(); // // key results with last key results log with confidence status 'sure' // $sureMorale = $uniqueKeyResultLogs->where('status', KeyResultLog::STATUS_SURE)->count(); // // key results logs with confidence status 'not_very_sure' // $notVerySureMorale = $uniqueKeyResultLogs->where('status', KeyResultLog::STATUS_NOT_VERY_SURE)->count(); // // key results logs with confidence status 'uncertain' // $uncertainMorale = $uniqueKeyResultLogs->where('status', KeyResultLog::STATUS_UNCERTAIN)->count(); // return [ // 'key_results_not_updated' => $keyResultsNotUpdated, // 'key_results_without_promises' => $keyResultsWithoutPromises, // 'sure_morale' => $sureMorale, // 'not_very_sure_morale' => $notVerySureMorale, // 'uncertain_morale' => $uncertainMorale, // 'key_results_morale' => $keyResultsMorale, // ]; // } // function promisesDistributionReport(Request $request, Instance $instance){ // $startDate = Carbon::parse($request->start_date)->startOfDay(); // $endDate = Carbon::parse($request->end_date)->endOfDay(); // $user = User::findOrFail($request->user_id); // $keyResults = $user->key_results()->where([ // ['start_date', '>=', $startDate->toDateString()], // ['start_date', '<=', $endDate->toDateString()] // ])->get(); // $data = $keyResults->map(function ($keyResult) use ($startDate, $endDate) { // $totalPromises = $keyResult->promises()->where([ // ['user_id', $keyResult->user_id], // ['is_set', 1] // ])->whereBetween('created_at', [$startDate, $endDate])->count(); // return [ // 'name' => $keyResult->name, // 'total_promises' => $totalPromises, // ]; // })->toArray(); // return $data; // } // function keyResultsOverviewReport(Request $request, Instance $instance){ // $startDate = Carbon::parse($request->start_date)->startOfDay(); // $endDate = Carbon::parse($request->end_date)->endOfDay(); // $user = User::findOrFail($request->user_id); // $keyResults = $user->key_results()->where([ // ['start_date', '>=', $startDate->toDateString()], // ['start_date', '<=', $endDate->toDateString()] // ])->get(); // // key results with missing update // $keyResultsNotUpdated = $keyResults->filter(function ($keyResult) use ($startDate, $endDate) { // return !empty($keyResult->datesForUpdate($startDate->toDateString(), $endDate->toDateString())); // })->count(); // return [ // 'total' => $keyResults->count(), // 'overdue' => $keyResults->where('status', KeyResult::STATUS_OVERDUE)->count(), // 'finished' => $keyResults->where('status', KeyResult::STATUS_FINISHED)->count(), // 'active' => $keyResults->where('status', KeyResult::STATUS_ACTIVE)->count(), // 'upcoming' => $keyResults->where('status', KeyResult::STATUS_UPCOMING)->count(), // 'not_updated' => $keyResultsNotUpdated, // ]; // } // function userDailyPromisesReport(Request $request, Instance $instance){ // $startDate = Carbon::parse($request->start_date)->startOfDay(); // $endDate = Carbon::parse($request->end_date)->endOfDay(); // $user = User::findOrFail($request->user_id); // $promises = $user->promises()->whereBetween('created_at', [$startDate, $endDate])->get(); // $totalPromises = $promises->count(); // // completed promises // $completedPromises = $promises->whereNotNull('resolved_at')->whereNull('why_not')->count(); // $completedPromisesPercent = $totalPromises > 0 ? ($completedPromises * 100 / $totalPromises) : 0; // // not achived promises // $notCompletedPromises = $promises->whereNotNull('resolved_at')->whereNotNull('why_not')->count(); // $notCompletedPromisesPercent = $totalPromises > 0 ? ($notCompletedPromises * 100 / $totalPromises) : 0; // // promises that are not evaluated // $pendingPromises = $promises->whereNull('resolved_at')->where('is_set', 1)->count(); // $pendingPromisesPercent = $totalPromises > 0 ? ($pendingPromises * 100 / $totalPromises) : 0; // $promisesData = $promises->map(function ($promise) { // return [ // 'name' => $promise->name, // 'completed' => $promise->isCompleted(), // 'not_completed' => $promise->isNotCompleted(), // 'not_set' => !$promise->is_set, // 'pending' => !$promise->resolved_at && $promise->is_set, // 'key_result' => $promise->key_result ? [ // 'name' => $promise->key_result->name, // ] : null, // 'created_at' => $promise->created_at, // ]; // })->toArray(); // return [ // 'user' => [ // 'first_name' => $user->first_name, // 'last_name' => $user->last_name, // 'avatar' => $user->avatar, // ], // 'completed_promises' => $completedPromises, // 'completed_promises_percent' => $completedPromisesPercent, // 'not_completed_promises' => $notCompletedPromises, // 'not_completed_promises_percent' => $notCompletedPromisesPercent, // 'pending_promises' => $pendingPromises, // 'pending_promises_percent' => $pendingPromisesPercent, // 'promises' => $promisesData, // ]; // } // function userKeyResultsReport(Request $request, Instance $instance){ // $startDate = Carbon::parse($request->start_date)->startOfDay(); // $endDate = Carbon::parse($request->end_date)->endOfDay(); // $user = User::findOrFail($request->user_id); // $keyResults = $user->key_results()->where([ // ['start_date', '>=', $startDate->toDateString()], // ['start_date', '<=', $endDate->toDateString()] // ])->get(); // $data = $keyResults->map(function ($keyResult) use ($startDate, $endDate) { // // key result logs that are set // $setKeyResultLogs = $keyResult->key_result_logs()->where('user_id', $keyResult->user_id)->whereBetween('related_to_date', [$startDate, $endDate])->get()->map(function ($keyResultLog) use ($keyResult) { // return [ // 'value' => $keyResultLog->value, // 'key_result_percent' => $keyResultLog->key_result_percent, // 'description' => $keyResultLog->description, // 'status' => $keyResultLog->status, // 'related_to_date' => $keyResultLog->related_to_date, // ]; // })->toArray(); // // dates that are not yet updated for key result and concat with set key result logs // $keyResultLogsData = collect($keyResult->datesForUpdate($startDate->toDateString(), $endDate->toDateString()))->map(function ($date) { // return [ // 'value' => 0, // 'key_result_percent' => 0, // 'description' => null, // 'status' => null, // 'related_to_date' => $date, // ]; // })->concat($setKeyResultLogs)->sortBy('related_to_date')->values()->toArray(); // // promises // $promises = $keyResult->promises()->where([ // ['user_id', $keyResult->user_id], // ['is_set', 1] // ])->whereBetween('created_at', [$startDate, $endDate])->get()->map(function ($promise) { // return [ // 'name' => $promise->name, // 'completed' => $promise->isCompleted(), // 'created_at' => $promise->created_at, // ]; // })->toArray(); // // tasks // $tasks = $keyResult->tasks()->where('user_id', $keyResult->user_id)->whereBetween('created_at', [$startDate, $endDate])->get()->map(function ($task) { // return [ // 'name' => $task->name, // 'done' => $task->done, // 'created_at' => $task->created_at, // ]; // })->toArray(); // return [ // 'name' => $keyResult->name, // 'start_date' => $keyResult->start_date, // 'end_date' => $keyResult->end_date, // 'unity' => $keyResult->unity, // 'key_result_logs' => $keyResultLogsData, // 'promises' => $promises, // 'tasks' => $tasks, // ]; // })->toArray(); // return $data; // } function objectivesReport(Request $request, Instance $instance){ // in order to access the key result logs table Session::put('instance_id', $instance->id); $startDate = Carbon::parse($request->start_date)->startOfDay(); $endDate = Carbon::parse($request->end_date)->endOfDay(); $objectives = $instance->objectives()->where([ ['start_date', '>=', $startDate->toDateString()], ['start_date', '<=', $endDate->toDateString()] ])->get(); $data = $objectives->map(function ($objective) use ($startDate, $endDate) { // key results $keyResults = $objective->key_results->map(function ($keyResult) use ($endDate) { $lastKeyResultLog = $keyResult->lastKeyResultLog($endDate); return [ 'name' => $keyResult->name, 'start_date' => $keyResult->start_date, 'end_date' => $keyResult->end_date, 'description' => $keyResult->description, 'status' => $keyResult->status, 'progress_type' => $keyResult->progress_type, 'start_value' => $keyResult->start_value, 'target' => $keyResult->target, 'unity' => $keyResult->unity, 'percent' => round($keyResult->percent), 'last_value' => $lastKeyResultLog ? round($lastKeyResultLog->value, 1) : null, ]; })->toArray(); return [ 'name' => $objective->name, 'start_date' => $objective->start_date, 'end_date' => $objective->end_date, 'description' => $objective->description, 'status' => $objective->status, 'percent' => round($objective->percent), 'key_results' => $keyResults, ]; })->toArray(); Session::forget('instance_id'); return $data; }
Back