Bổ sung api cho chức năng profile and criterias

This commit is contained in:
Truong Vo 2024-09-17 10:36:17 +07:00
parent 780d3f63fe
commit fb47cc509d
4 changed files with 109 additions and 19 deletions

View File

@ -193,7 +193,8 @@ class JiraController extends Controller
], 200);
}
private function customSort($a, $b, $order) {
private function customSort($a, $b, $order)
{
$pos_a = array_search(strtolower($a), $order);
$pos_b = array_search(strtolower($b), $order);
@ -224,7 +225,7 @@ class JiraController extends Controller
$totalTimeSpent = 0;
foreach ($issue['fields']['worklog']['worklogs'] as $worklog) {
$started = Carbon::parse($worklog['started']);
$totalTimeSpent = $totalTimeSpent + ($worklog['timeSpentSeconds']/60/60);
$totalTimeSpent = $totalTimeSpent + ($worklog['timeSpentSeconds'] / 60 / 60);
if ($started->isSameDay($today) && $worklog['updateAuthor']['displayName'] == $user) {
$filteredWorklogs[] = $worklog;
}
@ -238,7 +239,7 @@ class JiraController extends Controller
'totalTimeSpent' => $totalTimeSpent,
];
$tasksByUser[$user]['assignment'] = $log['tasksAssign'];
uksort($tasksByUser[$user]["allStatus"], function($a, $b) use ($predefinedOrder) {
uksort($tasksByUser[$user]["allStatus"], function ($a, $b) use ($predefinedOrder) {
return $this->customSort($a, $b, $predefinedOrder);
});
}
@ -260,4 +261,46 @@ class JiraController extends Controller
return response()->json(['error' => $e->getMessage()], 500);
}
}
public function getDetailsProjectsById(Request $request)
{
$id = $request->input('id');
$projects = $this->jiraService->getDetailsProjectsById($id);
return response()->json([
'data' => $projects,
'status' => true
], 200);
}
public function getAllBoardByIdProjects(Request $request)
{
$id = $request->input('id');
$projects = $this->jiraService->getAllBoardByIdProjects($id);
return response()->json([
'data' => $projects,
'status' => true
], 200);
}
public function getAllSprintByIdBoard(Request $request)
{
$id = $request->input('id');
$projects = $this->jiraService->getAllSprintByIdBoard($id);
return response()->json([
'data' => $projects,
'status' => true
], 200);
}
public function getAllIssueByIdSprint(Request $request)
{
$id = $request->input('id');
$projects = $this->jiraService->getAllIssueByIdSprint($id);
return response()->json([
'data' => $projects,
'status' => true
], 200);
}
}

View File

@ -0,0 +1,21 @@
<?php
namespace Modules\Admin\app\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Traits\AnalyzeData;
use App\Traits\HasFilterRequest;
use App\Traits\HasOrderByRequest;
use App\Traits\HasSearchRequest;
use Illuminate\Http\Request;
class ProfileController extends Controller
{
use HasOrderByRequest;
use HasFilterRequest;
use HasSearchRequest;
use AnalyzeData;
}

View File

@ -103,6 +103,11 @@ Route::middleware('api')
], function () {
Route::get('/fetch-issues', [JiraController::class, 'fetchAllIssues']);
Route::get('/all-project', [JiraController::class, 'getAllProject']);
Route::get('/get-detail-project-by-id', [JiraController::class, 'getDetailsProjectsById']);
Route::get('/get-all-board-by-id-project', [JiraController::class, 'getAllBoardByIdProjects']);
Route::get('/get-all-sprint-by-id-board', [JiraController::class, 'getAllSprintByIdBoard']);
Route::get('/get-all-issue-by-id-sprint', [JiraController::class, 'getAllIssueByIdSprint']);
Route::get('/all-issue-by-project', [JiraController::class, 'fetchIssuesByProject']);
Route::get('/worklogs', [JiraController::class, 'getAllUserWorkLogs'])->middleware('check.permission:admin.staff');
Route::get('/allocation', [JiraController::class, 'getAllUserDoing'])->middleware('check.permission:admin.staff');

View File

@ -253,7 +253,7 @@ class JiraService
$issues = json_decode($response->getBody()->getContents(), true);
if(count($issues['issues']) == 0){
if (count($issues['issues']) == 0) {
$user_warning[] = $user;
}
@ -289,4 +289,25 @@ class JiraService
return ['projects' => $groupedIssues, 'users' => $users_data, 'warningList' => $user_warning];
// return $projects;
}
public function getDetailsProjectsById($id)
{
$response = $this->client->get('/rest/api/3/project/' . $id);
return json_decode($response->getBody()->getContents(), true);
}
public function getAllBoardByIdProjects($id)
{
$response = $this->client->get('/rest/agile/1.0/board?projectKeyOrI=/' . $id);
return json_decode($response->getBody()->getContents(), true);
}
public function getAllSprintByIdBoard($id)
{
$response = $this->client->get('/rest/agile/1.0/board/' . $id . '/sprint');
return json_decode($response->getBody()->getContents(), true);
}
public function getAllIssueByIdSprint($id)
{
$response = $this->client->get('/rest/agile/1.0/sprint/' . $id . '/issue');
return json_decode($response->getBody()->getContents(), true);
}
}