/// <summary> /// WS情報をアップロードして、一括登録 /// </summary> /// <param name="userList">一括登録のWSマスタリスト</param> /// <returns></returns> public async Task UploadAsync(List <WorkScheduleMaster> wsmList) { _logger.LogTrace(DateTime.Now + "|DBへWS一括登録処理開始"); using (var transaction = _context.Database.BeginTransaction()) { try { // 登録済みの最新のWSマスタバージョンを検索し、存在する場合は有効期限日付時刻を現在時刻で更新する。WSマスタバージョンを追加してバージョン番号を取得する。 var wsv = new WorkScheduleVersion(); wsv.ExpirationDate = DateTime.MaxValue; var now = DateTime.Now; wsv.RegisterDate = now; if (_context.WorkScheduleVersions.Any()) { var latestWsv = _context.WorkScheduleVersions.OrderByDescending(e => e.Id).First(); latestWsv.ExpirationDate = now; } _context.WorkScheduleVersions.Add(wsv); await _context.SaveChangesAsync(); long latestVer = _context.WorkScheduleVersions.Max(e => e.Id); _logger.LogTrace(DateTime.Now + $"|WSマスタバージョン更新済。最新バージョン:{latestVer}"); //DBにWSマスタを追加 wsmList.ForEach(wsm => { wsm.Version = latestVer; _context.WorkScheduleMasters.Add(wsm); }); await _context.SaveChangesAsync(); transaction.Commit(); _logger.LogTrace(DateTime.Now + $"|WS一括登録済:合計{wsmList.Count}件"); } catch (Exception e) { transaction.Rollback(); _logger.LogError(DateTime.Now + "|処理失敗、ロールバック済。Exceptionメッセージ:" + e.Message); throw; } } }
/// <summary> /// 登録済みの最新のWSマスタバージョンを検索し、存在する場合は有効期限日付時刻を現在時刻で更新する。WSマスタバージョンを追加してバージョン番号を取得する。 /// </summary> public long Add() { WorkScheduleVersion wsv = new WorkScheduleVersion(); wsv.ExpirationDate = DateTime.MaxValue; var now = DateTime.Now; wsv.RegisterDate = now; long latestVersion = GetLatestVersion(); if (latestVersion > 0) { WorkScheduleVersion latestWsv = _context.WorkScheduleVersions.Find(GetLatestVersion()); latestWsv.ExpirationDate = now; _context.WorkScheduleVersions.Update(latestWsv); } _context.WorkScheduleVersions.Add(wsv); _context.SaveChanges(); return(GetLatestVersion()); }