Пример #1
0
        private async Task <PinDownloadReponseVM> PinDownload(PindownloadRequestVM model)
        {
            PinDownloadReponseVM result = new PinDownloadReponseVM();

            using (HttpClient client = new HttpClient())
            {
                StringContent content  = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json");
                string        endpoint = "https://riapimanagement.azure-api.net/api/pos-download-pinV2";
                client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "50185b70341b4f5aa5e1d3307a261798");

                using (var Response = await client.PostAsync(endpoint, content))
                {
                    if (Response.StatusCode == System.Net.HttpStatusCode.OK)
                    {
                        string response = await Response.Content.ReadAsStringAsync();

                        var responsestring = JsonConvert.DeserializeObject(response).ToString();
                        result = JsonConvert.DeserializeObject <PinDownloadReponseVM>(responsestring);
                        return(result);
                    }
                    else
                    {
                        return(result);
                    }
                }
            }
        }
Пример #2
0
        private async Task DoProcess(TransactionModel transactionModel, PosAssignment posassignment, int iteration)
        {
            try
            {
                var merchant = transactionModel.Merchants.FirstOrDefault(x => x.Id == posassignment.MerchantId);
                var posUnits = transactionModel.PosUnits.FirstOrDefault(x => x.Id == posassignment.POSId);
                var posuser  = transactionModel.PosUsers.FirstOrDefault(x => x.MerchantId == posassignment.MerchantId);
                var detail   = new TestUtilityLoadTestDetail()
                {
                    HdrId           = transactionModel.TestUtilityHeader.Id,
                    MerchantId      = merchant.Id,
                    PosUserId       = posuser.Id,
                    PosAssignmentId = posassignment.Id,
                    PosId           = posassignment.POSId,
                };
                LoginModel user = new LoginModel()
                {
                    merchant_id       = merchant.Id,
                    password          = posuser.Password,
                    pos_assignment_id = posassignment.Id,
                    pos_id            = posassignment.POSId,
                    user_type         = "pos-users",
                    pos_version       = "",
                    username          = posuser.UserId
                };

                Token token = await GetToken(user);

                detail.ResponseCode = token.response_code;
                if (detail.ResponseCode == "00")
                {
                    BusinessdayRequestVM businessdayRequest = new BusinessdayRequestVM()
                    {
                        merchant_id = merchant.Id,
                        token       = token.token,
                        user_id     = posuser.Id,
                        pos_id      = posassignment.POSId,
                    };
                    BusinessDayResponseVM businessDay = await GetActiveBusinessDay(businessdayRequest);

                    detail.ResponseCode = businessDay.response_code;
                    if (detail.ResponseCode == "00")
                    {
                        var q = (from c in transactionModel.ProductAgentAssignments
                                 join p in transactionModel.Products on c.ProductId equals p.Id
                                 where c.AgentId == merchant.Id
                                 select p
                                 ).ToList();
                        var rand    = new Random();
                        int count   = rand.Next(1, q.Count() - 1);
                        var product = q.Skip(count).Take(1).FirstOrDefault();
                        detail.ProductId = product.Id;
                        PindownloadRequestVM downloadRequest = new PindownloadRequestVM()
                        {
                            business_date     = businessDay.business_date,
                            merchant_id       = merchant.Id,
                            mode              = 1,
                            pos_assignment_id = posassignment.Id,
                            pos_id            = posassignment.POSId,
                            pos_user_id       = posuser.Id,
                            product_group_id  = product.ProductGroupId,
                            product_id        = product.Id,
                            qty                 = 1,
                            request_id          = 0,
                            service_provider_id = product.ServiceProviderId,
                            shift_no            = businessDay.ShiftNo,
                            token               = token.token
                        };
                        PinDownloadReponseVM downlaod = await PinDownload(downloadRequest);

                        detail.ResponseCode = downlaod.response_code;
                        if (detail.ResponseCode == "00")
                        {
                            detail.DownloadedPinId      = downlaod.Pin.FirstOrDefault().download_pin_Id;
                            detail.DownloadResponseTime = Convert.ToInt32(downlaod.Response_time.Replace("ms", ""));
                            detail.IsDownloadCompleted  = downlaod.response_code == "00";
                            detail.PinDownloadId        = downlaod.download_Id ?? 0;
                            PinDownloadConfirmRequestVM confirmationRequest = new PinDownloadConfirmRequestVM()
                            {
                                download_id       = downlaod.download_Id ?? 0,
                                merchant_id       = merchant.Id,
                                pos_assignment_id = posassignment.Id,
                                pos_id            = posassignment.POSId,
                                pos_user_id       = posuser.Id,
                                token             = token.token,
                                txn = downlaod.Pin.Select(x =>
                                                          new PinDetails()
                                {
                                    business_date   = businessDay.business_date,
                                    download_pin_id = x.download_pin_Id,
                                    product_id      = x.product_id,
                                    sale_txn_no     = Convert.ToInt64("50" + DateTime.UtcNow.ToString("yyMMddHHmmssff") + posassignment.Id.ToString()),
                                    serial_no       = x.serial_no,
                                    shift_no        = businessDay.ShiftNo,
                                    user_id         = posUnits.Id
                                }
                                                          ).ToList()
                            };
                            detail.TxnNo = confirmationRequest.txn.FirstOrDefault().sale_txn_no?.ToString();
                            ResponseVM response = await PinDownloadConfirmation(confirmationRequest);

                            detail.IsConfirmed             = response.response_code == "00";
                            detail.ResponseCode            = response.response_code;
                            detail.ConfirmationReponseTime = Convert.ToInt32(response.Response_time);
                        }
                    }
                }
                transactionModel.TestUtilityHeader.EndTime = DateTime.UtcNow;
                transactionModel.TestUtilityHeader.TestUtilityLoadTestDetail.Add(detail);
                if (transactionModel.TestUtilityHeader.TestUtilityLoadTestDetail.Count == (transactionModel.Request.NumberOfTerminals * transactionModel.Request.NumberOfTransactionPerTerminal))
                {
                    await WriteTransactionLoad(transactionModel.TestUtilityHeader, transactionModel.URL);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }