コード例 #1
0
        public BusinessSpecResult IsSatisfiedBy(T bo)
        {
            if (bo == null)
            {
                throw new ArgumentNullException(nameof(bo));
            }

            var taskFactory   = new TaskFactory();
            var firstSpecTask = taskFactory.StartNew(() => { return(_first.IsSatisfiedBy(bo)); });

            var secondSpecTask = taskFactory.StartNew(() => { return(_second.IsSatisfiedBy(bo)); });
            var firsResult     = firstSpecTask.Result;

            var secondResult = secondSpecTask.Result;
            var statusList   = new BusinessResultStatus[] { firsResult.Status, secondResult.Status };

            var isSatisfied = firsResult.IsSatisfied || secondResult.IsSatisfied;
            var status      = BusinessResultStatus.Success;

            if (isSatisfied)
            {
                status = statusList
                         .Where(s => s < BusinessResultStatus.InvalidInputs)
                         .OrderBy(s => s)
                         .First();
            }
            else
            {
                status = statusList
                         .Where(s => s >= BusinessResultStatus.InvalidInputs)
                         .OrderBy(s => s)
                         .First();
            }

            return(new BusinessSpecResult
                   (
                       isSatisfied: firsResult.IsSatisfied || secondResult.IsSatisfied,
                       status: status,
                       messages: firsResult.Messages.Concat(secondResult.Messages)
                   ));
        }
コード例 #2
0
 /// <summary>
 /// Constructor with empty messages
 /// </summary>
 /// <param name="isSatisfied"></param>
 /// <param name="status"></param>
 public BusinessSpecResult(bool isSatisfied, BusinessResultStatus status) : this(isSatisfied, status, new BusinessSpecMessage[0])
 {
 }
コード例 #3
0
 /// <summary>
 /// Full constructor
 /// </summary>
 /// <param name="isSatisfied"></param>
 /// <param name="status"></param>
 /// <param name="messages"></param>
 public BusinessSpecResult(bool isSatisfied, BusinessResultStatus status, IEnumerable <BusinessSpecMessage> messages)
 {
     IsSatisfied = isSatisfied;
     Status      = status;
     Messages    = messages.ToList();
 }
コード例 #4
0
 /// <summary>
 /// Full constructor
 /// </summary>
 /// <param name="status"></param>
 /// <param name="message"></param>
 public BusinessSpecMessage(BusinessResultStatus status, string message)
 {
     Status  = status;
     Message = message;
 }
コード例 #5
0
 /// <summary>
 /// Constructor with default ResultId and empty message list
 /// </summary>
 /// <param name="status"></param>
 public BusinessCommandResult(BusinessResultStatus status) : this(Guid.NewGuid(), status, new string[0])
 {
 }
コード例 #6
0
 /// <summary>
 /// Constructor for results with default ResultId and single message
 /// </summary>
 /// <param name="status"></param>
 /// <param name="message"></param>
 public BusinessCommandResult(BusinessResultStatus status, string message) : this(Guid.NewGuid(), status, new string[] { message })
 {
 }
コード例 #7
0
 /// <summary>
 /// Constructor with default resultId
 /// </summary>
 /// <param name="status"></param>
 /// <param name="messages"></param>
 public BusinessCommandResult(BusinessResultStatus status, IEnumerable <string> messages) : this(Guid.NewGuid(), status, messages)
 {
 }
コード例 #8
0
 /// <summary>
 /// Full constructor
 /// </summary>
 /// <param name="resultId"></param>
 /// <param name="status"></param>
 /// <param name="messages"></param>
 public BusinessCommandResult(Guid resultId, BusinessResultStatus status, IEnumerable <string> messages)
 {
     ResultId = resultId;
     Status   = status;
     Messages = messages.ToList();
 }