Newer
Older
VQCalendarAttention / VQCalendarAttention / Program.cs
using System;
using Cronos;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace VestalisQuintet.VQCalendarAttention
{
    public class Program
    {
        private const string CredentialsFilePath = "../calendartowebhook-fa30e21f081f.json";
        private const string CalendarId = "3e39821e10e795b311f93c79490960c3196632a465a794ca32e8a44c50115dde@group.calendar.google.com";

        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();

            // テストとしてCalendarApiTestを実行する
            // await CalendarApiTest.GetLatestEventAsync("3e39821e10e795b311f93c79490960c3196632a465a794ca32e8a44c50115dde@group.calendar.google.com", "../calendartowebhook-fa30e21f081f.json");
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureServices((hostContext, services) =>
                {
                    // Cronosで定義したCronジョブサービスを追加
                    // 翌日の予定を通知する
                    services.AddHostedService<NextDayCalendarAttentionService>(serviceProvider =>
                    {
                        // Cron式を設定 (例: 毎日午前9時に実行)
                        //var cronExpression = CronExpression.Parse("0 9 * * *");
                        // 毎晩21時に実行
                        var cronExpression = CronExpression.Parse("0 21 * * *");
                        //var cronExpression = CronExpression.Parse("* * * * *");

                        // タイムゾーンを東京に設定
                        var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");

                        return new NextDayCalendarAttentionService(cronExpression, timeZoneInfo, serviceProvider, CredentialsFilePath, CalendarId);
                    });
                });
    }
}