예제 #1
0
        public Transaction CreateAccountPayment(string userId, Guid account, decimal amount, string destinationName, string destinationIBAN, string details)
        {
            var         sendingCustomer = customerService.GetCustomerFromUserId(userId);
            var         sendingAccount  = sendingCustomer.GetAccount(account);
            Transaction transaction     = null;

            using (var transactionScope = persistenceContext.BeginTransaction())
            {
                var receiverCustomer = customerRepository.GetCustomerThatOwnsIban(destinationIBAN);
                if (receiverCustomer != null)
                {
                    var destAccount = receiverCustomer.GetBankAccountByIBAN(destinationIBAN);
                    if (!destAccount.Currency.Equals(sendingAccount.Currency))
                    {
                        throw new WrongCurrencyException(sendingAccount.Currency, destAccount.Currency);
                    }
                }
                transaction = sendingCustomer.MakePayment(account, amount, destinationName, destinationIBAN, details);

                customerRepository.Update(sendingCustomer);

                if (receiverCustomer != null)
                {
                    receiverCustomer.NotifyTransaction(transaction, sendingCustomer);
                    customerRepository.Update(receiverCustomer);
                }
                persistenceContext.SaveChanges();
            }

            return(transaction);
        }
예제 #2
0
        public WebSferaService() 
        {
            _persistenceContext = _container.Resolve<IPersistenceContext>();
            _persistenceContext.BeginTransaction(Security.Login.Instance.CurrentLogin().LoginName, System.Data.IsolationLevel.Unspecified);
            var parameters = new Dictionary<string,object>(1) {{"deleted", "Y"}};
            _persistenceContext.EnableFilter("excludeDeletedCondominio", parameters);
            _persistenceContext.EnableFilter("excludeDeletedUnitaImmobiliari", parameters);

            var parametersRate = new Dictionary<string, object>(1) {{"stato", StatoRataEnum.Richiamata.ToString()}};
            _persistenceContext.EnableFilter("excludeRateRichiamate", parametersRate);
        }
예제 #3
0
		public LogTransazione BeginTransaction(UserInfo info, System.Data.IsolationLevel isolationLevel, bool isTransazioneLog = false, bool? flushOnCommit = null)
		{
		    try
		    {
		        var daoFactory = GetDaoFactory(info.Azienda);
		        var utenti = daoFactory.GetUtenteDao().GetByAzienda(info.Azienda);

		        _container = GetContainer(info.Azienda);
		        _persistenceContext = _container.Resolve<IPersistenceContext>();

		        var singleOrDefault = utenti.SingleOrDefault(item => item.ID == info.Utente);
		        if (singleOrDefault != null)
                    _utente = singleOrDefault.Referente != null ? singleOrDefault.Referente.PersonaRiferimento.Nome : singleOrDefault.Nome;

                _persistenceContext.BeginTransaction(_utente, isolationLevel, flushOnCommit);
                var parameters = new Dictionary<string, object>(1) {{"deleted", "Y"}};
                _persistenceContext.EnableFilter("excludeDeletedCondominio", parameters);
                _persistenceContext.EnableFilter("excludeDeletedUnitaImmobiliari", parameters);
                _persistenceContext.EnableFilter("excludeDeletedSottoconto", parameters);

                var parametersRate = new Dictionary<string, object>(1) {{"stato", StatoRataEnum.Richiamata.ToString()}};
                _persistenceContext.EnableFilter("excludeRateRichiamate", parametersRate);

                LogTransazione logTransazione = null;
                if (isTransazioneLog)
                {
                    _logTransazioneService = _container.Resolve<ILogTransazioneService>();
                    logTransazione = _logTransazioneService.AddLog(info.Utente, AzioneUtente.TransazioneContabile);
                }

                return logTransazione;
            }
            catch (Exception ex)
            {
                var log = LogManager.GetLogger("Sfera");
                log.FatalFormat("Errore durante la inizializzazione della transazione - {0} - idAzienda:{1} - utente:{2}", ex, Library.Utility.GetMethodDescription(), info.Azienda, info.Utente);
                throw;
            }
		}