Bổ sung api cho chức năng profile and criterias
This commit is contained in:
		
							parent
							
								
									780d3f63fe
								
							
						
					
					
						commit
						fb47cc509d
					
				| 
						 | 
				
			
			@ -193,14 +193,15 @@ 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);
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        if ($pos_a === false || $pos_b === false) {
 | 
			
		||||
            return 0;
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        return $pos_a - $pos_b;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
 | 
			
		||||
   
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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');
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -96,7 +96,7 @@ class JiraService
 | 
			
		|||
 | 
			
		||||
        return $issues;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    public function getAllUsers()
 | 
			
		||||
    {
 | 
			
		||||
        $response = $this->client->get('/rest/api/3/users/search', [
 | 
			
		||||
| 
						 | 
				
			
			@ -233,9 +233,9 @@ class JiraService
 | 
			
		|||
        $user_warning = [];
 | 
			
		||||
        foreach ($users as $user) {
 | 
			
		||||
            $user = $user[0];
 | 
			
		||||
            $users_data[$user['displayName']]['user'] = $user; 
 | 
			
		||||
            $users_data[$user['displayName']]['total_spent'] = 0; 
 | 
			
		||||
            $users_data[$user['displayName']]['total_est'] = 0; 
 | 
			
		||||
            $users_data[$user['displayName']]['user'] = $user;
 | 
			
		||||
            $users_data[$user['displayName']]['total_spent'] = 0;
 | 
			
		||||
            $users_data[$user['displayName']]['total_est'] = 0;
 | 
			
		||||
            $body = [
 | 
			
		||||
                'expand' => ['names', 'schema'],
 | 
			
		||||
                'fields' => ['summary', 'status', 'timeoriginalestimate', 'timespent', 'assignee', 'project'],
 | 
			
		||||
| 
						 | 
				
			
			@ -246,21 +246,21 @@ class JiraService
 | 
			
		|||
                'maxResults' => 50,
 | 
			
		||||
                'startAt' => 0
 | 
			
		||||
            ];
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
            $response = $this->client->post('/rest/api/3/search', [
 | 
			
		||||
                'body' => json_encode($body)
 | 
			
		||||
            ]);
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
            $issues = json_decode($response->getBody()->getContents(), true);
 | 
			
		||||
 | 
			
		||||
            if(count($issues['issues']) == 0){
 | 
			
		||||
            if (count($issues['issues']) == 0) {
 | 
			
		||||
                $user_warning[] = $user;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            foreach ($issues['issues'] as $issue) {
 | 
			
		||||
                $projectName = $issue['fields']['project']['name'];
 | 
			
		||||
                $username = $issue['fields']['assignee']['displayName'];
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
                if (!isset($groupedIssues[$projectName])) {
 | 
			
		||||
                    $groupedIssues[$projectName] = [];
 | 
			
		||||
                    $groupedIssues[$projectName]['project'] = $issue['fields']['project'];
 | 
			
		||||
| 
						 | 
				
			
			@ -272,21 +272,42 @@ class JiraService
 | 
			
		|||
                    $groupedIssues[$projectName]['users'][$username]['p_total_spent'] = 0;
 | 
			
		||||
                    $groupedIssues[$projectName]['users'][$username]['p_total_est'] = 0;
 | 
			
		||||
                }
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
                $groupedIssues[$projectName]['users'][$username]['issues'][] = $issue;
 | 
			
		||||
                $groupedIssues[$projectName]['users'][$username]['p_total_spent'] = $groupedIssues[$projectName]['users'][$username]['p_total_spent'] + $issue['fields']['timespent'];
 | 
			
		||||
                $groupedIssues[$projectName]['users'][$username]['p_total_est'] = $groupedIssues[$projectName]['users'][$username]['p_total_est'] + ($issue['fields']['timeoriginalestimate'] ?? 0);
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
                $users_data[$user['displayName']]['total_spent'] = $users_data[$user['displayName']]['total_spent'] + $issue['fields']['timespent'];
 | 
			
		||||
                $users_data[$user['displayName']]['total_est'] = $users_data[$user['displayName']]['total_est'] + ($issue['fields']['timeoriginalestimate'] ?? 0); 
 | 
			
		||||
                $users_data[$user['displayName']]['total_est'] = $users_data[$user['displayName']]['total_est'] + ($issue['fields']['timeoriginalestimate'] ?? 0);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        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);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue