Ngiler SH3LL 360
Home
Information
Create File
Create Folder
:
/
home
/
tbf
/
membrubackend
/
app
/
Http
/
Controllers
/
Api
/
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 :
KeyResultLogController.php
| Size :
5.79
KB
Copy
<?php namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use App\Models\KeyResult; use App\Models\NotificationLog; use App\Models\KeyResultLog; use App\Models\User; use App\Http\Requests\KeyResultLogFormRequest; use Illuminate\Database\Eloquent\ModelNotFoundException; use Carbon\Carbon; use Auth; use Session; class KeyResultLogController extends Controller { public function index(KeyResult $keyResult) { return response()->json([ 'data' => $this->keyResultList($keyResult), 'status' => 'success', ], 200); } public function publicIndex($keyResultUuid) { $authUser = Auth::user(); $keyResult = KeyResult::where('uuid', $keyResultUuid)->first(); // check if the entity is available for public if($keyResult){ if(($authUser && !$authUser->isAdmin() && isPrivateObjective($keyResult->objective_id, $authUser)) || (!$authUser && $keyResult->masterGoalShareStatus() == 'off')){ throw (new ModelNotFoundException); } // in order to switch between key result logs tables second time Session::put('instance_id', $keyResult->instance_id); $keyResultLogs = $this->keyResultList($keyResult); Session::forget('instance_id'); return response()->json([ 'data' => $keyResultLogs, 'status' => 'success', ], 200); }else{ throw (new ModelNotFoundException); } } public function store(KeyResultLogFormRequest $request, KeyResult $keyResult) { $data = $request->validated(); $authUser = Auth::user(); $objective = $keyResult->objective; // must be interogated before and with closure for 'diff_last_key_result_percent' $lastKeyResultPercent = $keyResult->percent; // must be interogated before and with closure for 'diff_last_value' $lastKeyResultLog = $keyResult->lastKeyResultLog(); $lastKeyResultLogValue = $lastKeyResultLog ? $lastKeyResultLog->value : 0; // must be this way in order to save on dynamic table $keyResultLog = new KeyResultLog(); $keyResultLog->key_result_id = $data['key_result_id']; $keyResultLog->description = $data['description']; $keyResultLog->status = $data['status']; $keyResultLog->value = $data['value']; $keyResultLog->updated_on_date = $keyResult->checkIfNeedsUpdate() == $keyResult::TODAY_UPDATE ? 1 : 0; $keyResultLog->save(); $calculateKeyResultPercentage = calculateKeyResultPercentage($keyResultLog->value, $keyResult); $keyResultLog->update([ 'key_result_percent' => $calculateKeyResultPercentage, 'objective_percent' => calculateObjectivePercentage($objective), 'diff_last_key_result_percent' => $calculateKeyResultPercentage - $lastKeyResultPercent, 'diff_last_value' => $keyResultLog->value - $lastKeyResultLogValue, ]); if($objective->user_id != $authUser->id && $objective->user){ newKeyResultLogMail($keyResultLog); } NotificationLog::create([ 'entity_name' => $objective->name, 'avatar' => $keyResultLog->user->avatar, 'objective_slug' => $objective->slug, 'type' => NotificationLog::OBJECTIVE_PERCENT, 'frontend_type' => NotificationLog::FE_OBJECTIVES, 'responsible_id' => $objective->user_id, 'need_link' => 1, 'percent' => $objective->percent, 'for_all' => $objective->is_private ? 0 : 1, 'for_auth_user' => $authUser->id != $objective->user_id ? 1 : 0, ]); NotificationLog::create([ 'username' => $authUser->getFullName(), 'avatar' => $keyResultLog->user->avatar, 'entity_name' => $keyResult->name, 'objective_slug' => $objective->slug, 'key_result_id' => $keyResult->id, 'type' => NotificationLog::KEY_RESULT_LOG, 'frontend_type' => NotificationLog::FE_LOGS, 'responsible_id' => $keyResult->user_id, 'need_link' => 1, 'for_all' => $objective->is_private ? 0 : 1, 'for_auth_user' => $authUser->id != $keyResult->user_id ? 1 : 0, ]); return response()->json([ 'status' => 'success', ], 200); } public function statusList() { return response()->json([ 'status' => 'success', 'data' => KeyResultLog::getStatusList(), ], 200); } public function keyResultList($keyResult) { $lastDate = $keyResult->start_date; $keyResultLogs = $keyResult->key_result_logs->sortBy('created_at')->map(function ($keyResultLog) use (&$lastDate, $keyResult) { $diffDaysLastLog = Carbon::parse($lastDate)->diffInDays($keyResultLog->created_at); $lastDate = $keyResultLog->created_at; return [ 'id' => $keyResultLog->id, 'description' => $keyResultLog->description, 'status' => $keyResultLog->status, 'value' => $keyResultLog->value, 'state' => $keyResultLog->state, 'unity' => $keyResultLog->key_result->unity, 'target' => $keyResultLog->key_result->target, 'created_at' => $keyResultLog->created_at, 'key_result_percent' => $keyResultLog->key_result_percent, 'diff_days_from_last_log' => $diffDaysLastLog, 'was_made_in_interval' => $diffDaysLastLog > $keyResult->measurement ? false : true, ]; })->sortByDesc('created_at')->values(); return $keyResultLogs; } }
Back