Skip to content

Commit

Permalink
[Fix] Update project hub to only show project users who are directly …
Browse files Browse the repository at this point in the history
…assigned
  • Loading branch information
marcelfolaron committed Sep 23, 2024
1 parent bb65c2f commit 5d12972
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 30 deletions.
2 changes: 1 addition & 1 deletion app/Domain/Projects/Hxcontrollers/ProjectCardProgress.php
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ public function getProgress() {

$project['progress'] = $this->projectsService->getProjectProgress($project['id']);
$projectComment = $this->commentsService->getComments("project", $project['id']);
$project['team'] = $this->projectsService->getUsersAssignedToProject($project['id']);
$project['team'] = $this->projectsService->getUsersAssignedToProject($project['id'], true);

if (is_array($projectComment) && count($projectComment) > 0) {
$project['lastUpdate'] = $projectComment[0];
Expand Down
35 changes: 23 additions & 12 deletions app/Domain/Projects/Repositories/Projects.php
Original file line number Diff line number Diff line change
Expand Up @@ -132,13 +132,15 @@ public function getAll(bool $showClosedProjects = false): array
}

/**
* getUsersAssignedToProject - get one project
* Gets all users that have access to a project.
* For direct access only set the teamOnly flag to true
*
* @access public
* @param $id
* @return array|bool
*
*/
public function getUsersAssignedToProject($id): array|bool
public function getUsersAssignedToProject($id, $teamOnly): array|bool
{

$query = "SELECT
Expand All @@ -156,26 +158,35 @@ public function getUsersAssignedToProject($id): array|bool
LEFT JOIN zp_projects ON zp_relationuserproject.projectId = zp_projects.id
WHERE
zp_relationuserproject.projectId = :projectId
AND !(zp_user.source <=> 'api') AND zp_user.id IS NOT NULL
AND
AND !(zp_user.source <=> 'api') AND zp_user.id IS NOT NULL";

if($teamOnly === false) {

$query .= " AND
zp_projects.id IN (SELECT projectId FROM zp_relationuserproject WHERE zp_relationuserproject.userId = :userId)
OR zp_projects.psettings = 'all'
OR (zp_projects.psettings = 'client' AND zp_projects.clientId = :clientId)
OR (:requesterRole = 'admin' OR :requesterRole = 'manager')
AND zp_user.id IS NOT NULL
OR (:requesterRole = 'admin' OR :requesterRole = 'manager')";
}

$query .= " AND zp_user.id IS NOT NULL
GROUP BY zp_user.id
ORDER BY zp_user.lastname";

$stmn = $this->db->database->prepare($query);
$stmn->bindValue(':projectId', $id, PDO::PARAM_INT);

$stmn->bindValue(':userId', session("userdata.id") ?? '-1', PDO::PARAM_INT);
$stmn->bindValue(':clientId', session("userdata.clientId") ?? '-1', PDO::PARAM_INT);
if($teamOnly === false) {

$stmn->bindValue(':userId', session("userdata.id") ?? '-1', PDO::PARAM_INT);
$stmn->bindValue(':clientId', session("userdata.clientId") ?? '-1', PDO::PARAM_INT);

if (session()->exists("userdata")) {
$stmn->bindValue(':requesterRole', session("userdata.role"), PDO::PARAM_INT);
} else {
$stmn->bindValue(':requesterRole', -1, PDO::PARAM_INT);
}

if (session()->exists("userdata")) {
$stmn->bindValue(':requesterRole', session("userdata.role"), PDO::PARAM_INT);
} else {
$stmn->bindValue(':requesterRole', -1, PDO::PARAM_INT);
}

$stmn->execute();
Expand Down
35 changes: 18 additions & 17 deletions app/Domain/Projects/Services/Projects.php
Original file line number Diff line number Diff line change
Expand Up @@ -882,16 +882,17 @@ public function resetCurrentProject(): void


/**
* Gets all the users assigned to a specific project.
* Gets all users that have access to a project.
* For direct access only set the teamOnly flag to true
*
* @param int $projectId The ID of the project.
* @return array An array of users assigned to the project.
*
* @api
*/
public function getUsersAssignedToProject($projectId): array
public function getUsersAssignedToProject($projectId, $teamOnly = false): array
{
$users = $this->projectRepository->getUsersAssignedToProject($projectId);
$users = $this->projectRepository->getUsersAssignedToProject($projectId, $teamOnly);

foreach ($users as $key => $user) {

Expand Down Expand Up @@ -1455,14 +1456,14 @@ public function getProjectSetupChecklist($projectId): array
$progressSteps["define"]["tasks"]["description"]["status"] = "done";
}

/*
if ($project['numUsers'] > 1) {
$progressSteps["define"]["tasks"]["defineTeam"]["status"] = "done";
}
/*
if ($project['numUsers'] > 1) {
$progressSteps["define"]["tasks"]["defineTeam"]["status"] = "done";
}
if ($project['numDefinitionCanvas'] >= 1) {
$progressSteps["define"]["tasks"]["createBlueprint"]["status"] = "done";
}*/
if ($project['numDefinitionCanvas'] >= 1) {
$progressSteps["define"]["tasks"]["createBlueprint"]["status"] = "done";
}*/

$goals = app()->make(GoalcanvaRepository::class);
$allCanvas = $goals->getAllCanvas($projectId);
Expand All @@ -1475,14 +1476,14 @@ public function getProjectSetupChecklist($projectId): array
$progressSteps["define"]["goals"]["setGoals"]["status"] = "done";
}

/*
if ($project['numberMilestones'] >= 1) {
$progressSteps["timeline"]["tasks"]["createMilestones"]["status"] = "done";
}
/*
if ($project['numberMilestones'] >= 1) {
$progressSteps["timeline"]["tasks"]["createMilestones"]["status"] = "done";
}
if ($project['numberOfTickets'] >= 1) {
$progressSteps["implementation"]["tasks"]["createTasks"]["status"] = "done";
}*/
if ($project['numberOfTickets'] >= 1) {
$progressSteps["implementation"]["tasks"]["createTasks"]["status"] = "done";
}*/

$percentDone = $this->getProjectProgress($projectId);
if ($percentDone['percent'] >= 80) {
Expand Down

0 comments on commit 5d12972

Please sign in to comment.