Пример #1
0
        public async Task <DatabaseModel.OfferTransaction> InsertAsync(DatabaseModel.OfferTransaction offerTransaction,
                                                                       ITransactionWrapper transactionWrapper = null)
        {
            var query = _offerTransationQueries.InsertReturnsId(offerTransaction);

            int id;

            if (transactionWrapper != null)
            {
                id = await transactionWrapper.ExecuteSqlCommand <int>(query);
            }
            else
            {
                id = (int)await _databaseConnection.ExecuteScalarAsync(query);
            }

            return(new DatabaseModel.OfferTransaction(
                       offerTransaction.UserId,
                       offerTransaction.BotId,
                       offerTransaction.TotalValue,
                       offerTransaction.IsDeposit,
                       offerTransaction.SteamOfferId,
                       offerTransaction.Accepted,
                       id
                       ));
        }
Пример #2
0
 internal DatabaseSession(IDatabaseCommandFactory databaseCommandFactory, ITransactionWrapper transactionWrapper, IDatabaseReaderFactory databaseReaderFactory, IConnectionHandler connectionHandler)
 {
     _databaseCommandFactory = databaseCommandFactory;
     _transactionWrapper = transactionWrapper;
     _databaseReaderFactory = databaseReaderFactory;
     _connectionHandler = connectionHandler;
 }
Пример #3
0
 /// <summary>
 /// Create a new instance of <see cref="UnitOfWorkEntry"/>
 /// </summary>
 /// <param name="transWrapper"></param>
 /// <param name="disposeAction"></param>
 /// <param name="manualCommit"></param>
 public UnitOfWorkEntry(ITransactionWrapper transWrapper, Action disposeAction, bool manualCommit = false)
 {
     transWrapper.CheckNull(nameof(transWrapper));
     InternalTransaction = transWrapper;
     AddDisposableAction("_unitOfWorkDisposeAction", disposeAction ?? DefaultDisposeAction);
     Committed    = false;
     ManualCommit = manualCommit;
 }
Пример #4
0
 public void DeleteAttachment(IUnitOfWork unitOfWork, Attachment attachment, ITransactionWrapper tran)
 {
     if (!string.IsNullOrWhiteSpace(attachment.GenFileName))
     {
         var genAction = new GenericCatchErrorAction(() => FileService.DeleteFile(attachment.GenFileName)
                                                     , $"Error while remove file in delete method, path: {attachment.GenFileName}");
         tran.RegisterAfterCommitAction(genAction);
     }
     unitOfWork.Attachments.MarkForDelete(attachment);
 }
Пример #5
0
 private async Task UpdateItemsTable(ITransactionWrapper transactionWrapper, List <DatabaseModel.Item> items, bool isDeposit)
 {
     if (isDeposit)
     {
         await _itemRepoService.InsertAsync(items, transactionWrapper);
     }
     else
     {
         await _itemRepoService.DeleteAsync(items);
     }
 }
Пример #6
0
        public void CleanTransaction()
        {
            _isRolledBack = false;

            ScopedUnitOfWorkConfiguration.LoggingAction(this + "clean transaction requested, transaction exists: " + (Transaction != null));

            if (Transaction != null)
            {
                Transaction.Dispose();
                Transaction = null;
            }
        }
Пример #7
0
        public async Task InsertAsync(List <DatabaseModel.Item> items, ITransactionWrapper transactionWrapper = null)
        {
            var query = _itemQueries.InsertRange(items);

            if (transactionWrapper != null)
            {
                await transactionWrapper.ExecuteSqlCommand(query);

                return;
            }

            await _databaseConnection.ExecuteNonQueryAsync(query);
        }
