it.cnr.contab.incarichi00.bp.CRUDIncarichiRichiestaBP Maven / Gradle / Ivy
/*
* Copyright (C) 2019 Consiglio Nazionale delle Ricerche
*
* 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 Affero General Public License
* along with this program. If not, see .
*/
package it.cnr.contab.incarichi00.bp;
import java.rmi.RemoteException;
import it.cnr.contab.config00.sto.bulk.Unita_organizzativaBulk;
import it.cnr.contab.incarichi00.bulk.Incarichi_proceduraBulk;
import it.cnr.contab.incarichi00.bulk.Incarichi_richiestaBulk;
import it.cnr.contab.incarichi00.ejb.IncarichiRichiestaComponentSession;
import it.cnr.contab.utenze00.bulk.UtenteBulk;
import it.cnr.contab.util.Utility;
import it.cnr.jada.action.ActionContext;
import it.cnr.jada.action.BusinessProcessException;
import it.cnr.jada.action.Config;
import it.cnr.jada.bulk.OggettoBulk;
import it.cnr.jada.bulk.ValidationException;
import it.cnr.jada.comp.ComponentException;
import it.cnr.jada.util.action.CRUDBP;
import it.cnr.jada.util.action.SimpleDetailCRUDController;
import it.cnr.jada.util.jsp.Button;
public class CRUDIncarichiRichiestaBP extends it.cnr.jada.util.action.SimpleCRUDBP {
private boolean utenteAbilitatoPubblicazioneSito;
private boolean utenteAbilitatoFunzioniIncarichi;
private Unita_organizzativaBulk uoSrivania;
private SimpleDetailCRUDController incarichiProceduraColl = new SimpleDetailCRUDController( "IncarichiProceduraColl", Incarichi_proceduraBulk.class, "incarichi_proceduraColl", this);
/**
* Primo costruttore della classe CRUDIncarichiRichiestaBP.
*/
public CRUDIncarichiRichiestaBP() {
super();
}
/**
* Secondo costruttore della classe CRUDIncarichiRichiestaBP.
* @param String function
*/
public CRUDIncarichiRichiestaBP(String function) {
super(function);
}
protected void initialize(ActionContext context) throws BusinessProcessException {
super.initialize(context);
try {
setUoSrivania(it.cnr.contab.utenze00.bulk.CNRUserInfo.getUnita_organizzativa(context));
setUtenteAbilitatoPubblicazioneSito(UtenteBulk.isAbilitatoPubblicazioneSito(context.getUserContext()));
setUtenteAbilitatoFunzioniIncarichi(UtenteBulk.isAbilitatoFunzioniIncarichi(context.getUserContext()));
} catch (ComponentException e1) {
throw handleException(e1);
} catch (RemoteException e1) {
throw handleException(e1);
}
}
protected void basicEdit(ActionContext actioncontext, OggettoBulk oggettobulk, boolean flag) throws BusinessProcessException {
super.basicEdit(actioncontext, oggettobulk, flag);
if (((Incarichi_richiestaBulk)oggettobulk).isRichiestaScaduta()){
setStatus(CRUDBP.VIEW);
setMessage("Richiesta scaduta. Non consentita la modifica.");
}
if (((Incarichi_richiestaBulk)oggettobulk).isRichiestaInScadenza()){
setStatus(CRUDBP.VIEW);
if (isUtenteAbilitatoFunzioniIncarichi())
setMessage("Richiesta in scadenza. Inserire l'informazione sulla ricerca di personale interno o procedere con la fase successiva di richiesta attivazione contratto.");
else
setMessage("Richiesta in scadenza. Può essere modificata unicamente dal Direttore dell'Istituto.");
}
if (((Incarichi_richiestaBulk)oggettobulk).isPubblicazioneInCorso()){
setStatus(CRUDBP.VIEW);
setMessage("Richiesta in fase di pubblicazione. E' consentito solo l'annullamento della pubblicazione.");
}
else if (((Incarichi_richiestaBulk)oggettobulk).isRichiestaAnnullata()){
setStatus(CRUDBP.VIEW);
setMessage("Richiesta annullata. Non consentita la modifica.");
}
else if (((Incarichi_richiestaBulk)oggettobulk).isRichiestaCancellata()){
setStatus(CRUDBP.VIEW);
setMessage("Richiesta cancellata. Non consentita la modifica.");
}
else if (((Incarichi_richiestaBulk)oggettobulk).isRichiestaChiusa()){
setStatus(CRUDBP.VIEW);
setMessage("Richiesta chiusa. Non consentita la modifica.");
}
}
public void pubblicaSulSito(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException {
try {
if (isInserting())
save(context);
setModel(context,((IncarichiRichiestaComponentSession)createComponentSession()).pubblicaSulSito(context.getUserContext(), getModel()));
}
catch(Exception e)
{
throw handleException(e);
}
}
public void annullaPubblicazioneSulSito(it.cnr.jada.action.ActionContext context) throws it.cnr.jada.action.BusinessProcessException
{
((Incarichi_richiestaBulk)getModel()).setStato(Incarichi_richiestaBulk.STATO_ANNULLATO);
update(context);
}
public boolean isUtenteAbilitatoPubblicazioneSito() {
return utenteAbilitatoPubblicazioneSito;
}
private void setUtenteAbilitatoPubblicazioneSito(boolean utenteAbilitatoPubblicazioneSito) {
this.utenteAbilitatoPubblicazioneSito = utenteAbilitatoPubblicazioneSito;
}
public boolean isROPersonaleInterno(){
return ((Incarichi_richiestaBulk)getModel()).isRichiestaChiusa() ||
!((isUoEnte() ||isUtenteAbilitatoFunzioniIncarichi()) &&
((Incarichi_richiestaBulk)getModel()).isRichiestaInScadenza());
}
public boolean isRicercaDaChiudere(){
return !isROPersonaleInterno() &&
(((Incarichi_richiestaBulk)getModel()).isPubblicazioneFinita() &&
((Incarichi_richiestaBulk)getModel()).isRichiestaInScadenza() &&
!((Incarichi_richiestaBulk)getModel()).isRichiestaChiusa());
}
public boolean isButtonRichiediContrattoEnabled(){
Incarichi_richiestaBulk richiesta = (Incarichi_richiestaBulk)getModel();
return ((isUoEnte() || isUtenteAbilitatoFunzioniIncarichi()) &&
richiesta.isRichiestaInScadenza() &&
richiesta.getNrRisorseNonTrovate()>0 &&
richiesta.getNrContrattiAttivati().compareTo(richiesta.getNrRisorseNonTrovate())==-1);
}
public void create(ActionContext actioncontext) throws BusinessProcessException {
if (getModel() instanceof Incarichi_richiestaBulk) {
Incarichi_richiestaBulk inc = (Incarichi_richiestaBulk)getModel();
int maxlength = this.getBulkInfo().getFieldProperty("attivita_breve").getMaxLength();
if (inc.getAttivita_breve()==null && inc.getAttivita()!=null)
inc.setAttivita_breve(inc.getAttivita().substring(0,(inc.getAttivita().length()1 &&
(inc.getNr_risorse_trovate_si()+
inc.getNr_risorse_trovate_no()+
inc.getNr_risorse_trovate_na()!=inc.getNr_risorse_da_trovare()))
throw new ValidationException("Non è possibile chiudere una ricerca senza indicare l'esito totale della verifica di professionalità interna.");
}
}
public void validaRichiestaContratto(ActionContext actioncontext) throws ValidationException {
if (getModel() instanceof Incarichi_richiestaBulk) {
Incarichi_richiestaBulk inc = (Incarichi_richiestaBulk)getModel();
if (inc.isRichiestaScaduta())
throw new ValidationException("Non è possibile chiedere l'attivazione di un contratto sulla base di una richiesta scaduta.");
if (inc.isPubblicazioneInCorso())
throw new ValidationException("Non è possibile chiedere l'attivazione di un contratto sulla base di una richiesta ancora in fase di pubblicazione.");
if (!inc.isRichiestaInScadenza())
throw new ValidationException("Non è possibile chiedere l'attivazione di un contratto sulla base di una richiesta che si trova in uno stato diverso da quello 'In scadenza'.");
if (inc.getNr_risorse_trovate_si()==0 && inc.getNr_risorse_trovate_no()==0 && inc.getNr_risorse_trovate_na()==0)
throw new ValidationException("Non è possibile chiedere l'attivazione di un contratto sulla base di una richiesta senza l'informazione sull'esito della ricerca di personale interno.");
if (inc.getNr_risorse_da_trovare()==1 && inc.getPersonale_interno()==null)
throw new ValidationException("Non è possibile chiudere una ricerca senza indicare l'esito della ricerca di personale interno.");
if (inc.getNr_risorse_trovate_si()+
inc.getNr_risorse_trovate_no()+
inc.getNr_risorse_trovate_na()!=inc.getNr_risorse_da_trovare())
throw new ValidationException("Attenzione! Il risultato dell'esito della ricerca deve essere uguale al numero delle risorse cercate.");
if (inc.getNr_risorse_da_trovare()==1 && inc.getPersonale_interno().equals(Incarichi_richiestaBulk.PERSONALE_INTERNO_TROVATO))
throw new ValidationException("Non è possibile chiedere l'attivazione di un contratto sulla base di una richiesta con esito positivo della ricerca di personale interno.");
}
}
private Unita_organizzativaBulk getUoSrivania() {
return uoSrivania;
}
private void setUoSrivania(Unita_organizzativaBulk uoSrivania) {
this.uoSrivania = uoSrivania;
}
public boolean isUoEnte(){
return (getUoSrivania().getCd_tipo_unita().compareTo(it.cnr.contab.config00.sto.bulk.Tipo_unita_organizzativaHome.TIPO_UO_ENTE)==0);
}
public void completaUnitaOrganizzativa(it.cnr.jada.action.ActionContext context, Unita_organizzativaBulk uo) throws BusinessProcessException {
Incarichi_richiestaBulk incarico = (Incarichi_richiestaBulk)getModel();
String indirizzoNew="";
try {
if (incarico.getIndirizzo_unita_organizzativa()!=null && incarico.getIndirizzo_unita_organizzativa().equals(incarico.getSede_lavoro()))
indirizzoNew = Utility.createUnita_organizzativaComponentSession().getIndirizzoUnitaOrganizzativa(context.getUserContext(), uo, true);
}
catch(Exception e)
{
}
incarico.setUnita_organizzativa(uo);
if (indirizzoNew != "") {
incarico.setSede_lavoro(indirizzoNew);
incarico.setIndirizzo_unita_organizzativa(indirizzoNew);
}
}
protected Button[] createToolbar() {
Button[] toolbar = super.createToolbar();
Button[] newToolbar = new Button[ toolbar.length + 3];
int i;
for ( i = 0; i < toolbar.length; i++ )
newToolbar[i] = toolbar[i];
newToolbar[ i ] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()),"Toolbar.pubblica");
newToolbar[ i ].setSeparator(true);
newToolbar[ i+1 ] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()),"Toolbar.annullaPubblica");
newToolbar[ i+1 ].setSeparator(true);
newToolbar[ i+2 ] = new it.cnr.jada.util.jsp.Button(it.cnr.jada.util.Config.getHandler().getProperties(getClass()),"Toolbar.goToIncarichiProcedura");
newToolbar[ i+2 ].setSeparator(true);
return newToolbar;
}
public boolean isPubblicaButtonHidden() {
return !(isUoEnte()||isUtenteAbilitatoPubblicazioneSito()) ||
!(isInserting()||((Incarichi_richiestaBulk)getModel()).isRichiestaProvvisoria());
}
public boolean isAnnullaPubblicaButtonHidden() {
return !(isUoEnte()||isUtenteAbilitatoPubblicazioneSito()) ||
isInserting()||
((Incarichi_richiestaBulk)getModel()).isRichiestaProvvisoria()||
!((Incarichi_richiestaBulk)getModel()).isPubblicazioneInCorso();
}
public boolean isSaveButtonEnabled() {
return super.isSaveButtonEnabled()||isRicercaDaChiudere();
}
public boolean isUtenteAbilitatoFunzioniIncarichi() {
return utenteAbilitatoFunzioniIncarichi;
}
private void setUtenteAbilitatoFunzioniIncarichi(boolean utenteAbilitatoFunzioniIncarichi) {
this.utenteAbilitatoFunzioniIncarichi = utenteAbilitatoFunzioniIncarichi;
}
public OggettoBulk initializeModelForEdit(ActionContext actioncontext, OggettoBulk oggettobulk) throws BusinessProcessException {
oggettobulk = super.initializeModelForEdit(actioncontext, oggettobulk);
if (oggettobulk instanceof Incarichi_richiestaBulk){
Incarichi_richiestaBulk model = (Incarichi_richiestaBulk)oggettobulk;
model.caricaNrRisorseTrovateList(actioncontext);
if (model.getNr_risorse_da_trovare()==1) {
if (model.getNr_risorse_trovate_si()==1)
model.setPersonale_interno(Incarichi_richiestaBulk.PERSONALE_INTERNO_TROVATO);
else if (model.getNr_risorse_trovate_no()==1)
model.setPersonale_interno(Incarichi_richiestaBulk.PERSONALE_INTERNO_NON_TROVATO);
else if (model.getNr_risorse_trovate_na()==1)
model.setPersonale_interno(Incarichi_richiestaBulk.PERSONALE_INTERNO_TROVATO_NON_ADATTO);
}
}
return oggettobulk;
}
public OggettoBulk initializeModelForInsert(ActionContext actioncontext, OggettoBulk oggettobulk) throws BusinessProcessException {
if (oggettobulk instanceof Incarichi_richiestaBulk) {
((Incarichi_richiestaBulk)oggettobulk).setNr_risorse_da_trovare(1);
((Incarichi_richiestaBulk)oggettobulk).setNr_risorse_trovate_si(0);
((Incarichi_richiestaBulk)oggettobulk).setNr_risorse_trovate_no(0);
((Incarichi_richiestaBulk)oggettobulk).setNr_risorse_trovate_na(0);
}
return super.initializeModelForInsert(actioncontext, oggettobulk);
}
public SimpleDetailCRUDController getIncarichiProceduraColl() {
return incarichiProceduraColl;
}
public void setIncarichiProceduraColl(SimpleDetailCRUDController incarichiProceduraColl) {
this.incarichiProceduraColl = incarichiProceduraColl;
}
public boolean isApriIncarichiProceduraButtonHidden() {
return isSearching() ||
getIncarichiProceduraColl()==null ||
getIncarichiProceduraColl().getModel() == null;
}
protected void init(Config config, ActionContext actioncontext) throws BusinessProcessException {
setTab("tab","tabTestata");
super.init(config, actioncontext);
}
} © 2015 - 2025 Weber Informatics LLC | Privacy Policy