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); }
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); }
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; } }