コード例 #1
0
 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;
 }
コード例 #2
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
            })));
        }
コード例 #3
0
        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);
        }