public bool UpdateTransaction(TicketKey oldTicketKey, Ticket t, out string msg, out int errorCode) { Response resp = _ticketScrapWS.UpdateTransaction(GetLoginInfo(), oldTicketKey, t); msg = resp.errorResponse; errorCode = resp.errorCode; return errorCode == 0; }
public IHttpActionResult ProcessPurchase(PurchaseRequest purchase) { BetData betData = BetData.Parse(purchase.BetData); CustomerKey customerKey = _customerProvider.GetCurrentCustomer().Key; PurchaseErrorCode errorCode = ValidatePurchaseRequest(customerKey, betData.EstimatedTotalPrice); if (errorCode != PurchaseErrorCode.NotSet) { return(Ok(RestResult <string> .CreateFailed(errorCode.ToString()))); } Guid purchaseIdentifier = Guid.NewGuid(); CommandResult placeBetResult = _bettingServiceGateway.Execute(new PlaceNormalBetForMultiLegGame { PurchaseIdentifier = purchaseIdentifier, CustomerPlacingBet = _customerServiceGateway.GetBettingReference(GetCustomerBettingInfo(customerKey)), RaceDay = betData.RaceDayKey, Product = betData.BetTypeCode, FirstRaceNumber = betData.RaceNumber, IsFirstPrizeOnlyBet = betData.IsFirstPrizeOnlyBet, LegMarks = betData.Marks.ToDictionary(mark => mark.LegNumber, mark => mark.Marks), RowPrice = Money.FromOere(betData.RowPrice) }); if (!placeBetResult.IsExecuted) { return(Ok(RestResult <string> .CreateFailed(placeBetResult.ErrorCode.ToString(), placeBetResult.Message))); } TicketKey ticketKey = _bettingServiceGateway.GetTicketSerialNumber(purchaseIdentifier); SingleBetItem betItem = _bettingHistoryServiceGateway.GetBetItem(new TicketKey(ticketKey.TicketSerialNumber)); return(Ok(RestResult <PurchaseReceipt> .CreateSuccess(new PurchaseReceipt { TicketSerialNumber = ticketKey.TicketSerialNumber, RaceDay = RaceDayKey.ToString(betData.RaceDayKey), Product = betData.BetTypeCode.ToString(), SellFee = betItem.TicketReceipt.SellFee.Amount, BetCost = betItem.TicketReceipt.BetCost.Amount, PurchaseTime = betItem.TicketReceipt.BetTimeSold }))); }
public bool PostTickets() { try { string errorMsg = string.Empty; int errorCode; if (!CheckLogin(out errorMsg)) { throw new Exception(errorMsg); } IEnumerable <Scale> scales = _rsmartService.GetPendingTickets(); try { foreach (var scale in scales) { IEnumerable <ScaleDetails> scaleDetails = _rsmartService.GetTicketItemsByTicketId(scale.ID); IEnumerable <ScaleAttachments> scaleAttachments = _rsmartService.GetTicketAttachmentsByTicketId(scale.ID); AddressBook partyPrimaryAddress = _rsmartService.GetAddressByPartyId(scale.Party_ID.ID); Ticket t = new Ticket(); t = _rsmartService.MapTicketFromRsmartTicket(scale, scaleDetails, scaleAttachments, partyPrimaryAddress, t); // Start transaction. using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.Serializable })) { string statusRemarks = string.Empty; EnumPostingStatus status = EnumPostingStatus.Failed; string action = "add"; SubmitTransaction(t, out errorMsg, out errorCode); if (errorCode == 13) { action = "update"; TicketKey ticketKey = new TicketKey(); ticketKey.ticketnumber = scale.Scale_Ticket_No; ticketKey.ticketDateTime = scale.Created_Date.ToString(); UpdateTransaction(ticketKey, t, out errorMsg, out errorCode); } if (errorCode == 0) { status = EnumPostingStatus.Succeed; _rsmartService.UpdateTicketStatus(scale); statusRemarks = string.Format("Successfully {0} ticket# {1}", action, scale.Scale_Ticket_No); } else { statusRemarks = string.Format("Failed to {0} ticket# {1} due to '{2}'", action, scale.Scale_Ticket_No, errorMsg); } _rsmartService.AddLeadLog(scale.Scale_Ticket_No, status, statusRemarks); scope.Complete(); } } TextFileLogger.Log(string.Format("{0}{1} ticket(s) posted on leads at {2}.", System.Environment.NewLine, scales.Count(), DateTime.Now.ToString())); } catch (Exception ex) { ExceptionHandler.HandleException(ex, errorMsg); } } catch (Exception ex) { ExceptionHandler.HandleException(ex); } return(true); }