internal async Task eSignPackageHistorySetAsync(eSignPackageHistory history)
        {
            var sqlParams = new SqlParameter[]
            {
                history.AccountId.ToSql("accountId"),
                history.oAuthClientId.ToSql("oauthClientId"),
                history.eSignClientId.ToSql("eSignClientId"),
                history.PackageId.ToSql("packageId"),
                history.IsSuccess.ToSql("isSuccess"),
                history.HttpStatusCode.ToSql("httpStatusCode"),
                history.IpAddressHash.ToSql("ipAddressHash"),

                history.AccountProductId.ToSql("accountProductId"),
                history.AccountMicrotransactionId.ToSql("accountMicrotransactionId"),
            };

            await ExecuteNonQueryAsync("[eSign].[peSignPackageHistorySet]", sqlParams);
        }
        private async Task <HttpResponseMessage> Send(string json, Guid packageId, CancellationToken cancellationToken)
        {
            var session = await GetSessionToken();

            if (object.Equals(session, null))
            {
                return(Request.CreateResponse(HttpStatusCode.Unauthorized));
            }

            Guid?accountProductId          = null;
            Guid?accountMicrotransactionId = null;

            if (!await IsAvailableFreeSigns(json, session))
            {
                ViewAccountMicrotransaction microtransaction;
                var microtransactions = await _authProduct.AccountMicrotransactionsGetAsync(session.AccountId);

                accountMicrotransactionId = eSignHelper.GetAllowedAccountMicrotransactionId(microtransactions, out microtransaction);

                ViewAccountProduct product;
                var products = await _authProduct.AccountProductsGetAsync(session.AccountId);

                accountProductId = eSignHelper.GetAllowedAccountProductId(products, session.AccountProductId, out product);

                if (!accountMicrotransactionId.HasValue && !accountProductId.HasValue)
                {
                    return(PaymentRequired("User doesn't have enough number of signs."));
                }
                else
                {
                    if (accountMicrotransactionId.HasValue && !microtransaction.AllowedEsignCount.HasValue)
                    {
                        accountProductId = null;
                    }

                    if (accountProductId.HasValue && !product.AllowedEsignCount.HasValue)
                    {
                        accountMicrotransactionId = null;
                    }

                    if (accountMicrotransactionId.HasValue && accountProductId.HasValue)
                    {
                        accountProductId = null;
                    }
                }
            }

            var response = await HttpProxy(Request, Format("{0}", packageId), cancellationToken);

            if (response.IsSuccessStatusCode && (accountProductId.HasValue || accountMicrotransactionId.HasValue))
            {
                await _eSign.eSignUseIncreaseAsync(session.AccountId, accountProductId, accountMicrotransactionId);
            }

            var history = new eSignPackageHistory
            {
                AccountId      = session.AccountId,
                oAuthClientId  = session.ClientId,
                eSignClientId  = eSignClient,
                HttpStatusCode = (int)response.StatusCode,
                IsSuccess      = response.IsSuccessStatusCode,
                PackageId      = packageId,
                IpAddressHash  = IpAddressDetector.IpAddress.GetShortMD5Hash(),

                AccountProductId          = accountProductId,
                AccountMicrotransactionId = accountMicrotransactionId
            };

            await _eSign.eSignPackageHistorySetAsync(history);

            return(response);
        }
示例#3
0
 public Task eSignPackageHistorySetAsync(eSignPackageHistory history)
 {
     return(_context.eSignPackageHistorySetAsync(history));
 }