public void FirstDeposit(ISavingsContract saving, OCurrency initialAmount, DateTime creationDate, OCurrency entryFees, User user, Teller teller) { if (!IsEntryFeesCorrect(saving, entryFees)) throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.EntryFeesIsInvalid); if (!IsSavingBalanceCorrect(saving, initialAmount)) throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.BalanceIsInvalid); using(SqlConnection conn = _savingManager.GetConnection()) using (SqlTransaction sqlTransaction = conn.BeginTransaction()) { try { saving.FirstDeposit(initialAmount, creationDate, entryFees, user, teller); if (_ePS != null) { foreach (SavingEvent savingEvent in saving.Events) { _ePS.FireEvent(savingEvent, saving, sqlTransaction); } } saving.Status = OSavingsStatus.Active; _savingManager.UpdateStatus(saving.Id, saving.Status, null); sqlTransaction.Commit(); } catch (Exception) { sqlTransaction.Rollback(); throw; } } }
public void FirstDeposit(ISavingsContract saving, OCurrency initialAmount, DateTime creationDate, OCurrency entryFees, User user, Teller teller) { if (!IsEntryFeesCorrect(saving, entryFees)) throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.EntryFeesIsInvalid); if (!IsSavingBalanceCorrect(saving, initialAmount)) throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.BalanceIsInvalid); if (saving.Client == null) saving.Client = ServicesProvider.GetInstance().GetClientServices().FindTiersBySavingsId(saving.Id); using (SqlConnection conn = _savingManager.GetConnection()) using (SqlTransaction sqlTransaction = conn.BeginTransaction()) { try { saving.FirstDeposit(initialAmount, creationDate, entryFees, user, teller); if (_ePS != null) { foreach (SavingEvent savingEvent in saving.Events) { _ePS.FireEvent(savingEvent, saving, sqlTransaction); ServicesProvider.GetInstance() .GetContractServices() .CallInterceptor(new Dictionary<string, object> { {"Saving", saving}, {"Event", savingEvent}, {"SqlTransaction", sqlTransaction} }); } } saving.Status = OSavingsStatus.Active; _savingManager.UpdateStatus(saving.Id, saving.Status, null); sqlTransaction.Commit(); } catch (Exception) { sqlTransaction.Rollback(); throw; } } }