Файловый менеджер - Редактировать - /home/clickysoft/public_html/standup.clickysoft.net/app/Http/Controllers/Admin/TimeTrackingController.php
Назад
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Http\Requests\TimeTrackingReportRequest; use App\Models\Project; use App\Models\User; use Gate; use Illuminate\Http\Request; use Symfony\Component\HttpFoundation\Response; use \Carbon\Carbon; class TimeTrackingController extends Controller { public function index(Request $request) { abort_if(Gate::denies('time_tracking_access'), Response::HTTP_FORBIDDEN, '403 Forbidden'); $list = $this->getProjectsAndUsers(); return view('admin.time-tracking.index', [ 'projects' => $list["projects"], 'users' => $list["users"], "timeEntries" => [], "user" => null, "project" => null, ]); } public function generate_report(TimeTrackingReportRequest $request) { $list = $this->getProjectsAndUsers(); $startTimestamp = Carbon::createFromFormat('Y-m-d', $request->start_date)->timestamp; $endTimestamp = Carbon::createFromFormat('Y-m-d', $request->end_date)->timestamp; // dd($startTimestamp, $endTimestamp); $curl = curl_init(); $endpoint = "https://api.worksnaps.com:443/api/projects/".$request->project_id."/users/".$request->user_id."/time_entries.xml?from_timestamp=".$startTimestamp."&to_timestamp=".$endTimestamp; curl_setopt_array($curl, [ CURLOPT_URL => $endpoint, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => [ 'Authorization: Basic YktGbXc0MG96dzM5UHY3QzJVaENZVGxPVWFFelZuOWl6dlpvYTdmSTo=', 'Accept: application/xml', ], ]); $response = curl_exec($curl); if (curl_errno($curl)) { $error_msg = curl_error($curl); return redirect()->back()->withErrors("Could not fetch entries from Worksnap - ".$error_msg); } curl_close($curl); $xml = json_encode(simplexml_load_string($response)); $timeEntries = json_decode($xml, true); if(array_key_exists("status", $timeEntries) && $timeEntries["status"] == 0) { // dd($timeEntries); return redirect()->back()->withInput()->withErrors(ucfirst($timeEntries["extra_info"]["errors"]["user_ids"]["message"])); } $offlineTime = 0; $onlineTime = 0; $activityLevel = 0; foreach($timeEntries["time_entry"] as $entry) { if($entry["type"] == "offline") { $offlineTime += $entry["duration_in_minutes"]; } else { $onlineTime += $entry["duration_in_minutes"]; } $activityLevel += $entry["activity_level"]; } return view('admin.time-tracking.index', [ 'projects' => $list["projects"], 'users' => $list["users"], "timeEntries" => $timeEntries["time_entry"], "user" => User::whereWorksnapId($request->user_id)->first(), "project" => Project::whereWorksnapId($request->project_id)->first(), "start_date" => $request->start_date, "end_date" => $request->end_date, "offlineTime" => $offlineTime, "onlineTime" => $onlineTime, "averageActivityLevel" => $activityLevel/count($timeEntries["time_entry"]), ]); } public function getProjectsAndUsers() { $projects = Project::all(); $projectList = []; foreach($projects as $project) { $projectList[$project->worksnap_id] = $project->project_name; } $users = User::all(); $userList = []; foreach($users as $user) { $userList[$user->worksnap_id] = $user->name .'<'.$user->email.'>'; } return ['projects' => $projectList, 'users' => $userList]; } }
| ver. 1.4 |
Github
|
.
| PHP 8.1.29 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка