Ejemplo n.º 1
0
        public Task UpsertState(ConversationStateEntity stateEntity)
        {
            // エンティティ作成
            var upsertOp = TableOperation.InsertOrReplace(stateEntity);

            return(_conversationStateTable.ExecuteAsync(upsertOp));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 public async Task PunchDoNotAskToday(ConversationStateEntity stateEntity)
 {
     // 今日はもう聞かないにして更新
     stateEntity.State = AskingState.DoNotAskToday;
     await _conversationStateRepo.UpsertState(stateEntity);
 }