예제 #1
0
        public bool THTDeposit(THTDepositFormDTO form)
        {
            var authorization = Request.Headers.Authorization;

            if (authorization?.Parameter == null || authorization.Parameter != YJYGlobal.CALLBACK_AUTH_TOKEN)
            {
                throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Unauthorized,
                                                                            "invalid auth token"));
            }

            if (string.IsNullOrWhiteSpace(form.transactionHash) || string.IsNullOrWhiteSpace(form.from) ||
                string.IsNullOrWhiteSpace(form.tokenAmount))
            {
                throw new ArgumentOutOfRangeException(nameof(form));
            }

            form.tokenAmount     = form.tokenAmount.Trim();
            form.transactionHash = form.transactionHash.Trim();
            form.from            = form.from.Trim();
            form.to = form.to.Trim();

            BigInteger bi;
            var        tryParse = BigInteger.TryParse(form.tokenAmount, NumberStyles.None, null, out bi);

            if (!tryParse || bi < new BigInteger(0))
            {
                throw new ArgumentOutOfRangeException(nameof(form.tokenAmount));
            }

            var deposit = FundService.AddTHTDeposit(form.transactionHash, form.@from, form.to, form.tokenAmount);

            if (deposit == null)
            {
                return(false);
            }

            try
            {
                var fundService = new FundService(db);
                fundService.AddUserBalanceByTHTDeposit(deposit.Id);
            }
            catch (Exception e)
            {
                YJYGlobal.LogExceptionAsWarning(e);
            }

            return(true);
        }