Esempio n. 1
0
		public AuthorizationMessages RipartoBollette(int idEsercizio, int idTipoUtenza, int? idContoAcquaRiscaldata, int? idContoRiscaldamento, int? idContoMillesimiSpalo, string descrizioneMovimentoAcqua, string descrizioneMovimentoRiscaldamento, decimal? tariffaRiscaldamentoAcqua, decimal? tariffaAcquaFredda, IList<ParametriAddebitoMovimento> parametriAddebitoMovimenti, DateTime? dataRegistrazione, UserInfo userinfo)
		{
            var retryCount = 10;
            var success = false;
            var windsorRep = new WindsorConfigRepository();
            var item = new AuthorizationMessages();
            while (retryCount >= 0 && !success)
            {
                try
                {
                    windsorRep.BeginTransaction(userinfo);
                    var rep = new UtenzaRepository(userinfo, windsorRep);
                    item = rep.RipartoBollette(idEsercizio, idTipoUtenza, idContoAcquaRiscaldata, idContoRiscaldamento, idContoMillesimiSpalo, descrizioneMovimentoAcqua, descrizioneMovimentoRiscaldamento, tariffaRiscaldamentoAcqua, tariffaAcquaFredda, parametriAddebitoMovimenti, dataRegistrazione);
                    windsorRep.Commit();
                    success = true;
                }
                catch (Exception ex)
                {
                    _log.ErrorFormat("Errore inaspettato durante il riparto di una bolletta - TENTATIVO:{0} - {1} - esercizio:{2} - tipoUtenza:{3} - azienda:{4} - number:{5}", ex, (11 - retryCount), Utility.GetMethodDescription(), idEsercizio, idTipoUtenza, userinfo.Azienda, getExceptionId(ex));

                    windsorRep.Rollback();
                    if (!isRetryException(ex))
                        throw;

                    // Add delay here if you wish. 
                    System.Threading.Thread.Sleep(1000 * (11 - retryCount));
                    retryCount--;
                    _log.InfoFormat("Riparto di una bolletta - INIZIO TENTATIVO:{0} - {1} - esercizio:{2} - tipoUtenza:{3} - azienda:{4}", (11 - retryCount), Utility.GetMethodDescription(), idEsercizio, userinfo.Azienda);
                }
            }

            if (!success)
                windsorRep.Rollback();

            return item;
		}