public Task UpsertState(ConversationStateEntity stateEntity) { // エンティティ作成 var upsertOp = TableOperation.InsertOrReplace(stateEntity); return(_conversationStateTable.ExecuteAsync(upsertOp)); }
public async Task PunchTodayIsOff(ConversationStateEntity stateEntity) { // 今日は休み にして更新 stateEntity.State = AskingState.TodayIsOff; await _conversationStateRepo.UpsertState(stateEntity); // もし終業時刻が登録済みだったら削除する var tzUser = TimeZoneInfo.FindSystemTimeZoneById(_currentUser.TimeZoneId); var nowUserTz = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tzUser); // ユーザーのタイムゾーンでの現在時刻 await _monthlyTimecardRepo.DeleteTimecardRecord(_currentUser.UserId, Yyyymmdd.FromDate(nowUserTz)); }
public Task UpsertState(string partitionKey, string userId, AskingState state, string askingEoWTime, string targetDate) { // エンティティ作成 var stateEntity = new ConversationStateEntity(partitionKey, userId) { State = state, TargetTime = askingEoWTime, TargetDate = targetDate }; var upsertOp = TableOperation.InsertOrReplace(stateEntity); return(_conversationStateTable.ExecuteAsync(upsertOp)); }
PunchEoW(ConversationStateEntity stateEntity) { var hhmm = Hhmm.Parse(stateEntity.TargetTime); // 該当日のタイムカードの終業時刻を更新 var ymd = Yyyymmdd.Parse(stateEntity.TargetDate, _currentUser.TimeZoneId); if (ymd.isEmpty || hhmm.IsEmpty) { Trace.WriteLine($"PunchEoW parse ymd, hhmm failed - {ymd}, {hhmm}"); return(ymd, hhmm); } var monthlyTimecardRepo = new MonthlyTimecardRepository(); await monthlyTimecardRepo.UpsertTimecardRecord(_currentUser.UserId, ymd, hhmm); // 打刻済みにして更新 stateEntity.State = AskingState.Punched; await _conversationStateRepo.UpsertState(stateEntity); return(ymd, hhmm); }
public async Task PunchDoNotAskToday(ConversationStateEntity stateEntity) { // 今日はもう聞かないにして更新 stateEntity.State = AskingState.DoNotAskToday; await _conversationStateRepo.UpsertState(stateEntity); }