コード例 #1
0
        private IMessageResponse RespondToChannelMessage(NotifyUserMessageArgument input)
        {
            Task t = parserService.GetTask(input.Payload.Sender.Username, input.Payload.Message.Msg);

            SendResponse(t);

            if (t != null)
            {
                return(new BasicResponse($"Created [Task {t.ID}]({CreateTaskUrl(t)}): {t.Title}", input.Payload.RoomId));
            }
            else
            {
                // todo: Write a more informing error message how the user can create a task
                return(new BasicResponse("Did not understand", input.Payload.RoomId));
            }
        }
コード例 #2
0
        private IMessageResponse RespondToSetTaskDone(NotifyUserMessageArgument input)
        {
            try
            {
                var rgx    = new Regex(@"set task (?<taskId>\d+)(?: to)? (?<order>\w+)");
                var result = rgx.IsMatch(input.Text);
                var match  = Regex.Match(input.Text, @"set task (?<taskId>\d+)(?: to)? (?<order>\w+)", RegexOptions.IgnoreCase);
                if (match.Success)
                {
                    int    taskid   = int.Parse(match.Groups["taskId"].Value);
                    Task   task     = context.Tasks.First(x => x.ID == taskid);
                    string setvalue = match.Groups["order"].Value;
                    switch (setvalue)
                    {
                    case "done":
                    case "finished":
                        task.Done = true;
                        break;

                    case "open":
                    case "reopen":
                    case "undone":
                        task.Done = false;
                        break;

                    default:
                        return(new BasicResponse($"I don't know what to do with Task {task.ID}. Use either 'done' or 'open'."));
                    }
                    context.SaveChanges();
                    return(new BasicResponse($"Sucessfully set Task {task.ID} {setvalue}"));
                }
            }
            catch (Exception ex)
            {
                logger.LogError(ex, "Error setting task status. Input message: '{message}'", input.Text);
            }
            return(null);
        }
コード例 #3
0
 private void SendResponse(Task t)
 {
     if (t == null)
     {
         return;
     }
     // todo: Set to common messenger
     if (t.Assignees.Count == 1 && t.Assignees.First().UserID == t.InitiatorID)
     {
         messenger.SendMessageToUser(t.InitiatorID, $"You assigned Task {t.ID} to yourself");
     }
     else
     {
         messenger.SendMessageToUser(t.InitiatorID, $"You assigned Task {t.ID} to " + t.Assignees.Select(x => x.UserID != t.InitiatorID ? "@" + x.User.Name : "yourself").Aggregate((a, b) => a + ", " + b));
     }
     foreach (var assignee in t.Assignees)
     {
         if (assignee.UserID != t.InitiatorID)
         {
             messenger.SendMessageToUser(assignee.UserID, $"Task {t.ID} has been assigned to you by @" + t.Initiator.Name);
         }
     }
 }
コード例 #4
0
 private string CreateTaskUrl(Task t) => $"{ResponseUrl}/tasks/{t.ID}";