public BaseResponse Deposit(DepositBTCRequest request) { request.Username = UserHeader(); return(_service.DepositBTC(request)); }
/// <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); }