/*
* Copyright (C) 2013 AXIA Studio (http://www.axiastudio.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Afffero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.axiastudio.suite.protocollo;
import com.axiastudio.suite.base.entities.Ufficio;
import com.axiastudio.suite.base.entities.UfficioUtente;
import com.axiastudio.suite.base.entities.Utente;
import com.axiastudio.suite.protocollo.entities.Attribuzione;
import com.axiastudio.suite.protocollo.entities.Protocollo;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author AXIA Studio (http://www.axiastudio.com)
*/
public class ProfiloUtenteProtocollo {
private final Protocollo protocollo;
private final Utente autenticato;
private final Ufficio sportello;
private Ufficio attribuzionePrincipale = null;
private ArrayList attribuzioni = new ArrayList();
private ArrayList ufficiUtente = new ArrayList();
private ArrayList ufficiRicercaUtente = new ArrayList();
private ArrayList ufficiRiservatoUtente = new ArrayList();
private ArrayList ufficiVisualizzaUtente = new ArrayList();
private ArrayList ufficiConsolidaUtente = new ArrayList();
public ProfiloUtenteProtocollo(Protocollo protocollo, Utente autenticato) {
this.protocollo = protocollo;
this.autenticato = autenticato;
this.sportello = protocollo.getSportello();
if( protocollo.getAttribuzioneCollection() != null ){
for( Attribuzione attribuzione: protocollo.getAttribuzioneCollection() ){
this.attribuzioni.add(attribuzione.getUfficio());
if( attribuzione.getPrincipale() ){
this.attribuzionePrincipale = attribuzione.getUfficio();
}
}
}
if( this.autenticato.getUfficioUtenteCollection() != null ){
for(UfficioUtente uu: this.autenticato.getUfficioUtenteCollection()){
this.ufficiUtente.add(uu.getUfficio());
if( uu.getRicerca() ){
this.ufficiRicercaUtente.add(uu.getUfficio());
}
if( uu.getRiservato() ){
this.ufficiRiservatoUtente.add(uu.getUfficio());
}
if( uu.getVisualizza() ){
this.ufficiVisualizzaUtente.add(uu.getUfficio());
}
if( uu.getConsolida() ){
this.ufficiConsolidaUtente.add(uu.getUfficio());
}
}
}
}
/*
* Inserito nell'ufficio sportello o in almeno una attribuzione
*/
public Boolean inSportelloOAttribuzione(){
List intersezione = new ArrayList(attribuzioni);
intersezione.retainAll(ufficiUtente);
return ufficiUtente.contains(sportello) || intersezione.size()>0;
}
/*
* Inserito nell'ufficio sportello o nell'attribuzione principale
*/
public Boolean inSportelloOAttribuzionePrincipale(){
return ufficiUtente.contains(sportello) || ufficiUtente.contains(attribuzionePrincipale);
}
/*
* Inserito nell'ufficio sportello o in almeno una attribuzione con flag riservato
*/
public Boolean inSportelloOAttribuzioneR(){
List intersezione = new ArrayList(attribuzioni);
intersezione.retainAll(ufficiUtente);
return ufficiRiservatoUtente.contains(sportello) || intersezione.size()>0;
}
/*
* Inserito nell'ufficio sportello o in almeno una attribuzione con flag visualizza
*/
public Boolean inSportelloOAttribuzioneV(){
List intersezione = new ArrayList(attribuzioni);
intersezione.retainAll(ufficiUtente);
return ufficiVisualizzaUtente.contains(sportello) || intersezione.size()>0;
}
/*
* Inserito nell'ufficio sportello o nell'attribuzione principale con flag riservato
*/
public Boolean inSportelloOAttribuzionePrincipaleR(){
return ufficiRiservatoUtente.contains(sportello) || ufficiRiservatoUtente.contains(attribuzionePrincipale);
}
/*
* Inserito nell'ufficio sportello o nell'attribuzione principale con flag visualizza
*/
public Boolean inSportelloOAttribuzionePrincipaleV(){
return ufficiVisualizzaUtente.contains(sportello) || ufficiVisualizzaUtente.contains(attribuzionePrincipale);
}
/*
* Inserito nell'attribuzione principale con flag consolida
*/
public Boolean inAttribuzionePrincipaleC(){
return ufficiConsolidaUtente.contains(attribuzionePrincipale);
}
/*
* Non inserito nello sportello o in una attribuzione
*/
public Boolean neSportelloNeAttribuzione(){
return !(inSportelloOAttribuzione() || inSportelloOAttribuzioneR());
}
}