private async Task <bool> CommandDownloadTimecardPreviousMonthAsync(IDialogContext context, Command command) { if (_currentUser == null) { await context.PostAsync("ユーザー登録されている人のみ使える機能です。"); return(false); } // ユーザーのタイムゾーンでの現在時刻 var tzUser = TimeZoneInfo.FindSystemTimeZoneById(_currentUser.TimeZoneId); var nowUserTz = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tzUser).AddMonths(-1); // 先月 var ym = Yyyymm.FromDate(nowUserTz.AddMonths(-1)); var usecase = new MainUsecase(_currentUser); var dumped = await usecase.DumpTimecard(ym); if (string.IsNullOrEmpty(dumped)) { await context.PostAsync($"{ym.Format()}bのタイムカードはデータがありません。"); } else { await context.PostAsync($"{ym.Format()} のタイムカードです。"); await context.PostAsync(dumped); } return(false); }
private async Task ReceiveDownloadTimecardOrderAsync(IDialogContext context, IAwaitable <DownloadTimecardOrder> result) { try { var order = await result; var usecase = new MainUsecase(_currentUser); var res = await usecase.DumpTimecard(order.YearMonth); if (res.ym.IsEmpty) { await context.PostAsync($"年月が正しくありません。YYYYMM もしくは今月、先月と指定して下さい。"); } else if (string.IsNullOrEmpty(res.csv)) { await context.PostAsync($"{res.ym.Format()} のタイムカードはデータがありません。"); } else { await context.PostAsync($"{res.ym.Format()} のタイムカードです。"); await context.PostAsync(res.csv); } } catch (Exception ex) { Trace.WriteLine($"ReceiveDownloadTimecardOrderAsync failed - {ex.Message} - {ex.StackTrace}"); await context.PostAsync($"中止しました。"); } }