Beispiel #1
0
        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;
                }
            }
        }
Beispiel #2
0
        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;
                }
            }
        }