Пример #8
0
        public CoinFlipServiceTest()
        {
            _fakedHashService   = A.Fake <IHashService>();
            _fakedRandomService = A.Fake <IRandomService>();
            var fakedRepoServcieFacotry = A.Fake <IRepoServiceFactory>();

            _fakedCoinFlipMatchRepoService = A.Fake <ICoinFlipMatchRepoService>();
            _fakedUserRepoService          = A.Fake <IUserRepoService>();
            _fakedGameModeRepoSerivce      = A.Fake <IGameModeRepoService>();
            _fakedTransactionFactory       = A.Fake <ITransactionFactory>();
            _fakedTransactionWrapper       = A.Fake <ITransactionWrapper>();
            _fakedBetService  = A.Fake <IBetService>();
            _fakedItemService = A.Fake <IItemService>();
            _fakedJackpotSettingRepoService = A.Fake <IJackpotSettingRepo>();
            _fakedMongoDbJackpotRepoService = A.Fake <IMongoJackpotRepoService>();
            _fakedMongoDbPreHashRepoService = A.Fake <IMongoPreHashRepoService>();

            A.CallTo(() => _fakedTransactionFactory.BeginTransaction()).Returns(_fakedTransactionWrapper);
            A.CallTo(() => fakedRepoServcieFacotry.CoinFlipMatchRepoService).Returns(_fakedCoinFlipMatchRepoService);
            A.CallTo(() => fakedRepoServcieFacotry.GameModeRepoService).Returns(_fakedGameModeRepoSerivce);
            A.CallTo(() => fakedRepoServcieFacotry.UserRepoService).Returns(_fakedUserRepoService);
            A.CallTo(() => fakedRepoServcieFacotry.JackpotSettingRepo).Returns(_fakedJackpotSettingRepoService);

            _defaultSetting = new CreateCoinFlipSettingModel
            {
                AllowCsgo = true,
                AllowPubg = false,
                Diff      = 1000,
                MaxItem   = 10,
                MinItem   = 0,
                PreHash   = "ranomdHash"
            };


            _coinFlipService = new CoinFlipService
                               (
                _fakedHashService,
                _fakedRandomService,
                fakedRepoServcieFacotry,
                _fakedTransactionFactory,
                _fakedBetService,
                _fakedItemService,
                _fakedMongoDbJackpotRepoService,
                A.Dummy <ICoinFlipHubConnections>(),
                _fakedMongoDbPreHashRepoService,
                A.Dummy <IDiscordService>()
                               );
            //TODO CHECK ALL DUMMY TEST OBJECTS!
        }
Пример #9
0
        public async Task <DatabaseModel.Bet> InsertAsync(DatabaseModel.Bet bet, ITransactionWrapper transactionWrapper = null)
        {
            var query = _betQueries.InsertReturnsId(bet);

            if (transactionWrapper != null)
            {
                var idFromTrans = await transactionWrapper.ExecuteSqlCommand <int>(query);

                return(new DatabaseModel.Bet(bet.UserId, bet.MatchId, bet.GameModeId, bet.Created, idFromTrans));
            }

            var id = (int)await _databaseConnection.ExecuteScalarAsync(query);

            return(new DatabaseModel.Bet(bet.UserId, bet.MatchId, bet.GameModeId, bet.Created, id));
        }
Пример #10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FileFsClient"/> class.
 /// </summary>
 /// <param name="fileRepository">File repository instance.</param>
 /// <param name="directoryRepository">Directory repository instance.</param>
 /// <param name="entryRepository">Entry repository instance.</param>
 /// <param name="externalFileManager">External file manager instance.</param>
 /// <param name="optimizer">Optimizer instance.</param>
 /// <param name="transactionWrapper">Transaction wrapper instance.</param>
 /// <param name="storageOperationLocker">Storage operation locker instance.</param>
 public FileFsClient(
     IFileRepository fileRepository,
     IDirectoryRepository directoryRepository,
     IEntryRepository entryRepository,
     IExternalFileManager externalFileManager,
     IStorageOptimizer optimizer,
     ITransactionWrapper transactionWrapper,
     IStorageOperationLocker storageOperationLocker)
 {
     _fileRepository         = fileRepository;
     _directoryRepository    = directoryRepository;
     _entryRepository        = entryRepository;
     _externalFileManager    = externalFileManager;
     _optimizer              = optimizer;
     _transactionWrapper     = transactionWrapper;
     _storageOperationLocker = storageOperationLocker;
 }
Пример #11
0
        private async Task <DatabaseModel.OfferTransaction> InsertTransactionOfferAndItemsInTransactionOffer
        (
            ITransactionWrapper transactionWrapper,
            DatabaseModel.OfferTransaction offerTransactions,
            List <DatabaseModel.ItemInOfferTransaction> itemsInOffer
        )
        {
            var offerInsertResponse = await _offerRepoService.InsertAsync(offerTransactions, transactionWrapper);

            foreach (var itemInOfferTransaction in itemsInOffer)
            {
                itemInOfferTransaction.OfferTransactionId = offerInsertResponse.Id;
            }

            await _itemInOfferTransactionRepoService.InsertAsync(itemsInOffer, transactionWrapper);

            transactionWrapper?.Commit();
            return(offerInsertResponse);
        }
Пример #12
0
        private static void ApplyAction(UowAction action, ITransactionWrapper transaction)
        {
            switch (action.ActionType)
            {
            case UowActionType.Save:
                transaction.Save(action.Dao, action.BusinessObjectType);
                break;

            case UowActionType.DeleteAll:
                transaction.DeleteAll(action.BusinessObjectType);
                break;

            case UowActionType.Delete:
                transaction.Delete(action.Id, action.BusinessObjectType);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Пример #13
0
 public IConnectionHandler GetHandler(IDbCommand command, ITransactionWrapper transactionWrapper)
 {
     _connection = command.Connection;
     _transactionWrapper = transactionWrapper;
     return this;
 }
Пример #14
0
        public OfferTransactionServiceTest()
        {
            var fakedItemDescriptionRepoService = A.Fake <IItemDescriptionRepoService>();
            var fakedTransactionFactory         = A.Fake <ITransactionFactory>();
            var fakedRepoServiceFactory         = A.Fake <IRepoServiceFactory>();

            _fakedItemInOfferTransactionRepoService = A.Fake <IItemInOfferTransactionRepoService>();
            _fakedOfferTranascrionRepoService       = A.Fake <IOfferTranascrionRepoService>();
            _fakedUserRepoService = A.Fake <IUserRepoService>();
            _fakedBotRepoService  = A.Fake <IBotRepoService>();
            _fakedItemRepoService = A.Fake <IItemRepoService>();

            _fakedTransactionWrapper = A.Fake <ITransactionWrapper>();

            A.CallTo(() => fakedRepoServiceFactory.ItemInOfferTransactionRepoService).Returns(_fakedItemInOfferTransactionRepoService);
            A.CallTo(() => fakedRepoServiceFactory.OfferTranascrionRepoService).Returns(_fakedOfferTranascrionRepoService);
            A.CallTo(() => fakedRepoServiceFactory.UserRepoService).Returns(_fakedUserRepoService);
            A.CallTo(() => fakedRepoServiceFactory.BotRepoService).Returns(_fakedBotRepoService);
            A.CallTo(() => fakedRepoServiceFactory.ItemDescriptionRepoService).Returns(fakedItemDescriptionRepoService);
            A.CallTo(() => fakedRepoServiceFactory.ItemRepoService).Returns(_fakedItemRepoService);
            A.CallTo(() => fakedTransactionFactory.BeginTransaction()).Returns(_fakedTransactionWrapper);

            _offerMinmalInfo = new OfferStatusRequest
            {
                Bot = new Bot
                {
                    Username = "******",
                    SteamId  = "botSteamId"
                },
                SteamId       = "userSteamId",
                StatusCode    = int.MinValue,
                StatusMessage = "",
                OfferSend     = new OfferStatusOffer
                {
                    SteamOffer = new SteamOffer
                    {
                        ItemsToGive =
                        {
                            new Item {
                                AppId = 730, ContextId = "2", AssetId = "1", MarketHashName = "SomeWeapon1"
                            },
                            new Item {
                                AppId = 730, ContextId = "2", AssetId = "2", MarketHashName = "SomeWeapon1"
                            },
                            new Item {
                                AppId = 730, ContextId = "2", AssetId = "3", MarketHashName = "SomeWeapon2"
                            },
                            new Item {
                                AppId = 730, ContextId = "2", AssetId = "4", MarketHashName = "SomeWeapon3"
                            },
                            new Item {
                                AppId = 730, ContextId = "2", AssetId = "5", MarketHashName = "SomeWeapon4"
                            },
                            new Item {
                                AppId = 730, ContextId = "2", AssetId = "6", MarketHashName = "SomeWeapon2"
                            },
                        },
                        ItemsToReceive =
                        {
                            new Item {
                                AppId = 730, ContextId = "2", AssetId = "11", MarketHashName = "SomeWeapon1"
                            },
                            new Item {
                                AppId = 730, ContextId = "2", AssetId = "12", MarketHashName = "SomeWeapon1"
                            },
                            new Item {
                                AppId = 730, ContextId = "2", AssetId = "13", MarketHashName = "SomeWeapon2"
                            },
                            new Item {
                                AppId = 730, ContextId = "2", AssetId = "14", MarketHashName = "SomeWeapon3"
                            },
                            new Item {
                                AppId = 730, ContextId = "2", AssetId = "15", MarketHashName = "SomeWeapon4"
                            },
                            new Item {
                                AppId = 730, ContextId = "2", AssetId = "16", MarketHashName = "SomeWeapon2"
                            },
                        },
                    }
                }
            };


            var someWeapon1 = new DatabaseModel.ItemDescription("SomeWeapon1", new decimal(11.22), "720", "2", "imgUrl", true, 1);
            var someWeapon2 = new DatabaseModel.ItemDescription("SomeWeapon2", new decimal(45.5), "720", "2", "imgUrl", true, 2);
            var someWeapon3 = new DatabaseModel.ItemDescription("SomeWeapon3", new decimal(78.00), "720", "2", "imgUrl", true, 3);
            var someWeapon4 = new DatabaseModel.ItemDescription("SomeWeapon4", new decimal(5.47), "720", "2", "imgUrl", true, 4);

            A.CallTo(() => fakedItemDescriptionRepoService.FindAsync("SomeWeapon1")).Returns(someWeapon1);
            A.CallTo(() => fakedItemDescriptionRepoService.FindAsync("SomeWeapon2")).Returns(someWeapon2);
            A.CallTo(() => fakedItemDescriptionRepoService.FindAsync("SomeWeapon3")).Returns(someWeapon3);
            A.CallTo(() => fakedItemDescriptionRepoService.FindAsync("SomeWeapon4")).Returns(someWeapon4);

            A.CallTo(() => fakedItemDescriptionRepoService.FindAsync(A <List <string> > ._)).Returns(new List <DatabaseModel.ItemDescription>
            {
                someWeapon1,
                someWeapon2,
                someWeapon3,
                someWeapon4,
            });


            _offerService = new OfferService(fakedRepoServiceFactory, fakedTransactionFactory, A.Dummy <ILogServiceFactory>());
        }
Пример #15
0
        public async Task <DatabaseModel.JackpotSetting> InsertAsync(DatabaseModel.JackpotSetting setting, ITransactionWrapper transactionWrapper)
        {
            var cn          = transactionWrapper.SqlConnection;
            var transaction = transactionWrapper.Transaction;

            var insertedId = await cn.InsertAsync(setting, transaction);

            setting.Id = insertedId;
            return(setting);
        }
 /// <inheritdoc />
 public IUnitOfWorkEntry Register(ITransactionWrapper transWrapper,
                                  UnitOfWorkTypes type = UnitOfWorkTypes.Required, IsolationLevel?isolationLevel = null)
 => NullUnitOfWorkEntry.Instance;
Пример #17
0
        public Attachment CreateAttachment(IUnitOfWork unitOfWork, int userId, string fileName, byte[] content, ITransactionWrapper tran)
        {
            var saveFileResult = FileService.SaveFileWithUniqueName(fileName, content);
            var genAction      = new GenericCatchErrorAction(() => FileService.DeleteFile(saveFileResult.GenFileName)
                                                             , $"Error while remove file in save method, path {saveFileResult.GenFileName}");

            tran.RegisterAfterRollbackAction(genAction);

            var attachment = unitOfWork.Attachments.CreateEmpty();

            attachment.CreatedByUserId = userId;
            attachment.CreatedDate     = DateTime.Now;
            attachment.ContentType     = MimeTypeResolver.Resolve(fileName);
            attachment.FileSize        = content.Length;
            attachment.FileName        = fileName;
            attachment.GenFileName     = saveFileResult.GenFileName;

            return(attachment);
        }
 public IUnitOfWorkEntry CreateUnitOfWork(ITransactionWrapper transWrapper, Action disposableAction, bool manualCommit,
                                          UnitOfWorkTypes types = UnitOfWorkTypes.Required, IsolationLevel?level = null)
 => HoldingManager.CreateUnitOfWork(transWrapper, disposableAction, manualCommit, types, level);
Пример #19
0
 public void SetTransaction(ITransactionWrapper transaction)
 {
     Transaction = transaction;
 }
Пример #20
0
 /// <inheritdoc />
 public IUnitOfWorkEntry CreateUnitOfWork(ITransactionWrapper transWrapper,
                                          UnitOfWorkTypes types = UnitOfWorkTypes.Required, IsolationLevel?level = null)
 => CurrentStrategy.CreateUnitOfWork(transWrapper, types, level);
Пример #21
0
 /// <inheritdoc />
 public IUnitOfWorkEntry CreateUnitOfWork(ITransactionWrapper transWrapper, Action disposedAction, bool manualCommit,
                                          UnitOfWorkTypes types = UnitOfWorkTypes.Required, IsolationLevel?level = null)
 => CurrentStrategy.CreateUnitOfWork(transWrapper, disposedAction, manualCommit, types, level);
        public async Task <DatabaseModel.CoinFlip> InsertAsync(DatabaseModel.CoinFlip coinFlip, ITransactionWrapper transactionWrapper)
        {
            var cn          = transactionWrapper.SqlConnection;
            var transaction = transactionWrapper.Transaction;

            var insertedId = await cn.InsertAsync(coinFlip, transaction);

            coinFlip.Id = insertedId;
            return(coinFlip);
        }
 public IUnitOfWorkEntry CreateUnitOfWork(ITransactionWrapper transWrapper,
                                          UnitOfWorkTypes types = UnitOfWorkTypes.Required, IsolationLevel?level = null)
 => HoldingManager.CreateUnitOfWork(transWrapper, types, level);
Пример #24
0
 public DatabaseCommandProvider(IDatabaseConnectionProvider databaseConnectionProvider, ITransactionWrapper transactionWrapper)
 {
     _databaseConnectionProvider = databaseConnectionProvider;
     _transactionWrapper = transactionWrapper;
 }