Ejemplo n.º 1
0
        public ResultProgressivo GetProgressivo(TipoProtocollo tipo, Condominio condominio)
        {
            int? progressivo = null;
            string message = string.Empty;

            try
            {
                if (tipo == TipoProtocollo.VersamentoCondomino)
                    throw new InvalidOperationException("Per 'VersamentoCondomino' è consentita la creazione del protocollo solo per Esercizio.");
                if (tipo == TipoProtocollo.Fattura)
                    throw new InvalidOperationException("Per 'Fattura' è consentita la creazione del protocollo solo per Anno.");

                const string hql = "FROM Protocollo P WHERE P.Tipo =:tipo AND P.CondominioRiferimento = :condominio";
                var prot = _daoFactory.GetProtocolloDao().GetByQuery(hql, new[] { new QueryParam("tipo", Conversione.ToHQLParameter(tipo)), new QueryParam("condominio", condominio) });
                if (prot != null)
                {
                    if (prot.Count > 0)
                    {
                        try
                        {
                            var protocollo = _daoFactory.GetProtocolloDao().GetById(prot[0].ID, true);
                            progressivo = protocollo.Progressivo + 1;
                            protocollo.Progressivo = progressivo.Value;
                        }
                        catch (Exception ex)
                        {
                            _log.WarnFormat("Errore inaspettato nel salvataggio (UPDATE) del progressivo di protocollo - (TIPO, CONDOMINIO) - {0} - tipo: ", ex, Utility.GetMethodDescription(), tipo);
                            throw;
                        } 
                        
                        if (prot.Count > 1)
                        {
                            _log.WarnFormat("Trovato più di un protocollo con le selezioni indicate - {0} - (tipo, condominio) - tipo: ", Utility.GetMethodDescription(), tipo);
                        }

                    }
                    else
                    {
                        var protocollo = new GestioneCondomini.Domain.Protocollo(tipo, condominio);
                        progressivo = 1;
                        protocollo.Progressivo = progressivo.Value;
                        _daoFactory.GetProtocolloDao().SaveOrUpdate(protocollo);
                    }
                }
            }
            catch (Exception ex)
            {
                _log.WarnFormat("Errore inaspettato nel calcolo del progressivo di protocollo - (TIPO, CONDOMINIO) - {0} - tipo:{1}", ex, Utility.GetMethodDescription(), tipo);
                throw;
            }

            if (!string.IsNullOrEmpty(message))
            {
                progressivo = null;
                _persistenceContext.RollbackAndCloseSession(Login.Instance.CurrentLogin().LoginName);
                _persistenceContext.BeginTransaction(Login.Instance.CurrentLogin().LoginName, IsolationLevel.ReadUncommitted);
            }

            return new ResultProgressivo(progressivo, message);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Crea uno Protocollo valido per esercizio
 /// </summary>
 public Protocollo(TipoProtocollo tipo, Esercizio esercizioRiferimento)
 {
     _tipo = tipo;
     _esercizioRiferimento = esercizioRiferimento;
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Crea uno Protocollo valido per anno
 /// </summary>
 public Protocollo(TipoProtocollo tipo, int annoRiferimento, Condominio condominioRiferimento)
 {
     Tipo = tipo;
     AnnoRiferimento = annoRiferimento;
     CondominioRiferimento = condominioRiferimento;
 }