Commit 155a7a2f by Matteo

Aggiunta archiviazione a Pareri

parent e901180d
export interface ArchiviaRichiestaRequest {
daArchiviare: boolean,
cliente: number,
listaRichieste: number[];
}
import { ArchiviaRichiestaRequest } from './archivia-richiesta-request';
import { Richiesta } from './richiesta';
export interface ArchiviaRichiestaResponse {
richiesta: ArchiviaRichiestaRequest,
error: string,
richiesteNonArchiviate: Richiesta[]
}
......@@ -9,4 +9,6 @@ export interface Richiesta {
tipo: string;
interventi: Intervento[];
nomeFile: string;
checked: boolean;
errorText: string;
}
......@@ -61,7 +61,9 @@ export class IntervistePage implements OnInit {
testo: null,
data: null,
url: null,
tipo: null
tipo: null,
checked: false,
errorText: ""
};
var date : Date;
date = new Date();
......
......@@ -10,7 +10,31 @@
<div [ngSwitch]="parere" ngDefaultControl>
<div *ngSwitchCase="'lista'">
<div *ngFor="let parere of pareri; trackBy: trackByDoc" class="chat-list">
<div class="search-date date-div">
<div class="float-date">
<ion-item class="item-no-border">
<ion-checkbox name="privacy" [(ngModel)]="archiviati" class="check"> </ion-checkbox>
<ion-label>Visualizza Archiviati</ion-label>
</ion-item>
<ion-item class="item-no-border">
<ion-button (click)="cercaPareri()" class="search-arrow" title="Cerca pareri"><ion-icon class="button-icon" slot="icon-only" name="arrow-round-forward" title="Cerca documenti"></ion-icon></ion-button>
</ion-item>
</div>
<div class="clr"></div>
<ion-item class="item-no-border" id="buttons" style="display:none">
<div *ngIf="!archiviati">
Archivia Pareri
<ion-button (click)="archiviaPareri(true)" class="search-arrow" title="Archivia Pareri"><ion-icon class="button-icon" slot="icon-only" name="archive" title="Archivia Pareri"></ion-icon></ion-button>
</div>
<div *ngIf="archiviati">
Togli pareri dall'archivio
<ion-button (click)="archiviaPareri(false)" class="search-arrow" title="Riattiva Pareri"><ion-icon class="button-icon" slot="icon-only" name="undo" title="Riattiva documenti"></ion-icon></ion-button>
</div>
</ion-item>
</div>
<div *ngFor="let parere of pareri; trackBy: trackByDoc" class="chat-list">
<ion-checkbox name="privacy" [(ngModel)]="parere.checked" class="check" (click)="checkSelected(parere.idRichiesta)"> </ion-checkbox>
<div class="row-chat-list">
<div class="data" text-wrap>
{{parere.data}}
......
......@@ -5,6 +5,7 @@ import { Component, OnInit } from '@angular/core';
import { ModalController } from '@ionic/angular';
import { UtilService } from '../../service/util.service';
import { RichiesteResponse } from 'src/app/interface/richieste-response';
import { ArchiviaRichiestaResponse } from 'src/app/interface/archivia-richiesta-response';
import { AuthService } from 'src/app/auth/service/auth.service';
import { Richiesta } from 'src/app/interface/richiesta';
import { ParereService } from 'src/app/service/parere.service';
......@@ -48,11 +49,16 @@ export class ParerePage implements OnInit {
testo: null,
data: null,
url: null,
tipo: null
tipo: null,
checked: false,
errorText: ""
};
this.parere = "lista";
this.bottoneVisibile = true;
this.archiviati = false;
result = {dati: null, file: null};
this.pareriSelezionati = new Array();
this.error = "";
}
pareri: Richiesta[];
......@@ -61,6 +67,12 @@ export class ParerePage implements OnInit {
idSelezionato;
parere: string;
bottoneVisibile: boolean;
archiviati: boolean;
cercaPareri()
{
this.loadPareri("initial");
}
getFile(id, nomeFile, richiesta)
{
......@@ -72,7 +84,7 @@ export class ParerePage implements OnInit {
{
this.utilService.showLoading();
this.idCliente = AuthService.clienteSelezionato.id;
if(fase == "initial") this.parereService.getListaPareri(this.idCliente).subscribe((res: RichiesteResponse)=>{
if(fase == "initial") this.parereService.getListaPareri(this.idCliente, this.archiviati).subscribe((res: RichiesteResponse)=>{
this.utilService.closeLoading();
if(res.error){
this.utilService.presentAlert("Errore", "", res.error, ["OK"]);
......@@ -265,6 +277,79 @@ upload(str:any)
}
}
richiestaId;
checkSelected(id)
{
this.richiestaId = id;
this.hideButtons()
this.pareri.forEach(this.check, this);
}
check(richiesta: Richiesta, index)
{
if(richiesta.checked && richiesta.idRichiesta != this.richiestaId) this.showButtons();
if(!richiesta.checked && richiesta.idRichiesta == this.richiestaId) this.showButtons();
}
showButtons()
{
var buttons = document.getElementById('buttons');
buttons.setAttribute("style", "display:block");
}
hideButtons()
{
var buttons = document.getElementById('buttons');
buttons.setAttribute("style", "display:none");
}
pareriSelezionati: Array<number>;
error: string;
archiviaPareri(archiviare: boolean)
{
this.utilService.showLoading();
this.pareriSelezionati = new Array();
this.pareri.forEach(this.raccogliPareri, this);
this.parereService.archiviaPareri(this.idCliente, archiviare, this.pareriSelezionati).subscribe((res: ArchiviaRichiestaResponse)=>{
this.utilService.closeLoading();
if(res.error){
this.utilService.presentAlert("Errore", "", res.error, ["OK"]);
}
else
{
if(res.richiesteNonArchiviate.length > 0)
{
this.error = "Questa è la lista degli errori:\r\n"
res.richiesteNonArchiviate.forEach(this.getErrori, this);
this.utilService.presentAlert("Errore", "", this.error, ["OK"]);
}
else{
this.hideButtons();
this.loadPareri("initial");
this.apriLista();
}
}
},
(error: ErrorResponse) => {
this.utilService.closeLoading();
if(error != null && error.errorMsg != null) this.utilService.presentAlert("Errore", "", error.errorMsg, ["OK"]);
else if(error!=null) this.utilService.presentAlert("Errore", "", error, ["OK"]);
else this.utilService.presentAlert("Errore", "", "Errore durante la procedura di creazione nuovo Topic", ["OK"]);
});
}
getErrori(errore: Richiesta, index)
{
this.error = "Richiesta n° " + errore.idRichiesta + ":" + errore.errorText;
}
raccogliPareri(richiesta: Richiesta, index)
{
if(richiesta.checked) this.pareriSelezionati.push(richiesta.idRichiesta);
}
ngOnInit() {
}
......
import { ArchiviaRichiestaRequest } from '../interface/archivia-richiesta-request';
import { ParereResponse } from './../interface/parere-response';
import { Injectable } from '@angular/core';
import { UtilService } from '../service/util.service';
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
import { HttpClientDataService } from '../service/http-client-data.service';
import { RichiesteResponse } from '../interface/richieste-response';
import { ArchiviaRichiestaResponse } from 'src/app/interface/archivia-richiesta-response';
import { Observable, of} from 'rxjs';
import { RichiesteRequest } from '../interface/richieste-request';
import { Pair } from './../interface/pair';
......@@ -32,7 +34,7 @@ export class ParereService {
};
}
creaRichiesta(id, limite, dataDa, dataA): RichiesteRequest
creaRichiesta(id, limite, dataDa, dataA, archiviati): RichiesteRequest
{
var request:RichiesteRequest;
var pair:Pair;
......@@ -57,6 +59,16 @@ export class ParereService {
pairs.push(pair);
}
if(archiviati != null)
{
pair = {
key: "archiviato",
value: archiviati,
type: "boolean"
}
pairs.push(pair);
}
pair = {
key: "tipo",
value: "PARERE",
......@@ -91,6 +103,39 @@ export class ParereService {
return request;
}
creaRichiestaArchiviazione(id, archiviare, pareriSelezionati): ArchiviaRichiestaRequest
{
var request: ArchiviaRichiestaRequest;
request = {
cliente: id,
daArchiviare: archiviare,
listaRichieste: pareriSelezionati
};
return request;
}
archiviaPareri(id, archiviare, pareriSelezionati)
{
var richiesta = this.creaRichiestaArchiviazione(id, archiviare, pareriSelezionati);
var param = this.encodeArchiviaRichiesta(richiesta);
return this.httpClient.post<ArchiviaRichiestaResponse>(this.httpClientDataService.BASE_ADDRESS+'/intranet/setrichiestedaarchiviare.do', param, this.httpClientDataService.httpOptionsJson)
.pipe(
catchError(this.handleError),
tap( (res: ArchiviaRichiestaResponse ) => {
if (!res.error) {
this.errorRespose.error = false;
return res;
}
else{
this.errorRespose.error = true;
this.errorRespose.errorMsg = res.error;
}
})
);
}
newParere(id, title, question, file:string, nomeFile:string)
{
......@@ -137,9 +182,9 @@ export class ParereService {
);
}
getListaPareri(idCliente: string): Observable<RichiesteResponse>
getListaPareri(idCliente: string, archiviati: boolean): Observable<RichiesteResponse>
{
var richiesta = this.creaRichiesta(idCliente, 10, null, null);
var richiesta = this.creaRichiesta(idCliente, 10, null, null, archiviati);
var param = this.encodeBody(richiesta);
return this.httpClient.post<RichiesteResponse>(this.httpClientDataService.BASE_ADDRESS+'/intranet/richieste.do', param, this.httpClientDataService.httpOptionsJson)
.pipe(
......@@ -182,7 +227,7 @@ export class ParereService {
filtro = params.filtri[i];
if(first) first = false;
else request += ", ";
if(filtro.type == "int")
if(filtro.type == "int" || filtro.type == "boolean")
request += "\""+filtro.key + "\":"+filtro.value;
else
request += "\""+filtro.key + "\":\""+filtro.value+"\"";
......@@ -197,4 +242,21 @@ export class ParereService {
else request = "{\"cliente\" : "+params.cliente+",\"richiesta\" : "+params.richiesta+",\"titolo\" : \""+params.titolo+"\",\"testo\" : \""+params.testo+"\",\"tipo\" : \""+params.tipo+"\",\"file\" : \""+params.file+"\",\"nomeFile\" : \""+params.nomeFile+"\"}";
return request;
}
encodeArchiviaRichiesta(params: ArchiviaRichiestaRequest)
{
var request ="{\"cliente\" : " + params.cliente + ", \"daArchiviare\" : " + params.daArchiviare + ", \"listaRichieste\" : [";
var first = true;
for(let richiesta of params.listaRichieste)
{
if(first)
{
first = false;
request += "\""+richiesta+"\"";
}
else request += ", \""+richiesta+"\"";
}
request += "]}";
return request;
}
}
......@@ -850,6 +850,11 @@ ion-menu{
}
.chat-list {
border-bottom: 1px solid $grigio-lite;
.check {
float: left;
margin-top: 19px;
margin-right: 15px;
}
}
.row-chat-list {
border-bottom: $grigio-superlite;
......@@ -997,6 +1002,10 @@ ion-menu{
font-size: 13px;
padding-bottom: 15px;
margin-bottom: 5px;
.check {
float: left;
margin-right: 10px;
}
input[type=input] {
font-size: 15px;
display: inline-block;
......@@ -1029,6 +1038,11 @@ ion-menu{
border-bottom: 1px solid $grigio-superlite;
}
.date-div
{
border-bottom: 1px solid $grigio-superlite;
}
.popover-content {
@media (min-width: 600px) {
--min-width: 400px;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment