Exemplo n.º 1
0
 public BaseResponse Deposit(DepositBTCRequest request)
 {
     request.Username = UserHeader();
     return(_service.DepositBTC(request));
 }
Exemplo n.º 2
0
        /// <summary>
        /// User nạp tiền vào hệ thống
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public BaseResponse DepositBTC(DepositBTCRequest request)
        {
            var response = new BaseResponse();

            try
            {
                _dataContext.Connection.Open();
                System.Data.Common.DbTransaction transaction = _dataContext.Connection.BeginTransaction();
                _dataContext.Transaction = transaction;

                try
                {
                    // 1. Lấy địa chỉ ví của hệ thống để nhận tiền từ user
                    //BTCStore store = _btcStoreRepository.GetAddressForReceive();
                    string addressForReceive = request.AddressForReceive; //store.Address;

                    // 2.Lấy User BTC
                    UserBTC userBTC = _dataContext.UserBTCs.Single(x => x.Username == request.Username);

                    // 3. Lấy UserInfo
                    UserInfo userInfo = _dataContext.UserInfos.Single(x => x.Username == request.Username);

                    // check valid
                    BTCStore btcStoreForReceiveInfo = _btcStoreRepository.GetAddressForReceive(addressForReceive);
                    if (btcStoreForReceiveInfo == null || userBTC == null ||
                        userInfo == null || request.Amount <= 0)
                    {
                        throw new ArgumentNullException("Invalid request parameter");
                    }

                    // 4 tạo transaction
                    BTCStoreTransaction storeTransaction = new BTCStoreTransaction();
                    storeTransaction.Type            = (int)BTCStoreTransactionTypeEnum.DEPOSIT;
                    storeTransaction.StoreBitAddress = addressForReceive;
                    storeTransaction.UserBitAddress  = userBTC.WalletID;
                    storeTransaction.TransactionHash = SaltHelper.GetUniqueKey();
                    storeTransaction.Amount          = request.Amount;
                    storeTransaction.Amount          = CommonUtils.FoatBTCAmount(storeTransaction.Amount);

                    storeTransaction.UserId       = userInfo.Id;
                    storeTransaction.Username     = userInfo.Username;
                    storeTransaction.Fee          = 0;
                    storeTransaction.CreatedDate  = DateTime.Now;
                    storeTransaction.ModifiedDate = storeTransaction.CreatedDate;
                    storeTransaction.Status       = (int)BTCStoreTransactionStatusEnum.NOT_CONFIRMED;
                    storeTransaction.Rate         = 0;
                    storeTransaction.GUID         = System.Guid.NewGuid();
                    storeTransaction.Note         = null;

                    _dataContext.BTCStoreTransactions.InsertOnSubmit(storeTransaction);

                    _dataContext.SubmitChanges();
                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    response.IsSuccess = false;
                }
                finally
                {
                    try
                    {
                        if (null != _dataContext.Connection)
                        {
                            _dataContext.Connection.Close();
                        }
                    }
                    catch { }
                }
            }
            catch (Exception ex)
            {
                response.IsSuccess = false;
            }

            return(response);
        }