Skip to content
Snippets Groups Projects
Commit 8464cbe4 authored by Rémi PAILHAREY's avatar Rémi PAILHAREY :fork_knife_plate:
Browse files

Merge branch '210-3-api-espace-coop-integration-de-tous-les-cnfs' into 'dev'

feat(admin): list all CNFS from Espace Coop

See merge request !536
parents 596304ea 1d7174fc
Branches
Tags
2 merge requests!550V2.3.2,!536feat(admin): list all CNFS from Espace Coop
Showing
with 184 additions and 5 deletions
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
"cSpell.language": "fr,en", "cSpell.language": "fr,en",
"cSpell.words": [ "cSpell.words": [
"carto", "carto",
"cnfs",
"covid", "covid",
"demarch", "demarch",
"facebook", "facebook",
......
# Stage 0, based on Node.js, to build and compile Angular # Stage 0, based on Node.js, to build and compile Angular
ARG DEPENDENCY_PROXY= ARG DEPENDENCY_PROXY=
FROM ${DEPENDENCY_PROXY}node:14.20-slim as build FROM ${DEPENDENCY_PROXY}node:14.20-slim AS build
WORKDIR /app WORKDIR /app
......
...@@ -2,6 +2,7 @@ import { NgModule } from '@angular/core'; ...@@ -2,6 +2,7 @@ import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router'; import { RouterModule, Routes } from '@angular/router';
import { ClaimStructureComponent } from './components/claim-structure/claim-structure.component'; import { ClaimStructureComponent } from './components/claim-structure/claim-structure.component';
import { DeletedStructuresComponent } from './components/deleted-structures/deleted-structures.component'; import { DeletedStructuresComponent } from './components/deleted-structures/deleted-structures.component';
import { EspaceCoopCNFSComponent } from './components/espace-coop-cnfs/espace-coop-cnfs.component';
import { ManageLockdownInfoComponent } from './components/lockdown-info/manage-lockdown-info.component'; import { ManageLockdownInfoComponent } from './components/lockdown-info/manage-lockdown-info.component';
import { ManageEmployersComponent } from './components/manage-employers/manage-employers.component'; import { ManageEmployersComponent } from './components/manage-employers/manage-employers.component';
import { ManageJobsComponent } from './components/manage-jobs/manage-jobs.component'; import { ManageJobsComponent } from './components/manage-jobs/manage-jobs.component';
...@@ -37,6 +38,10 @@ export const AdminRoutes = { ...@@ -37,6 +38,10 @@ export const AdminRoutes = {
link: 'admin/structure-list', link: 'admin/structure-list',
path: 'structure-list', path: 'structure-list',
}, },
espaceCoopCNFS: {
link: 'admin/espaceCoopCNFS',
path: 'espaceCoopCNFS',
},
}; };
const routes: Routes = [ const routes: Routes = [
...@@ -54,6 +59,7 @@ const routes: Routes = [ ...@@ -54,6 +59,7 @@ const routes: Routes = [
path: AdminRoutes.structuresList.path, path: AdminRoutes.structuresList.path,
component: AdminStructuresListComponent, component: AdminStructuresListComponent,
}, },
{ path: AdminRoutes.espaceCoopCNFS.path, component: EspaceCoopCNFSComponent },
]; ];
@NgModule({ @NgModule({
imports: [RouterModule.forChild(routes)], imports: [RouterModule.forChild(routes)],
......
...@@ -5,6 +5,7 @@ import { SharedModule } from '../shared/shared.module'; ...@@ -5,6 +5,7 @@ import { SharedModule } from '../shared/shared.module';
import { AdminRoutingModule } from './admin-routing.module'; import { AdminRoutingModule } from './admin-routing.module';
import { ClaimStructureComponent } from './components/claim-structure/claim-structure.component'; import { ClaimStructureComponent } from './components/claim-structure/claim-structure.component';
import { DeletedStructuresComponent } from './components/deleted-structures/deleted-structures.component'; import { DeletedStructuresComponent } from './components/deleted-structures/deleted-structures.component';
import { EspaceCoopCNFSComponent } from './components/espace-coop-cnfs/espace-coop-cnfs.component';
import { ManageLockdownInfoComponent } from './components/lockdown-info/manage-lockdown-info.component'; import { ManageLockdownInfoComponent } from './components/lockdown-info/manage-lockdown-info.component';
import { DeleteEmployerComponent } from './components/manage-employers/delete-employer/delete-employer.component'; import { DeleteEmployerComponent } from './components/manage-employers/delete-employer/delete-employer.component';
import { ManageEmployersComponent } from './components/manage-employers/manage-employers.component'; import { ManageEmployersComponent } from './components/manage-employers/manage-employers.component';
...@@ -46,6 +47,7 @@ import { AdminStructuresListComponent } from './components/structures-list/admin ...@@ -46,6 +47,7 @@ import { AdminStructuresListComponent } from './components/structures-list/admin
ManageEmployersComponent, ManageEmployersComponent,
DeletedStructuresComponent, DeletedStructuresComponent,
NavBarComponent, NavBarComponent,
EspaceCoopCNFSComponent,
], ],
imports: [CommonModule, AdminRoutingModule, SharedModule, AgGridModule], imports: [CommonModule, AdminRoutingModule, SharedModule, AgGridModule],
}) })
......
<app-admin-nav-bar />
<div class="adminLayout">
<h2>CNFS présents dans Espace Coop sans compte Rés'in ({{ unregisteredCNFS.length }})</h2>
<ag-grid-angular
*ngIf="unregisteredCNFS.length"
class="ag-theme-alpine user-table"
rowSelection="multiple"
domLayout="autoHeight"
style="width: 100%"
[rowData]="unregisteredCNFS"
[columnDefs]="unregisteredColumnDefs"
[getRowHeight]="getRowHeight"
>
</ag-grid-angular>
<p *ngIf="!unregisteredCNFS.length">Tous les CNFS dans Espace Coop ont un compte Rés'in</p>
<h2>CNFS présents dans Rés'in mais pas dans Espace Coop ({{ cnfsNotInEspaceCoop.length }})</h2>
<ag-grid-angular
*ngIf="cnfsNotInEspaceCoop.length"
class="ag-theme-alpine user-table"
rowSelection="multiple"
domLayout="autoHeight"
style="width: 100%"
[rowData]="cnfsNotInEspaceCoop"
[columnDefs]="notInEspaceCoopColumnDefs"
>
</ag-grid-angular>
<p *ngIf="!cnfsNotInEspaceCoop.length">Tous les CNFS dans Rés'in sont présents dans Espace Coop</p>
</div>
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { EspaceCoopCNFSComponent } from './espace-coop-cnfs.component';
describe('EspaceCoopCnfsComponent', () => {
let component: EspaceCoopCNFSComponent;
let fixture: ComponentFixture<EspaceCoopCNFSComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [EspaceCoopCNFSComponent],
}).compileComponents();
fixture = TestBed.createComponent(EspaceCoopCNFSComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
import { ColDef } from 'ag-grid-community';
import { User } from '../../../models/user.model';
import { AdminService } from '../../services/admin.service';
import { EspaceCoopCNFS } from './../../../models/espaceCoopCNFS.model';
@Component({
selector: 'app-espace-coop-cnfs',
templateUrl: './espace-coop-cnfs.component.html',
styleUrls: ['../../admin.scss'],
})
export class EspaceCoopCNFSComponent implements OnInit {
public unregisteredCNFS: EspaceCoopCNFS[] = [];
public unregisteredColumnDefs: ColDef<EspaceCoopCNFS>[] = [
{
headerName: 'Nom',
field: 'name',
sortable: true,
sort: 'asc',
resizable: true,
},
{
headerName: 'Employeur',
field: 'employer',
sortable: true,
// Case insensitive alphabetical order
comparator: (a, b) => a.toLowerCase().localeCompare(b.toLowerCase()),
flex: 1,
resizable: true,
},
{
headerName: 'Structures',
field: 'structures',
cellRenderer: (param) => param.data.structures.join('<br/>'),
flex: 1,
resizable: true,
},
{
headerName: 'Email',
field: 'email',
flex: 1,
resizable: true,
},
{
headerName: 'Téléphone',
field: 'phone',
resizable: true,
},
];
public cnfsNotInEspaceCoop: User[] = [];
public notInEspaceCoopColumnDefs: ColDef<User>[] = [
{
headerName: 'Prénom',
field: 'name',
sortable: true,
},
{
headerName: 'Nom',
field: 'surname',
sort: 'asc',
},
{
headerName: 'Email',
field: 'email',
},
{
headerName: 'Téléphone',
field: 'phone',
},
];
public getRowHeight(params: { data: EspaceCoopCNFS }): number {
const structures = params.data.structures || [];
if (structures.length <= 1) return 40;
return structures.length * 40;
}
constructor(private adminService: AdminService) {}
ngOnInit(): void {
this.adminService.getAllEspaceCoopCNFS().subscribe((espaceCoopCNFS) => {
this.unregisteredCNFS = espaceCoopCNFS.filter((member) => !member.hasAccount);
this.adminService.getAllResinCNFS().subscribe((resinCNFS) => {
this.cnfsNotInEspaceCoop = resinCNFS.filter(
(resin) => !espaceCoopCNFS.some((coop) => coop.email === resin.email)
);
});
});
}
}
...@@ -247,6 +247,8 @@ export class ManageEmployersComponent implements OnInit { ...@@ -247,6 +247,8 @@ export class ManageEmployersComponent implements OnInit {
} }
public getRowHeight(params): number { public getRowHeight(params): number {
return params.data.users ? (params.data.users.length != 0 ? params.data.users.length * 40 : 40) : 40; const users = params.data.users || [];
if (users.length <= 1) return 40;
return users.length * 40;
} }
} }
...@@ -439,10 +439,14 @@ export class ManageJobsComponent implements OnInit { ...@@ -439,10 +439,14 @@ export class ManageJobsComponent implements OnInit {
} }
public getUsersRowHeight(params): number { public getUsersRowHeight(params): number {
return params.data.users && params.data.users.length !== 0 ? params.data.users.length * 40 : 40; const users = params.data.users || [];
if (users.length <= 1) return 40;
return users.length * 40;
} }
public getJobsRowHeight(params): number { public getJobsRowHeight(params): number {
return params.data.jobs && params.data.jobs.length !== 0 ? params.data.jobs.length * 40 : 40; const jobs = params.data.jobs || [];
if (jobs.length <= 1) return 40;
return jobs.length * 40;
} }
} }
...@@ -325,7 +325,8 @@ export class ManageUsersComponent { ...@@ -325,7 +325,8 @@ export class ManageUsersComponent {
} }
public getRowHeight(params): number { public getRowHeight(params): number {
return params.data.structures?.length * 40 || 40; const structures = params.data.structures || [];
return structures.length !== 0 ? structures.length * 40 : 40;
} }
public onGridReady(params: GridReadyEvent, status: UsersStatus): void { public onGridReady(params: GridReadyEvent, status: UsersStatus): void {
......
...@@ -31,6 +31,11 @@ ...@@ -31,6 +31,11 @@
[style]="buttonTypeEnum.Secondary" [style]="buttonTypeEnum.Secondary"
(click)="router.navigateByUrl(routes.employersList.link)" (click)="router.navigateByUrl(routes.employersList.link)"
/> />
<app-button
[text]="'CNFS Espace Coop'"
[style]="buttonTypeEnum.Secondary"
(click)="router.navigateByUrl(routes.espaceCoopCNFS.link)"
/>
<app-button <app-button
[text]="'Infos covid'" [text]="'Infos covid'"
[style]="buttonTypeEnum.Secondary" [style]="buttonTypeEnum.Secondary"
......
...@@ -2,6 +2,7 @@ import { HttpClient } from '@angular/common/http'; ...@@ -2,6 +2,7 @@ import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { Employer } from '../../models/employer.model'; import { Employer } from '../../models/employer.model';
import { EspaceCoopCNFS } from '../../models/espaceCoopCNFS.model';
import { Job } from '../../models/job.model'; import { Job } from '../../models/job.model';
import { JobGroup } from '../../models/jobGroup.model'; import { JobGroup } from '../../models/jobGroup.model';
import { Structure } from '../../models/structure.model'; import { Structure } from '../../models/structure.model';
...@@ -208,4 +209,12 @@ export class AdminService { ...@@ -208,4 +209,12 @@ export class AdminService {
public restoreDeletedStructure(structureId: string): Observable<void> { public restoreDeletedStructure(structureId: string): Observable<void> {
return this.http.post<void>(`${this.baseUrl}/restoreDeletedStructure/${structureId}`, {}); return this.http.post<void>(`${this.baseUrl}/restoreDeletedStructure/${structureId}`, {});
} }
public getAllEspaceCoopCNFS() {
return this.http.get<EspaceCoopCNFS[]>(`${this.baseUrl}/espaceCoopCNFS`);
}
public getAllResinCNFS() {
return this.http.get<User[]>(`${this.baseUrl}/resinCNFS`);
}
} }
export interface EspaceCoopCNFS {
name: string;
email?: string;
phone?: string;
employer: string;
structures: string[];
hasAccount: boolean;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment