commit code
This commit is contained in:
parent
80d2191b7c
commit
75eb89406f
|
|
@ -3,6 +3,8 @@
|
|||
namespace Modules\Admin\app\Http\Controllers;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\User;
|
||||
use App\Services\JiraService;
|
||||
use App\Traits\AnalyzeData;
|
||||
use App\Traits\HasFilterRequest;
|
||||
use App\Traits\HasOrderByRequest;
|
||||
|
|
@ -22,6 +24,20 @@ class CriteriasController extends Controller
|
|||
use HasSearchRequest;
|
||||
use AnalyzeData;
|
||||
|
||||
protected $jiraService;
|
||||
|
||||
public function __construct(JiraService $jiraService)
|
||||
{
|
||||
$this->jiraService = $jiraService;
|
||||
}
|
||||
|
||||
public function getAllUserJira()
|
||||
{
|
||||
$all_users = User::all();
|
||||
$users = $this->jiraService->getUsersByEmails($all_users);
|
||||
return $users;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all criterias of a sprint
|
||||
*
|
||||
|
|
@ -31,13 +47,63 @@ class CriteriasController extends Controller
|
|||
public function getCriteriasForSprint($sprintId)
|
||||
{
|
||||
$sprint = Sprint::with('criterias')->find($sprintId);
|
||||
// Nếu không tìm thấy sprint, trả về response lỗi
|
||||
if (!$sprint) {
|
||||
return AbstractController::ResultError('Sprint not found', [], 404);
|
||||
}
|
||||
$allUser = self::getAllUserJira();
|
||||
|
||||
// Trả về thông tin sprint và criterias
|
||||
return AbstractController::ResultSuccess($sprint);
|
||||
$issues = $this->jiraService->getAllIssueByIdSprint($sprintId);
|
||||
$uniqueUsers = [];
|
||||
// echo json_encode($issues);
|
||||
// die;
|
||||
if ($issues) {
|
||||
$issues = $issues["issues"];
|
||||
foreach ($issues as $key => $issue) {
|
||||
$assignee = $issue["fields"]["assignee"];
|
||||
if ($assignee) {
|
||||
if (!in_array($assignee["accountId"], $uniqueUsers)) {
|
||||
array_push($uniqueUsers, $assignee["accountId"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// echo json_encode(allUser)
|
||||
// dd();
|
||||
|
||||
$filteredObjects = array_filter($allUser, function ($user) use ($uniqueUsers) {
|
||||
$user = $user[0];
|
||||
return in_array($user['accountId'], $uniqueUsers);
|
||||
});
|
||||
|
||||
$result = array_map(function ($item) {
|
||||
$item = $item[0];
|
||||
return [
|
||||
'accountId' => $item['accountId'],
|
||||
'emailAddress' => $item['emailAddress'],
|
||||
'displayName' => $item['displayName'],
|
||||
];
|
||||
}, $filteredObjects);
|
||||
|
||||
//Get all user trong db => find info theo id
|
||||
|
||||
//Get criteria for sprint
|
||||
$criterias = Criteria::where('type', "SPRINT")->get();
|
||||
//Get criteria for user
|
||||
$users = Criteria::where('type', "MEMBER")->get();
|
||||
echo json_encode($result);
|
||||
echo json_encode($users);
|
||||
dd();
|
||||
|
||||
|
||||
|
||||
$data = [
|
||||
"criterias" => $criterias,
|
||||
"users" => $users
|
||||
];
|
||||
} else {
|
||||
$users = $sprint->users()->get();
|
||||
$data = $sprint;
|
||||
$data->users = $users;
|
||||
}
|
||||
return AbstractController::ResultSuccess($data);
|
||||
}
|
||||
|
||||
public function convertDataReponse($criterias)
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace Modules\Admin\app\Models;
|
||||
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Sprint extends Model
|
||||
|
|
@ -12,6 +13,39 @@ class Sprint extends Model
|
|||
public function criterias()
|
||||
{
|
||||
return $this->belongsToMany(Criteria::class, 'sprints_criterias')
|
||||
->withPivot('point', 'expect_result', 'actual_result', 'note');
|
||||
->withPivot('point', 'expect_result', 'actual_result', 'note', "created_by");
|
||||
}
|
||||
}
|
||||
|
||||
// Định nghĩa một quan hệ với bảng users thông qua bảng users_criterias
|
||||
public function users2()
|
||||
{
|
||||
return $this->hasManyThrough(
|
||||
User::class, // Model đích
|
||||
UserCriteria::class, // Model trung gian
|
||||
'sprint_id', // Khóa ngoại trong bảng users_criterias
|
||||
'email', // Trường để khớp trong bảng users
|
||||
'id', // Khóa chính trong bảng sprint
|
||||
'user_email' // Trường để khớp trong bảng users_criterias
|
||||
);
|
||||
}
|
||||
|
||||
public function users()
|
||||
{
|
||||
return $this->hasMany(UserCriteria::class)
|
||||
->leftjoin('users', 'users.email', '=', 'users_criterias.user_email')
|
||||
->leftjoin('criterias', 'criterias.id', '=', 'users_criterias.criteria_id')
|
||||
->select(
|
||||
'users.id as user_id',
|
||||
'users.name as user',
|
||||
'users.email as user_email',
|
||||
|
||||
'criteria_id',
|
||||
'users_criterias.point as point',
|
||||
'users_criterias.note as note',
|
||||
'users_criterias.created_by as created_by',
|
||||
|
||||
'criterias.name as name',
|
||||
'criterias.description as criteria_description',
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,10 +2,23 @@
|
|||
|
||||
namespace Modules\Admin\app\Models;
|
||||
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class UserCriteria extends Model
|
||||
{
|
||||
protected $table = 'users_criterias';
|
||||
protected $fillable = ['user_id', 'criteria_id', 'sprint_id', 'point', 'note'];
|
||||
}
|
||||
protected $fillable = ['user_id', 'criteria_id', 'sprint_id', 'point', 'note', 'user_email'];
|
||||
|
||||
// Định nghĩa quan hệ với model User
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'user_email', 'email');
|
||||
}
|
||||
|
||||
// Định nghĩa quan hệ với model Sprint
|
||||
public function sprint()
|
||||
{
|
||||
return $this->belongsTo(Sprint::class);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -297,7 +297,7 @@ class JiraService
|
|||
}
|
||||
public function getAllBoardByIdProjects($id)
|
||||
{
|
||||
$response = $this->client->get('/rest/agile/1.0/board?projectKeyOrI=/' . $id);
|
||||
$response = $this->client->get('/rest/agile/1.0/board?projectKeyOrId=' . $id);
|
||||
return json_decode($response->getBody()->getContents(), true);
|
||||
}
|
||||
public function getAllSprintByIdBoard($id)
|
||||
|
|
|
|||
|
|
@ -43,4 +43,15 @@ export const handleTicket = API_URL + 'v1/admin/ticket/handle-ticket'
|
|||
export const getAllUsers = API_URL + 'v1/users'
|
||||
export const createOrUpdateUser = API_URL + 'v1/users/createOrUpdate'
|
||||
export const deleteUser = API_URL + 'v1/users/delete'
|
||||
export const getQRCode = API_URL + 'v1/users/qrcode'
|
||||
export const getQRCode = API_URL + 'v1/users/qrcode'
|
||||
|
||||
//SprintReview
|
||||
export const getAllCriteriasBySprint = API_URL + 'v1/admin/criterias/sprints'
|
||||
|
||||
export const getAllProject = API_URL + 'v1/admin/jira/all-project'
|
||||
export const getAllBoardByIdProject = API_URL + 'v1/admin/jira/get-all-board-by-id-project'
|
||||
export const getDetailProjectById = API_URL + 'v1/admin/jira/get-detail-project-by-id'
|
||||
export const getAllSprintByIdBoard = API_URL + 'v1/admin/jira/get-all-sprint-by-id-board'
|
||||
export const getAllIssuesByIdSprint = API_URL + 'v1/admin/jira/get-all-issue-by-id-sprint'
|
||||
|
||||
export const updateSprintReview = API_URL + 'v1/admin/sprint-review/update'
|
||||
Loading…
Reference in New Issue