示例#1
0
        private static async Task <IList <Plan> > GetTodayPlansWithVideoAndResponsible(CloudTable plansTable)
        {
            var filter = TableQuery.CombineFilters(
                TableQuery.GenerateFilterCondition("Owner", "ne", null),
                "and",
                TableQuery.GenerateFilterCondition("Video", "ne", null)
                );

            return(await PlanHelpers.GetPlansForDate(plansTable, DateTime.Today, filter));
        }
示例#2
0
        public static async Task CloseVote(
            [TimerTrigger("0 0 11 * * *")] TimerInfo timer, // 11AM daily
            [Table("plans")] CloudTable plansTable,
            [Table("votes")] CloudTable votesTable,
            [Table("proposals")] CloudTable proposalsTable,
            IBinder binder)
        {
            Utils.SetCulture();

            var today        = DateTime.Today;
            var withoutVideo = TableQuery.GenerateFilterCondition("Video", "eq", "");

            var plans = await PlanHelpers.GetPlansForDate(plansTable, today, withoutVideo);

            foreach (var plan in plans)
            {
                await CloseVote(binder, plansTable, votesTable, proposalsTable, plan);
            }
        }
示例#3
0
        private static async Task <IList <Plan> > GetTodayPlansWithoutResponsible(CloudTable plansTable)
        {
            var filter = TableQuery.GenerateFilterCondition("Owner", "eq", null);

            return(await PlanHelpers.GetPlansForDate(plansTable, DateTime.Today, filter));
        }
示例#4
0
        public static async Task PlanReminder(
            [TimerTrigger("0 0 9 * * *")] TimerInfo timer, // 9:00AM daily
            [Table("plans")] CloudTable plansTable,
            IBinder binder)
        {
            Utils.SetCulture();

            var today        = DateTime.Today;
            var withoutVideo = TableQuery.GenerateFilterCondition("Video", "eq", "");

            // Lundi: Initier le vote pour les vidéos de cette semaine (sauf si aujourd'hui)
            if (today.DayOfWeek == DayOfWeek.Monday)
            {
                var weeksPlans = await PlanHelpers.GetPlansBetween(plansTable, today.AddDays(1), today.AddDays(5), withoutVideo);

                foreach (var plan in weeksPlans)
                {
                    await SendMessage(plan);
                }
            }
            // Vendredi: Initier le vote pour les vidéos de lundi prochain
            if (today.DayOfWeek == DayOfWeek.Friday)
            {
                var mondaysPlans = await PlanHelpers.GetPlansForDate(plansTable, today.AddDays(3), withoutVideo);

                foreach (var plan in mondaysPlans)
                {
                    await SendMessage(plan);
                }
            }

            // Rappel du lunch & watch d'aujourd'hui
            var todaysPlans = await PlanHelpers.GetPlansForDate(plansTable, today);

            foreach (var plan in todaysPlans)
            {
                await SendMessage(plan);
            }

            async Task SendMessage(Plan plan)
            {
                var isToday = plan.Date.Date == today;

                string message = null;

                if (isToday)
                {
                    message = "Rappel: Il y a un Lunch & Watch ce midi!";
                    if (string.IsNullOrWhiteSpace(plan.Video))
                    {
                        message += " Votez pour le vidéo si ce n'est pas déjà fait! Vous avez jusqu'à 11h pour choisir.";
                    }
                    if (string.IsNullOrWhiteSpace(plan.Owner))
                    {
                        message += "\n\nIl n'y a pas encore de responsable pour préparer le vidéo. Cliquez sur _Je m'en occupe_ pour vous porter volontaire!";
                    }
                }
                else
                {
                    if (string.IsNullOrWhiteSpace(plan.Video))
                    {
                        message = "C'est le moment de voter pour le vidéo de ce Lunch & Watch :";
                    }
                }

                if (string.IsNullOrWhiteSpace(message))
                {
                    return;
                }

                await SlackHelper.PostMessage(binder, plan.Team, new PostMessageRequest {
                    Channel     = plan.Channel,
                    Text        = message,
                    Attachments = { await MessageHelpers.GetPlanAttachment(binder, plan) }
                });
            }
        }