Exemplo n.º 1
0
        /// <summary>
        /// タイマー発火時処理
        /// </summary>
        /// <param name="guid"></param>
        public async void Elapsed(Guid guid)
        {
            var tracking = _timerList.FirstOrDefault(u => u.TimerId == guid);

            if (tracking == null)
            {
                return;
            }

            //夜中は配達されるはずがないので、日本時間の午前8時から午後9時までの間のみ確認を行う
            {
                //現在の日本時間
                var nowTimeOfDay = DateTime.UtcNow.AddHours(9).TimeOfDay;

                if (new TimeSpan(8, 0, 0) <= nowTimeOfDay && nowTimeOfDay <= new TimeSpan(21, 0, 0))
                {
                    var(isFinish, finishDate) = await _track.CheckPost(tracking.InquiryNumber);

                    if (isFinish)
                    {
                        var message = $"追跡番号{tracking.InquiryNumber}の荷物は{finishDate}に配達が完了しました。";
                        await _track.PostWebHook(_config.WebHookUrl, message);

                        Console.Write("お届け済みのため終了しました。");

                        tracking.Timer.Stop();

                        return;
                    }
                }
            }


            if (DateTime.UtcNow > tracking.SetDate.AddDays(5))
            {
                var message = $"追跡番号{tracking.InquiryNumber}の荷物は所定時間を経過しても配送完了にならないため、監視を終了しました。";
                await _track.PostWebHook(_config.WebHookUrl, message);

                Console.Write("お届け済みのため終了しました。");

                tracking.Timer.Stop();
            }
        }