// TODO: expose some infra callbacks instead of the domain one
        public void Route(InvestorInstructionDto investorInstructionDto, Action <InstructionExecutedDto> instructionExecutedCallback, Action <InstructionFailedDto> instructionFailedCallback)
        {
            // Maps the DTO model to the domain one
            var investorIntruction = new InvestorInstruction(investorInstructionDto.UniqueIdentifier.Value, investorInstructionDto.Way, investorInstructionDto.Quantity, investorInstructionDto.Price, investorInstructionDto.AllowPartialExecution, investorInstructionDto.GoodTill);
            var dtoCallBacks       = new InvestorInstructionDtoCallBacks(instructionExecutedCallback, instructionFailedCallback);

            this.sor.Route(investorIntruction, dtoCallBacks.ExecutedCallback, dtoCallBacks.FailedCallbacks);

            // TODO: cleanup the dtoCallback resource
        }
 private bool Equals(InvestorInstructionDto other)
 {
     return(object.Equals(this.UniqueIdentifier, other.UniqueIdentifier) && this.Way == other.Way && this.Quantity == other.Quantity && this.Price == other.Price && this.AllowPartialExecution == other.AllowPartialExecution && this.GoodTill.Equals(other.GoodTill));
 }