Example #1
0
        public List<SpesaDetrazioneDTO> GetSpeseByAnnoDetrazione(int idCondominio, int anno, int detrazione, UserInfo userinfo)
        {
            var retryCount = 5;
            var success = false;
            var windsorRep = new WindsorConfigRepository();
            List<SpesaDetrazioneDTO> item = null;
            while (retryCount >= 0 && !success)
            {
                try
                {
                    windsorRep.BeginTransaction(userinfo);
                    var repo = new SpesaRepository(userinfo, windsorRep);
                    item = repo.GetByAnnoDetrazione(idCondominio, anno, detrazione);
                    windsorRep.Commit();
                    success = true;
                }
                catch (Exception ex)
                {
                    _log.ErrorFormat("Errore nella lettura delle spese per anno e detrazione - TENTATIVO:{0} - {1} - condominio:{2} - anno:{3} - azienda:{4} - number:{5}", ex, (6 - retryCount), Utility.GetMethodDescription(), idCondominio, anno, userinfo.Azienda, getExceptionId(ex));
                    windsorRep.Rollback();
                    if (!isRetryException(ex))
                        throw;

                    // Add delay here if you wish. 
                    System.Threading.Thread.Sleep(1000 * (6 - retryCount));
                    retryCount--;
                    _log.InfoFormat("Lettura delle spese per anno e detrazionee - INIZIO TENTATIVO:{0} - {1} - condominio:{2} - anno:{3} - azienda:{12}", (6 - retryCount), Utility.GetMethodDescription(), idCondominio, anno, userinfo.Azienda);
                }
            }

            if (!success)
                windsorRep.Rollback();

            return item;
        }