コード例 #1
0
ファイル: SferaService.cs プロジェクト: gipasoft/Sfera
        public virtual IList<ContoDTO> GetContiPatrimonialiPagamentiFornitoriByCondomini(IList<int> idCondomini, UserInfo userinfo)
        {
            var retryCount = 10;
            var success = false;
            var windsorRep = new WindsorConfigRepository();
            var item = new List<ContoDTO>();
            while (retryCount >= 0 && !success)
            {
                try
                {
                    windsorRep.BeginTransaction(userinfo);
                    var rep = new ContabilitaRepository(userinfo, windsorRep);
                    var repoFornitori = new FornitoreRepository(userinfo, windsorRep);
                    item = rep.GetContiPatrimonialiPagamento(idCondomini, repoFornitori.GetAllByAzienda());
                    windsorRep.Commit();
                    success = true;
                }
                catch (Exception ex)
                {
                    _log.ErrorFormat("Errore nella lettura dei conti patrimoniali per pagamenti a fornitori - TENTATIVO:{0} - condomini:{1} - azienda:{2} - number:{3}", ex, (11 - retryCount), Utility.GetMethodDescription(), idCondomini.Aggregate(string.Empty, (current, i) => current + (i + " - ")), 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("Lettura dei conti patrimoniali per pagamenti a fornitori - TENTATIVO:{0} - condomini:{1} - azienda:{2}", (11 - retryCount), Utility.GetMethodDescription(), idCondomini.Aggregate(string.Empty, (current, i) => current + (i + " - ")), userinfo.Azienda);
                }
            }

            if (!success)
                windsorRep.Rollback();

            return item;
        }