Exemple #1
0
        public async Task Get()
        {
            var batons = service.GetQueues().GetAwaiter().GetResult();

            foreach (var baton in batons)
            {
                var queue = baton.Object.Queue;
                if (queue.Count > 0)
                {
                    var batonHolder = queue.FirstOrDefault();
                    var hoursAgo    = DateTime.Now.AddHours(timerCheckAllowance * -1);
                    if (batonHolder.DateReceived < hoursAgo)
                    {
                        if (batonHolder.Conversation != null)
                        {
                            await((BotAdapter)adapter).ContinueConversationAsync(appId, batonHolder.Conversation,
                                                                                 async(context, token) =>
                            {
                                await context.SendActivityAsync($"Hey! whatcha got there? Is it? Oh it is the {baton.Object.Name} baton");
                            }, default(CancellationToken));
                        }
                    }
                }
            }
        }
        public async Task Handler(string type, string comment, int pullRequest, ITurnContext <IMessageActivity> turnContext,
                                  CancellationToken cancellationToken)
        {
            var batons = await service.GetQueues();

            var batonFireObject = batons?.FirstOrDefault(x => x.Object.Name.Equals(type));

            var conversationReference = turnContext.Activity.GetConversationReference();

            var name = turnContext.Activity.From.Name.Replace(" | Redington", "").Replace(" | Godel", "");

            if (batonFireObject == null)
            {
                var baton = new BatonQueue(type);

                baton.Queue.Enqueue(new BatonRequest()
                {
                    UserName          = name,
                    UserId            = conversationReference.User.Id,
                    DateRequested     = DateTime.Now.ToLocalTime(),
                    DateReceived      = DateTime.Now.ToLocalTime(),
                    Conversation      = conversationReference,
                    BatonName         = type,
                    Comment           = comment,
                    PullRequestNumber = pullRequest
                });

                service.SaveQueue(baton);

                SendItsAllYours(turnContext, cancellationToken);
            }
            else
            {
                if (batonFireObject.Object.Queue.Count == 0)
                {
                    var baton = new BatonRequest()
                    {
                        UserName          = name,
                        UserId            = conversationReference.User.Id,
                        BatonName         = type,
                        DateRequested     = DateTime.Now,
                        DateReceived      = DateTime.Now,
                        Conversation      = conversationReference,
                        Comment           = comment,
                        PullRequestNumber = pullRequest
                    };

                    batonFireObject.Object.Queue.Enqueue(baton);

                    await service.UpdateQueue(batonFireObject);

                    this.SendItsAllYours(turnContext, cancellationToken);
                    await this.releaseService.GotBaton(baton, string.Empty, false, turnContext, cancellationToken);
                }
                else
                {
                    batonFireObject.Object.Queue.Enqueue(new BatonRequest()
                    {
                        UserName = name, UserId = conversationReference.User.Id, BatonName = type, DateRequested = DateTime.Now, Conversation = conversationReference, Comment = comment, PullRequestNumber = pullRequest
                    });

                    await service.UpdateQueue(batonFireObject);

                    await this.SendAddedToTheQueue(turnContext, cancellationToken);

                    //TODO - just use the queue you have
                    await showBatonService.SendBatons(turnContext, cancellationToken);
                }
            }
        }