Skip to content
Snippets Groups Projects
Verified Commit dacc5ea0 authored by Alex ORLUC's avatar Alex ORLUC
Browse files

FEAT #8391 TIME 2 split externals paraph components + add send action xparaph

parent 0f2d6a8b
No related branches found
No related tags found
No related merge requests found
Showing with 152 additions and 63 deletions
......@@ -54,13 +54,14 @@ class XParaphController
$xmlStep = '';
foreach ($aArgs['steps'] as $key => $step) {
$order = $key + 1;
$xmlStep .= '<EtapeDepot>
<user_siret xsi:type="xsd:string">'.$aArgs['info']['siret'].'</user_siret>
<user_login xsi:type="xsd:string">'.$step['login'].'</user_login>
<action xsi:type="xsd:string">'.$step['action'].'</action>
<contexte xsi:type="xsd:string">'.$step['contexte'].'</contexte>
<norejet xsi:type="xsd:string">0</norejet>
<ordre xsi:type="xsd:int">'.$key.'</ordre>
<ordre xsi:type="xsd:int">'.$order.'</ordre>
</EtapeDepot>';
}
......
<div class="col-md-12" style="padding-top: 10px;" *ngIf="signatoryBookEnabled == 'maarchParapheur' && additionalsInfos.users.length != 0">
<mat-form-field>
<mat-label>{{lang.userMaarchParapheur}}</mat-label>
<mat-select name="processingUser" [(ngModel)]="externalSignatoryBookDatas.processingUser" required>
<mat-option *ngFor="let user of additionalsInfos.users" [value]="user.id">
{{user.firstname}} {{user.lastname}} ({{user.email}})
</mat-option>
</mat-select>
</mat-form-field>
</div>
<div class="col-md-12" *ngIf="additionalsInfos.users.length == 0">
{{lang.noUserDefinedInMaarchParapheur}}
</div>
<div class="col-sm-12" *ngIf="additionalsInfos.users.length != 0">
<mat-radio-group required name="objectSent" [(ngModel)]="externalSignatoryBookDatas.objectSent">
<mat-radio-button color="primary" name="objectSent" checked value="mail">{{lang.mailNote}}</mat-radio-button>
<mat-radio-button color="primary" name="objectSent" value="attachment">{{lang.attachmentSignature}}</mat-radio-button><br><br>
</mat-radio-group>
</div>
<div class="col-md-12" *ngIf="additionalsInfos.noMail.length != 0 && externalSignatoryBookDatas.objectSent == 'mail'">
<div>
<div class="alert-message alert-message-danger mailList" role="alert">
<p>
{{lang.canNotMakeAction}} :
</p>
<ul>
<li *ngFor="let mail of additionalsInfos.noMail">
<b>{{mail.alt_identifier}}</b> : {{lang[mail.reason]}}
</li>
</ul>
</div>
</div>
</div>
\ No newline at end of file
import { Component, OnInit, Input } from '@angular/core';
import { LANG } from '../../../translate.component';
import { NotificationService } from '../../../notification.service';
import { HttpClient } from '@angular/common/http';
declare function $j(selector: any): any;
@Component({
selector: 'app-maarch-paraph',
templateUrl: "maarch-paraph.component.html",
styleUrls: ['maarch-paraph.component.scss'],
providers: [NotificationService],
})
export class MaarchParaphComponent implements OnInit {
lang: any = LANG;
loading: boolean = false;
currentAccount: any = null;
usersWorkflowList: any[] = [];
@Input('additionalsInfos') additionalsInfos: any;
@Input('externalSignatoryBookDatas') externalSignatoryBookDatas: any;
constructor(public http: HttpClient, private notify: NotificationService) { }
ngOnInit(): void { }
checkValidParaph() {
if (!this.externalSignatoryBookDatas.processingUser ||
this.additionalsInfos.users.length == 0 ||
(this.externalSignatoryBookDatas.objectSent == 'attachment' && this.additionalsInfos.attachments.length == 0) ||
(this.externalSignatoryBookDatas.objectSent == 'mail' && this.additionalsInfos.mails.length == 0)) {
return true;
} else {
return false;
}
}
getRessources() {
if (this.externalSignatoryBookDatas.objectSent == 'attachment') {
return this.additionalsInfos.attachments.map((e: any) => { return e.res_id; });
} else if (this.externalSignatoryBookDatas.objectSent == 'mail') {
return this.additionalsInfos.mails.map((e: any) => { return e.res_id; });
}
}
getDatas() {
return this.externalSignatoryBookDatas;
}
}
<h1 mat-dialog-title>{{data.action.label_action}}</h1>
<div mat-dialog-content >
<div mat-dialog-content>
<div *ngIf="loading" class="loading" style="display:flex;height:100%;">
<mat-spinner style="margin:auto;"></mat-spinner>
</div>
......@@ -8,32 +8,19 @@
<div class="row" style="margin: 0;">
<div class="col-md-12">
{{lang.makeActionOn}}
<b *ngIf="data.selectedRes.length == 1 && data.contextChrono != ''" color="primary" class="highlight">{{data.contextChrono}}</b>
<b *ngIf="data.selectedRes.length == 1 && data.contextChrono != ''" color="primary"
class="highlight">{{data.contextChrono}}</b>
<b *ngIf="!data.contextMode" color="primary" class="highlight">{{data.selectedRes.length}}
{{lang.elements}}</b> ?
</div>
<div>
<app-x-paraph *ngIf="signatoryBookEnabled=='xParaph'" [additionalsInfos]="additionalsInfos"></app-x-paraph>
<div class="col-md-12" style="padding-top: 10px;" *ngIf="signatoryBookEnabled == 'maarchParapheur' && additionalsInfos.users.length != 0">
<mat-form-field>
<mat-label>{{lang.userMaarchParapheur}}</mat-label>
<mat-select name="processingUser" [(ngModel)]="externalSignatoryBookDatas.processingUser" required>
<mat-option *ngFor="let user of additionalsInfos.users" [value]="user.id">
{{user.firstname}} {{user.lastname}} ({{user.email}})
</mat-option>
</mat-select>
</mat-form-field>
</div>
<div class="col-md-12" *ngIf="signatoryBookEnabled == 'maarchParapheur' && additionalsInfos.users.length == 0">
{{lang.noUserDefinedInMaarchParapheur}}
</div>
<div class="col-sm-12" *ngIf="signatoryBookEnabled == 'maarchParapheur' && additionalsInfos.users.length != 0">
<mat-radio-group required name="objectSent" [(ngModel)]="externalSignatoryBookDatas.objectSent">
<mat-radio-button color="primary" name="objectSent" checked value="mail">{{lang.mailNote}}</mat-radio-button>
<mat-radio-button color="primary" name="objectSent" value="attachment">{{lang.attachmentSignature}}</mat-radio-button><br><br>
</mat-radio-group>
</div>
<div class="col-md-12" *ngIf="additionalsInfos.noAttachment.length != 0 && (signatoryBookEnabled != 'maarchParapheur' || (signatoryBookEnabled == 'maarchParapheur' && externalSignatoryBookDatas.objectSent == 'attachment'))">
<app-maarch-paraph #maarchParaph *ngIf="signatoryBookEnabled=='maarchParapheur'"
[additionalsInfos]="additionalsInfos" [externalSignatoryBookDatas]="externalSignatoryBookDatas">
</app-maarch-paraph>
<app-x-paraph #xParaph *ngIf="signatoryBookEnabled=='xParaph'" [additionalsInfos]="additionalsInfos"
[externalSignatoryBookDatas]="externalSignatoryBookDatas"></app-x-paraph>
<div class="col-md-12"
*ngIf="additionalsInfos.noAttachment.length != 0 && externalSignatoryBookDatas.objectSent == 'attachment'">
<div>
<div class="alert-message alert-message-danger mailList" role="alert">
<p>
......@@ -47,20 +34,6 @@
</div>
</div>
</div>
<div class="col-md-12" *ngIf="signatoryBookEnabled == 'maarchParapheur' && additionalsInfos.noMail.length != 0 && externalSignatoryBookDatas.objectSent == 'mail'">
<div>
<div class="alert-message alert-message-danger mailList" role="alert">
<p>
{{lang.canNotMakeAction}} :
</p>
<ul>
<li *ngFor="let mail of additionalsInfos.noMail">
<b>{{mail.alt_identifier}}</b> : {{lang[mail.reason]}}
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="col-md-12">
<app-note-editor #noteEditor [resIds]="data.selectedRes"></app-note-editor>
......@@ -70,15 +43,6 @@
</mat-sidenav-container>
</div>
<div mat-dialog-actions class="actions">
<button mat-raised-button mat-button color="primary"
[disabled]="loading || (signatoryBookEnabled != 'maarchParapheur' && additionalsInfos.attachments.length == 0) ||
(signatoryBookEnabled == 'maarchParapheur' && (
!externalSignatoryBookDatas.processingUser ||
additionalsInfos.users.length == 0 ||
(externalSignatoryBookDatas.objectSent == 'attachment' && additionalsInfos.attachments.length == 0) ||
(externalSignatoryBookDatas.objectSent == 'mail' && additionalsInfos.mails.length == 0)
)
)"
(click)="onSubmit()">{{lang.validate}}</button>
<button mat-raised-button mat-button color="primary" [disabled]="loading || checkValidAction()" (click)="onSubmit()">{{lang.validate}}</button>
<button mat-raised-button mat-button [disabled]="loading" [mat-dialog-close]="">{{lang.cancel}}</button>
</div>
\ No newline at end of file
......@@ -4,6 +4,8 @@ import { NotificationService } from '../../notification.service';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';
import { HttpClient } from '@angular/common/http';
import { NoteEditorComponent } from '../../notes/note-editor.component';
import { XParaphComponent } from './x-paraph/x-paraph.component';
import { MaarchParaphComponent } from './maarch-paraph/maarch-paraph.component';
@Component({
templateUrl: "send-external-signatory-book-action.component.html",
......@@ -21,14 +23,18 @@ export class SendExternalSignatoryBookActionComponent implements OnInit {
mails: [],
noMail: []
};
signatoryBookEnabled: any;
signatoryBookEnabled: string = 'maarchParapheur';
externalSignatoryBookDatas: any = {
objectSent: 'mail',
objectSent: 'attachment',
processingUser: ''
};
errors: any;
@ViewChild('noteEditor') noteEditor: NoteEditorComponent;
@ViewChild('xParaph') xParaph: XParaphComponent;
@ViewChild('maarchParaph') maarchParaph: MaarchParaphComponent;
constructor(public http: HttpClient, private notify: NotificationService, public dialogRef: MatDialogRef<SendExternalSignatoryBookActionComponent>, @Inject(MAT_DIALOG_DATA) public data: any) { }
......@@ -51,13 +57,12 @@ export class SendExternalSignatoryBookActionComponent implements OnInit {
this.loading = true;
let realResSelected: string[];
if (this.signatoryBookEnabled != 'maarchParapheur' || (this.signatoryBookEnabled == 'maarchParapheur' && this.externalSignatoryBookDatas.objectSent == 'attachment')) {
realResSelected = this.additionalsInfos.attachments.map((e: any) => { return e.res_id; });
} else if (this.signatoryBookEnabled == 'maarchParapheur' && this.externalSignatoryBookDatas.objectSent == 'mail') {
realResSelected = this.additionalsInfos.mails.map((e: any) => { return e.res_id; });
}
let datas: any;
realResSelected = this[this.signatoryBookEnabled].getRessources();
datas = this[this.signatoryBookEnabled].getDatas();
this.http.put('../../rest/resourcesList/users/' + this.data.currentBasketInfo.ownerId + '/groups/' + this.data.currentBasketInfo.groupId + '/baskets/' + this.data.currentBasketInfo.basketId + '/actions/' + this.data.action.id, { resources: realResSelected, note: this.noteEditor.getNoteContent(), data: this.externalSignatoryBookDatas })
this.http.put('../../rest/resourcesList/users/' + this.data.currentBasketInfo.ownerId + '/groups/' + this.data.currentBasketInfo.groupId + '/baskets/' + this.data.currentBasketInfo.basketId + '/actions/' + this.data.action.id, { resources: realResSelected, note: this.noteEditor.getNoteContent(), data: datas })
.subscribe((data: any) => {
if (!data) {
this.dialogRef.close('success');
......@@ -71,4 +76,12 @@ export class SendExternalSignatoryBookActionComponent implements OnInit {
this.loading = false;
});
}
checkValidAction() {
if (this[this.signatoryBookEnabled] !== undefined) {
return this[this.signatoryBookEnabled].checkValidParaph();
} else {
return true;
}
}
}
......@@ -26,27 +26,27 @@ export class XParaphComponent implements OnInit {
contextList = [
{
'id': 'FON',
'label': 'fon'
'label': 'agent'
},
{
'id': 'PER',
'label': 'per'
'label': 'personne physique (personnel)'
},
{
'id': 'SPH',
'label': 'sph'
'label': 'supérieur hiérarchique'
},
{
'id': 'DIR',
'label': 'dir'
'label': 'directeur'
},
{
'id': 'DLP',
'label': 'dlp'
'label': 'délégation permanente'
},
{
'id': 'EXE',
'label': 'exe'
'label': 'représentant de la collectivité'
}
];
hidePassword: boolean = true;
......@@ -55,6 +55,7 @@ export class XParaphComponent implements OnInit {
filteredUsers: Observable<any[]>;
@Input('additionalsInfos') additionalsInfos: any;
@Input('externalSignatoryBookDatas') externalSignatoryBookDatas: any;
constructor(public http: HttpClient, private notify: NotificationService) { }
......@@ -129,10 +130,34 @@ export class XParaphComponent implements OnInit {
}
checkValidParaph() {
if (this.currentWorkflow.length > 0 && this.currentAccount.login != '' && this.currentAccount.password != '' && this.currentAccount.siret != '') {
if (this.additionalsInfos.attachments.length > 0 && this.currentWorkflow.length > 0 && this.currentAccount.login != '' && this.currentAccount.password != '' && this.currentAccount.siret != '') {
return false;
} else {
return true;
}
}
getRessources() {
return this.additionalsInfos.attachments.map((e: any) => { return e.res_id; });
}
getDatas() {
this.externalSignatoryBookDatas =
{
"info": {
"siret": this.currentAccount.siret,
"login": this.currentAccount.login,
"password": this.currentAccount.password
},
"steps": []
};
this.currentWorkflow.forEach(element => {
this.externalSignatoryBookDatas.steps.push({
"login": element.userId,
"action": element.currentRole == 'visa' ? '2' : '1',
"contexte": element.currentContext
})
});
return this.externalSignatoryBookDatas;
}
}
......@@ -34,6 +34,7 @@ import { CloseAndIndexActionComponent } from './actions/close-and-in
import { UpdateDepartureDateActionComponent } from './actions/update-departure-date-action/update-departure-date-action.component';
import { SendExternalSignatoryBookActionComponent } from './actions/send-external-signatory-book-action/send-external-signatory-book-action.component';
import { XParaphComponent } from './actions/send-external-signatory-book-action/x-paraph/x-paraph.component';
import { MaarchParaphComponent } from './actions/send-external-signatory-book-action/maarch-paraph/maarch-paraph.component';
import { ProcessActionComponent } from './actions/process-action/process-action.component';
import { ViewDocActionComponent } from './actions/view-doc-action/view-doc-action.component';
import { RedirectActionComponent } from './actions/redirect-action/redirect-action.component';
......@@ -98,6 +99,7 @@ import { AvisWorkflowComponent } from './avis/avis-workflow.componen
UpdateDepartureDateActionComponent,
SendExternalSignatoryBookActionComponent,
XParaphComponent,
MaarchParaphComponent,
ProcessActionComponent,
ViewDocActionComponent,
RedirectActionComponent,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment