diff --git a/certif/app/components/members-list-item.hbs b/certif/app/components/members-list-item.hbs
deleted file mode 100644
index f6973d18aa3..00000000000
--- a/certif/app/components/members-list-item.hbs
+++ /dev/null
@@ -1,91 +0,0 @@
-
- {{@member.lastName}} |
- {{@member.firstName}} |
-
- {{#if this.isEditionMode}}
-
- <:label>{{t "pages.team.members.actions.select-role.label"}}
-
- {{else}}
- {{@member.roleLabel}}
- {{/if}}
- |
- {{#if this.shouldDisplayManagingColumn}}
-
- {{#if this.shouldDisplayMemberManageButton}}
-
- {{#if this.shouldDisplayChangeRoleOption}}
-
- {{t "pages.team.members.actions.edit-role"}}
-
-
- {{t "pages.team.members.actions.remove-membership"}}
-
- {{/if}}
- {{#if this.shouldDisplayLeaveCertificationCenterOption}}
-
- {{t "pages.team.members.actions.leave-certification-center"}}
-
- {{/if}}
-
- {{/if}}
- {{#if this.isEditionMode}}
-
-
- {{t "pages.team.members.actions.save"}}
-
-
-
- {{/if}}
- |
- {{/if}}
- {{#if @shouldDisplayRefererColumn}}
-
- {{#if @member.isReferer}}
-
-
- {{t "pages.team.pix-referer"}}
-
-
- <:triggerElement>
-
-
-
-
- <:tooltip>
- {{t "pages.team.pix-referer-tooltip"}}
-
-
-
- {{/if}}
- |
- {{/if}}
-
\ No newline at end of file
diff --git a/certif/app/components/members-list-item.js b/certif/app/components/members-list-item.js
deleted file mode 100644
index e9d35b5713e..00000000000
--- a/certif/app/components/members-list-item.js
+++ /dev/null
@@ -1,92 +0,0 @@
-import { action } from '@ember/object';
-import { service } from '@ember/service';
-import Component from '@glimmer/component';
-import { tracked } from '@glimmer/tracking';
-
-const ARIA_LABEL_MEMBER_TRANSLATION = 'pages.team.members.actions.select-role.options.member';
-const ARIA_LABEL_ADMIN_TRANSLATION = 'pages.team.members.actions.select-role.options.admin';
-
-export default class MembersListItem extends Component {
- @service currentUser;
- @service pixToast;
- @service intl;
- @tracked isEditionMode = false;
-
- roleOptions = [
- {
- value: 'ADMIN',
- label: this.intl.t(ARIA_LABEL_ADMIN_TRANSLATION),
- disabled: false,
- },
- {
- value: 'MEMBER',
- label: this.intl.t(ARIA_LABEL_MEMBER_TRANSLATION),
- disabled: false,
- },
- ];
-
- displayRoleByOrganizationRole = {
- ADMIN: this.intl.t(ARIA_LABEL_ADMIN_TRANSLATION),
- MEMBER: this.intl.t(ARIA_LABEL_MEMBER_TRANSLATION),
- };
-
- get shouldDisplayManagingColumn() {
- return this.currentUser.isAdminOfCurrentCertificationCenter;
- }
-
- get shouldDisplayMemberManageButton() {
- return this.shouldDisplayChangeRoleOption || this.shouldDisplayLeaveCertificationCenterOption;
- }
-
- get shouldDisplayChangeRoleOption() {
- if (this.isCurrentUserMembership) {
- return false;
- }
-
- if (!this.currentUser.isAdminOfCurrentCertificationCenter) {
- return false;
- }
-
- return !this.isEditionMode;
- }
-
- get shouldDisplayLeaveCertificationCenterOption() {
- return this.args.isMultipleAdminsAvailable && this.isCurrentUserMembership;
- }
-
- get isCurrentUserMembership() {
- return this.currentUser.certificationPointOfContact.id === this.args.member.id;
- }
-
- @action
- setRoleSelection(value) {
- this.args.member.role = value;
- }
-
- @action
- toggleEditionMode() {
- this.isEditionMode = true;
- }
-
- @action
- async updateMember(member) {
- this.isEditionMode = false;
- try {
- await member.save();
- this.pixToast.sendSuccessNotification({
- message: this.intl.t('pages.team.members.notifications.change-member-role.success'),
- });
- } catch (e) {
- member.rollbackAttributes();
- this.pixToast.sendErrorNotification({
- message: this.intl.t('pages.team.members.notifications.change-member-role.error'),
- });
- }
- }
-
- @action
- cancelUpdateRoleOfMember() {
- this.isEditionMode = false;
- this.args.member.rollbackAttributes();
- }
-}
diff --git a/certif/app/components/members-list.hbs b/certif/app/components/members-list.hbs
index ff7e4a36b3f..a28d155d4ef 100644
--- a/certif/app/components/members-list.hbs
+++ b/certif/app/components/members-list.hbs
@@ -1,34 +1,11 @@
-
-
-
-
-
- {{t "common.labels.candidate.lastname"}}
- {{t "common.labels.candidate.firstname"}}
- {{t "common.labels.candidate.role"}}
- {{#if this.shouldDisplayManagingColumn}}
- {{t "pages.team.table-headers.actions"}}
- {{/if}}
- {{#if this.shouldDisplayRefererColumn}}
- {{t "pages.team.referer"}}
- {{/if}}
-
-
-
- {{#each @members as |member|}}
-
- {{/each}}
-
-
-
-
+
+
+
+
\ No newline at end of file
diff --git a/certif/app/components/members-list.js b/certif/app/components/members-list.js
index d39da0d1d4a..6c291ab76e7 100644
--- a/certif/app/components/members-list.js
+++ b/certif/app/components/members-list.js
@@ -11,20 +11,9 @@ export default class MembersList extends Component {
@tracked isLeaveCertificationCenterModalOpen = false;
@tracked isRemoveMemberModalOpen = false;
+ @tracked isChangeMemberRoleModalOpen = false;
@tracked removingMember;
-
- get shouldDisplayRefererColumn() {
- return this.args.hasCleaHabilitation;
- }
-
- get shouldDisplayManagingColumn() {
- return this.currentUser.isAdminOfCurrentCertificationCenter;
- }
-
- get isMultipleAdminsAvailable() {
- const adminMembers = this.args.members?.filter((member) => member.isAdmin);
- return adminMembers.length > 1;
- }
+ @tracked member;
@action
openLeaveCertificationCenterModal() {
@@ -37,6 +26,12 @@ export default class MembersList extends Component {
this.isRemoveMemberModalOpen = true;
}
+ @action
+ openChangeMemberRoleModal(member) {
+ this.member = member;
+ this.isChangeMemberRoleModalOpen = true;
+ }
+
@action
closeLeaveCertificationCenterModal() {
this.isLeaveCertificationCenterModalOpen = false;
@@ -48,6 +43,11 @@ export default class MembersList extends Component {
this.removingMember = undefined;
}
+ @action
+ closeChangeMemberRoleModal() {
+ this.isChangeMemberRoleModalOpen = false;
+ }
+
@action
async leaveCertificationCenter() {
try {
@@ -86,4 +86,22 @@ export default class MembersList extends Component {
this.closeRemoveMemberModal();
}
}
+
+ @action
+ async changeMemberRole(role) {
+ try {
+ this.member.role = role;
+ await this.member.save();
+ this.pixToast.sendSuccessNotification({
+ message: this.intl.t('pages.team.members.notifications.change-member-role.success'),
+ });
+ this.isChangeMemberRoleModalOpen = false;
+ } catch (_) {
+ this.member.rollbackAttributes();
+ this.pixToast.sendErrorNotification({
+ message: this.intl.t('pages.team.members.notifications.change-member-role.error'),
+ });
+ this.isChangeMemberRoleModalOpen = false;
+ }
+ }
}
diff --git a/certif/app/components/members-table.gjs b/certif/app/components/members-table.gjs
new file mode 100644
index 00000000000..ba1d19ee07c
--- /dev/null
+++ b/certif/app/components/members-table.gjs
@@ -0,0 +1,150 @@
+import PixIcon from '@1024pix/pix-ui/components/pix-icon';
+import PixIconButton from '@1024pix/pix-ui/components/pix-icon-button';
+import PixTable from '@1024pix/pix-ui/components/pix-table';
+import PixTableColumn from '@1024pix/pix-ui/components/pix-table-column';
+import PixTag from '@1024pix/pix-ui/components/pix-tag';
+import PixTooltip from '@1024pix/pix-ui/components/pix-tooltip';
+import { fn } from '@ember/helper';
+import { service } from '@ember/service';
+import Component from '@glimmer/component';
+import { t } from 'ember-intl';
+import { and, eq, notEq } from 'ember-truth-helpers';
+
+export default class MembersTable extends Component {
+ @service currentUser;
+ @service pixToast;
+ @service intl;
+
+ get isMultipleAdminsAvailable() {
+ const adminMembers = this.args.members.filter((member) => member.isAdmin);
+ return adminMembers.length > 1;
+ }
+
+ get shouldDisplayManagingColumn() {
+ return this.currentUser.isAdminOfCurrentCertificationCenter && this.args.members.length > 1;
+ }
+
+ get shouldDisplayRefererColumn() {
+ return this.args.hasCleaHabilitation;
+ }
+
+
+
+ <:columns as |member context|>
+
+ <:header>
+ {{t 'common.labels.candidate.lastname'}}
+
+ <:cell>
+ {{member.lastName}}
+
+
+
+ <:header>
+ {{t 'common.labels.candidate.firstname'}}
+
+ <:cell>
+ {{member.firstName}}
+
+
+
+ <:header>
+ {{t 'common.labels.candidate.role'}}
+
+ <:cell>
+ {{member.roleLabel}}
+
+
+ {{#if this.shouldDisplayRefererColumn}}
+
+ <:header>
+ {{t 'pages.team.referer'}}
+
+ <:cell>
+ {{#if member.isReferer}}
+
+
+ {{t 'pages.team.pix-referer'}}
+
+
+ <:triggerElement>
+
+
+
+
+ <:tooltip>
+ {{t 'pages.team.pix-referer-tooltip'}}
+
+
+
+ {{/if}}
+
+
+ {{/if}}
+ {{#if this.shouldDisplayManagingColumn}}
+
+ <:header>
+ {{t 'pages.team.table-headers.actions'}}
+
+ <:cell>
+
+ {{#if (notEq this.currentUser.certificationPointOfContact.id member.id)}}
+
+ <:triggerElement>
+
+
+ <:tooltip>
+ {{t 'pages.team.members.actions.edit-role'}}
+
+
+ {{/if}}
+ {{#if (notEq this.currentUser.certificationPointOfContact.id member.id)}}
+
+ <:triggerElement>
+
+
+ <:tooltip>
+ {{t 'pages.team.members.actions.remove-membership'}}
+
+
+ {{/if}}
+ {{#if
+ (and (eq this.currentUser.certificationPointOfContact.id member.id) this.isMultipleAdminsAvailable)
+ }}
+
+ <:triggerElement>
+
+
+ <:tooltip>
+ {{t 'pages.team.members.actions.leave-certification-center'}}
+
+
+ {{/if}}
+
+
+
+ {{/if}}
+
+
+
+}
diff --git a/certif/app/components/session-finalization/completed-reports-information-step.hbs b/certif/app/components/session-finalization/completed-reports-information-step.hbs
index 9064adc1a59..12ff8adc51c 100644
--- a/certif/app/components/session-finalization/completed-reports-information-step.hbs
+++ b/certif/app/components/session-finalization/completed-reports-information-step.hbs
@@ -1,99 +1,109 @@
-
+ {{t + "pages.session-finalization.reporting.table.reporting-count" + reportingsCount=report.certificationIssueReports.length + }} +
+ {{else}} + + {{/if}} +