public override Result <string> Execute(Match regexMatch) { Result <object> createTask(Status status) { var day = status.Day.AddTask( new TaskEntry(regexMatch.Groups["entry"].Value, TimeSpan.Zero)); return(repository.SaveTodaySheet(day)); } return(repository.GetStatus() .Bind(createTask).Bind(_ => todaysSheet.ExecuteWithNoHeader())); }
public override Result <string> Execute(Match regexMatch) { int index = int.Parse(regexMatch.Groups["index"].Value) - 1; Result <object> deleteTask(Day sheet) { if (sheet.Tasks == null || sheet.Tasks.Count <= index) { return(Results.Failure <object>($"There is no task at index {index + 1} in today's sheet.")); } sheet.Tasks.RemoveAt(index); return(repository.SaveTodaySheet(sheet)); } return(repository.GetStatus() .Bind(s => deleteTask(s.Day)) .Bind(_ => todaysSheet.ExecuteWithNoHeader())); }