package com.axiastudio.suite.protocollo;
import com.axiastudio.menjazo.AlfrescoHelper;
import com.axiastudio.pypapi.Register;
import com.axiastudio.pypapi.db.Controller;
import com.axiastudio.pypapi.db.Database;
import com.axiastudio.pypapi.db.IDatabase;
import com.axiastudio.pypapi.db.Validation;
import com.axiastudio.suite.anagrafiche.AnagraficheUtil;
import com.axiastudio.suite.anagrafiche.entities.Soggetto;
import com.axiastudio.suite.base.BaseUtil;
import com.axiastudio.suite.base.entities.Ufficio;
import com.axiastudio.suite.email.EMail;
import com.axiastudio.suite.plugins.cmis.CmisPlugin;
import com.axiastudio.suite.protocollo.entities.*;
import java.util.ArrayList;
import java.util.List;
/**
* User: tiziano
* Date: 18/03/14
* Time: 09:00
*/
public class ProtocolloUtil {
public static Protocollo protocollaEmail(EMail email){
Protocollo protocollo = new Protocollo();
protocollo.setTipo(TipoProtocollo.ENTRATA);
protocollo.setOggetto(email.getSubject());
// soggetti
List<SoggettoProtocollo> soggettoProtocolloList = new ArrayList<SoggettoProtocollo>();
for( String from: email.getFroms() ){
List<Soggetto> mittenti = AnagraficheUtil.trovaSoggettoDaPec(from);
for( Soggetto mittente: mittenti ){
SoggettoProtocollo soggettoProtocollo = new SoggettoProtocollo();
soggettoProtocollo.setSoggetto(mittente);
soggettoProtocolloList.add(soggettoProtocollo);
}
}
protocollo.setSoggettoProtocolloCollection(soggettoProtocolloList);
// sportello
Ufficio sportello=null;
// uffici e attribuzioni
List<UfficioProtocollo> ufficioProtocolloList = new ArrayList<UfficioProtocollo>();
List<Attribuzione> attribuzioneList = new ArrayList<Attribuzione>();
Boolean principale = Boolean.FALSE;
for( String to: email.getTos() ){
Ufficio ufficio = BaseUtil.trovaUfficioDaPec(to);
UfficioProtocollo ufficioProtocollo = new UfficioProtocollo();
ufficioProtocollo.setUfficio(ufficio);
ufficioProtocolloList.add(ufficioProtocollo);
Attribuzione attribuzione = new Attribuzione();
attribuzione.setUfficio(ufficio);
if( !principale ){
attribuzione.setPrincipale(true);
principale = Boolean.TRUE;
}
attribuzioneList.add(attribuzione);
if( sportello==null ){
protocollo.setSportello(ufficio);
}
}
protocollo.setUfficioProtocolloCollection(ufficioProtocolloList);
protocollo.setAttribuzioneCollection(attribuzioneList);
// pratiche
protocollo.setPraticaProtocolloCollection(new ArrayList<PraticaProtocollo>());
Database db = (Database) Register.queryUtility(IDatabase.class);
Controller controller = db.createController(Protocollo.class);
Validation validation = controller.commit(protocollo);
if( !validation.getResponse() ){
return null;
}
// allegato
CmisPlugin cmisPluginProtocollo = (CmisPlugin) Register.queryPlugin(Protocollo.class, "CMIS");
AlfrescoHelper helper = cmisPluginProtocollo.createAlfrescoHelper(protocollo);
helper.createFolder();
helper.createDocument("", "test.eml", email.getBytes());
return protocollo;
}
}