public override bool ProcessContract(ParticipantHandler participantHandler, List <Chain> chains) { if (!ValidateContextual(participantHandler, chains)) { return(false); } if (participantHandler.IsEmpty() && participantHandler.IsVotablePublisher(TransactionAddress)) //For the first publisher in the chain { if (Vote) { return(participantHandler.CastVoteForPublisher(TransactionAddress, SenderAddress)); } else { participantHandler.CastVoteAgainstPublisher(TransactionAddress, SenderAddress); } } else if (participantHandler.IsVotablePublisher(TransactionAddress) && participantHandler.HasPublisher(SenderAddress)) { if (Vote) { return(participantHandler.CastVoteForPublisher(TransactionAddress, SenderAddress)); } else { participantHandler.CastVoteAgainstPublisher(TransactionAddress, SenderAddress); } } else if (participantHandler.IsVotablePhysician(TransactionAddress) && participantHandler.HasSender(SenderAddress)) { if (Vote) { participantHandler.CastVoteForPhysician(TransactionAddress, SenderAddress); } else { participantHandler.CastVoteAgainstPhysician(TransactionAddress, SenderAddress); } } else { return(false); } return(true); }