private TicketCancel(DateTime timestamp, string ticketId, int bookmakerId, TicketCancellationReason code, int?cancelPercent, IEnumerable <IBetCancel> betCancels, string version, string correlationId) { Timestamp = timestamp; TicketId = ticketId; BookmakerId = bookmakerId; Code = code; CancelPercent = cancelPercent; BetCancels = betCancels; Version = version; CorrelationId = correlationId; }
/// <summary> /// Initializes a new instance of the <see cref="TicketCancel"/> class /// </summary> /// <param name="ticketId">The ticket identifier</param> /// <param name="bookmakerId">The bookmaker identifier</param> /// <param name="code">The code</param> /// <param name="percent">The percent of ticket to cancel</param> /// <param name="betCancels">The list of <see cref="IBetCancel"/></param> public TicketCancel(string ticketId, int bookmakerId, TicketCancellationReason code, int?percent, IReadOnlyCollection <IBetCancel> betCancels) { Guard.Argument(ticketId, nameof(ticketId)).Require(TicketHelper.ValidateTicketId(ticketId)); Guard.Argument(bookmakerId, nameof(bookmakerId)).Positive(); Guard.Argument(percent, nameof(percent)).Require(TicketHelper.ValidatePercent(percent)); Guard.Argument(betCancels, nameof(betCancels)).Require(betCancels == null || betCancels.Any()); if (percent != null && betCancels != null) { throw new ArgumentException("Percent and BetCancels cannot be set at the same time."); } TicketId = ticketId; BookmakerId = bookmakerId; Code = code; Timestamp = DateTime.UtcNow; Version = TicketHelper.MtsTicketVersion; CorrelationId = TicketHelper.GenerateTicketCorrelationId(); CancelPercent = percent; BetCancels = betCancels; }
/// <summary> /// Sets the cancellation code /// </summary> /// <param name="code">The <see cref="TicketCancellationReason" /></param> /// <returns>Returns a <see cref="ITicketCancelBuilder" /></returns> public ITicketCancelBuilder SetCode(TicketCancellationReason code) { _code = code; return(this); }
/// <summary> /// Build a <see cref="ITicketCancel" /> /// </summary> /// <param name="ticketId">The ticket id</param> /// <param name="bookmakerId">The bookmaker id</param> /// <param name="code">The <see cref="TicketCancellationReason" /></param> /// <returns>Return an <see cref="ITicketCancel"/></returns> public ITicketCancel BuildTicket(string ticketId, int bookmakerId, TicketCancellationReason code) { return(new TicketCancel(ticketId, bookmakerId, code, _percent, _betCancels)); }