static void Main(string[] args) { var cmd = new AddQuestionCmd("username", "Problem in C#", "A question is written here", "#csharp"); var question = QuestionAsked.Create("this is a question", new List <string>() { "tag1", "tag2" }); question.Match( Succ: quest => { VoteQuestion(quest); Console.WriteLine("Valid Question"); return(Unit.Default); }, Fail: ex => { Console.WriteLine($"Invalid Question. Reason: {ex.Message}"); return(Unit.Default); } ); Console.ReadLine(); }
static void Main(string[] args) { var cmd = new AddQuestionCmd("username", "Problem in C#", "A question is written here", "#csharp"); var result = AddQuestion(cmd); result.Match( ProcessQuestionPosted, ProcessQuestionRejected, ProcessInvalidQuestion ); Console.ReadLine(); }
public static IAddQuestionResult AddQuestion(AddQuestionCmd addQuestionCommand) { if (string.IsNullOrWhiteSpace(addQuestionCommand.User)) { var errors = new List <string>() { "User not connected" }; return(new QuestionValidationFailed(errors)); } if (new Random().Next(10) > 1) { return(new QuestionRejected("User not connected")); } var questionId = Guid.NewGuid(); var result = new QuestionPosted(questionId, addQuestionCommand.Title); //execute logic return(result); }