public async Task <SepidPurchaseResult> PurchaseAsync(SepidPurchaseRequest purchaseRequest) { string i, terminalId; GetTerminalAndInstituteId(purchaseRequest.Barcode, out i, out terminalId); var count = _sepidContext.PurchaseRequestEntities.LongCount() + 1; SepidPurchaseParam purchaseParam = new SepidPurchaseParam() { LockFlag = 0, AmountAfterDiscount = purchaseRequest.Amount, AmountBeforeDiscount = purchaseRequest.Amount, CampaignID = 0, TerminalID = int.Parse(terminalId), InstituteId = int.Parse(i), PAN = long.Parse(CreatePAN(purchaseRequest.CustomerUniqueNumber)), CustomerId = purchaseRequest.CustomerId, Mobile = purchaseRequest.Mobile, TransactionDate = DateTime.Now, BarcodeStan = null, NationalCode = purchaseRequest.NationalCode, ReceiveDate = purchaseRequest.ReceiveDate, WalletId = null, EntityId = long.Parse(CreateEntityId(count)), IpgrRn = purchaseRequest.IpgrRn, Description = purchaseRequest.Description }; _sepidContext.PurchaseRequestEntities.Add(new PurchaseRequestEntity() { AmountAfterDiscount = purchaseParam.AmountAfterDiscount, AmountBeforeDiscount = purchaseParam.AmountBeforeDiscount, BarcodeStan = purchaseParam.BarcodeStan, CampaignID = purchaseParam.CampaignID, Counter = count, CustomerId = purchaseParam.CustomerId, Description = purchaseParam.Description, EntityId = purchaseParam.EntityId, InstituteId = purchaseParam.InstituteId, IpgrRn = purchaseParam.IpgrRn, LockFlag = purchaseParam.LockFlag, Mobile = purchaseParam.Mobile, NationalCode = purchaseParam.NationalCode, PAN = purchaseParam.PAN, ReceiveDate = purchaseParam.ReceiveDate, TerminalID = purchaseParam.TerminalID, TransactionDate = purchaseParam.TransactionDate, WalletId = purchaseParam.WalletId, }); await _sepidContext.SaveChangesAsync(); using (var request_ = new HttpRequestMessage()) { var url = $"{tmBaseUrl}/api/V1/Sepid/Purchase"; request_.RequestUri = new Uri(url, System.UriKind.RelativeOrAbsolute); var content_ = new StringContent(JsonConvert.SerializeObject(purchaseParam), Encoding.UTF8, "application/json"); request_.Content = content_; request_.Method = HttpMethod.Post; var response_ = await _sepidHttpClient.SendAsync(request_, default(CancellationToken)).ConfigureAwait(false); if (!response_.IsSuccessStatusCode) { throw new Exception(response_.ReasonPhrase); } var apiResponse = await response_.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject <SepidPurchaseResult>(apiResponse); _sepidContext.PurchaseResponseEntities.Add(new PurchaseResponseEntity() { CentralMessageCode = result.CentralMessageCode, EnMessageDesc = result.EnMessageDesc, FaMessageDesc = result.FaMessageDesc, InnerException = result.InnerException, Issrrn = result.Issrrn, MessageCode = result.MessageCode, Rrn = result.Rrn, Stan = result.Stan, Status = result.Status, SwResult = result.SwResult, TransactionDate = result.TransactionDate }); await _sepidContext.SaveChangesAsync(); return(result); } }
public async Task <ActionResult <SepidPurchaseResult> > Purchase(SepidPurchaseRequest purchaseRequest) { return(await _sepidService.PurchaseAsync(purchaseRequest)); }