コード例 #1
0
ファイル: SavingServices.cs プロジェクト: TalasZh/opencbs
        private SavingCreditOperationEvent SpecialOperationCredit(ISavingsContract pSaving, DateTime pDate, OCurrency creditAmount,
           string pDescription, User pUser, OSavingsMethods savingsMethod)
        {
            using (SqlConnection conn = _savingManager.GetConnection())
              using (SqlTransaction sqlTransaction = conn.BeginTransaction())
              {
                  try
                  {
                      //// Create a fake Saving object
                      ISavingsContract savingSimulation = (ISavingsContract) pSaving.Clone();
                      // Do deposit to the fake Saving object
                      savingSimulation.SpecialOperationCredit(creditAmount, pDate, pDescription, pUser);
                      // Check balance simulation
                      if (!IsSavingBalanceCorrect(savingSimulation))
                          throw new OpenCbsSavingException(OpenCbsSavingExceptionEnum.BalanceIsInvalid);

                      SavingCreditOperationEvent events = pSaving.SpecialOperationCredit(creditAmount, pDate,
                                                                                         pDescription, pUser);

                      _ePS.FireEvent(events, pSaving, sqlTransaction);
                      sqlTransaction.Commit();
                      return events;
                  }
                  catch (Exception)
                  {
                      sqlTransaction.Rollback();
                      throw;
                  }
              }
        }