/// <summary> /// UtilityモデルをレスポンスDTOに変換する /// </summary> /// <param name="utilParam">Utilityパラメータ</param> /// <returns>Dtoクラスパラメータ</returns> public static DeliveryResultResponseDto ConvertUtilityToResponseDto(this DtDeliveryResult utilParam) { return utilParam == null ? null : new DeliveryResultResponseDto() { Sid = utilParam.Sid, DeviceSid = utilParam.DeviceSid, GatewayDeviceSid = utilParam.GwDeviceSid, ////DeliveryGroupSid CreateDatetime = utilParam.CreateDatetime, InstallResultHistories = utilParam.DtInstallResult.Select(x => x.ConvertUtilityToResponseDto()).ToArray() }; }
/// <summary> /// 引数に指定したDtDeliveryResultでDT_DELIVERY_RESULTテーブルを更新する /// </summary> /// <param name="inData">更新するデータ</param> /// <returns>更新したデータ</returns> public DtDeliveryResult UpdateDtDeliveryResult(DtDeliveryResult inData) { DtDeliveryResult model = null; try { _logger.EnterJson("{0}", inData); Rms.Server.Core.DBAccessor.Models.DtDeliveryResult entity = new Rms.Server.Core.DBAccessor.Models.DtDeliveryResult(inData); _dbPolly.Execute(() => { using (Rms.Server.Core.DBAccessor.Models.RmsDbContext db = new Rms.Server.Core.DBAccessor.Models.RmsDbContext(_appSettings)) { db.DtDeliveryResult.Attach(entity); // 全フィールドを更新する // 特定フィールドだけUpdateする場合は下記のように記述してください // db.Entry(entity).Property(x => x.UpdateDatetime).IsModified = true; db.Entry(entity).State = Microsoft.EntityFrameworkCore.EntityState.Modified; if (db.SaveChanges() > 0) { model = entity.ToModel(); } } }); return(model); } catch (ValidationException e) { throw new RmsParameterException(e.ValidationResult.ErrorMessage, e); } catch (Exception e) { throw new RmsException("DT_DELIVERY_RESULTテーブルのUpdateに失敗しました。", e); } finally { _logger.LeaveJson("{0}", model); } }
/// <summary> /// DT_DELIVERY_RESULTテーブルからDtDeliveryResultを削除する /// </summary> /// <param name="sid">削除するデータのSID</param> /// <returns>削除したデータ</returns> public DtDeliveryResult DeleteDtDeliveryResult(long sid) { DtDeliveryResult model = null; try { _logger.Enter($"{nameof(sid)}={sid}"); Rms.Server.Core.DBAccessor.Models.DtDeliveryResult entity = new Rms.Server.Core.DBAccessor.Models.DtDeliveryResult() { Sid = sid }; _dbPolly.Execute(() => { using (Rms.Server.Core.DBAccessor.Models.RmsDbContext db = new Rms.Server.Core.DBAccessor.Models.RmsDbContext(_appSettings)) { db.DtDeliveryResult.Attach(entity); db.DtDeliveryResult.Remove(entity); if (db.SaveChanges() > 0) { model = entity.ToModel(); } } }); return(model); } catch (ValidationException e) { throw new RmsParameterException(e.ValidationResult.ErrorMessage, e); } catch (Exception e) { throw new RmsException("DT_DELIVERY_RESULTテーブルのDeleteに失敗しました。", e); } finally { _logger.LeaveJson("{0}", model); } }
/// <summary> /// 引数に指定したDtDeliveryResultをDT_DELIVERY_RESULTテーブルへ登録する /// </summary> /// <param name="inData">登録するデータ</param> /// <returns>処理結果</returns> public DtDeliveryResult CreateDtDeliveryResult(DtDeliveryResult inData) { DtDeliveryResult model = null; try { _logger.EnterJson("{0}", inData); Rms.Server.Core.DBAccessor.Models.DtDeliveryResult entity = new Rms.Server.Core.DBAccessor.Models.DtDeliveryResult(inData); _dbPolly.Execute(() => { entity.CreateDatetime = _timePrivder.UtcNow; using (Rms.Server.Core.DBAccessor.Models.RmsDbContext db = new Rms.Server.Core.DBAccessor.Models.RmsDbContext(_appSettings)) { var dbdata = db.DtDeliveryResult.Add(entity).Entity; db.SaveChanges(); model = dbdata.ToModel(); } }); return(model); } catch (ValidationException e) { throw new RmsParameterException(e.ValidationResult.ErrorMessage, e); } catch (Exception e) { throw new RmsException("DT_DELIVERY_RESULTテーブルへのInsertに失敗しました。", e); } finally { _logger.LeaveJson("{0}", model); } }
/// <summary> /// DT_DELIVERY_RESULTテーブルからDtDeliveryResultを取得する /// </summary> /// <param name="sid">取得するデータのSID</param> /// <returns>取得したデータ</returns> public DtDeliveryResult ReadDtDeliveryResult(long sid) { DtDeliveryResult model = null; try { _logger.Enter($"{nameof(sid)}={sid}"); Rms.Server.Core.DBAccessor.Models.DtDeliveryResult entity = null; _dbPolly.Execute(() => { using (Rms.Server.Core.DBAccessor.Models.RmsDbContext db = new Rms.Server.Core.DBAccessor.Models.RmsDbContext(_appSettings)) { entity = db.DtDeliveryResult.FirstOrDefault(x => x.Sid == sid); } }); if (entity != null) { model = entity.ToModel(); } return(model); } catch (ValidationException e) { throw new RmsParameterException(e.ValidationResult.ErrorMessage, e); } catch (Exception e) { throw new RmsException("DT_DELIVERY_RESULTテーブルのSelectに失敗しました。", e); } finally { _logger.LeaveJson("{0}", model); } }
public void CreateDtDeliveryResultTest( string no, string in_InsertNewDataSqlPath, string in_DeleteNewDataSqlPath, string expected_DataJsonPath, string expected_ExceptionType, string expected_ExceptionMessage, string remarks) { // 初期データ挿入 RepositoryTestHelper.ExecInsertSql(in_InsertNewDataSqlPath); // データを作成する var baseDateTime = DateTime.UtcNow; var newResultData = new DtDeliveryResult() { DeviceSid = 1, GwDeviceSid = 1, DeliveryGroupSid = 1, CreateDatetime = baseDateTime }; if (expected_ExceptionType == typeof(RmsException).FullName) { // 存在しないSidを指定する newResultData.DeviceSid = 999; } if (expected_ExceptionType == typeof(ArgumentNullException).FullName) { newResultData = null; } string exceptionName = ""; string exceptionMessage = ""; try { var createdResultData = _deliveryResultRepository.CreateDtDeliveryResult(newResultData); if (createdResultData != null) { // 作成日時はDB側で設定されることを確認する Assert.AreNotEqual(baseDateTime, createdResultData.CreateDatetime); // 比較に使用しない値はnull or 固定値とする createdResultData.CreateDatetime = DateTime.Parse("2020/4/1 0:00:00"); } // データのjson化 string readJson = Utility.ObjectExtensions.ToStringJson(createdResultData); string expectJson = null; if (File.Exists(expected_DataJsonPath)) { expectJson = File.ReadAllText(expected_DataJsonPath); } // データの比較 Assert.AreEqual(expectJson, readJson); // TODO DBデータ内容をチェックする } catch (RmsException e) { exceptionName = e.GetType().FullName; exceptionMessage = e.Message; } catch (ArgumentNullException e) { exceptionName = e.GetType().FullName; exceptionMessage = typeof(DtDeliveryGroup).FullName + " is null."; // HACK ←の部分をメッセージから抽出できれば... } // 例外発生チェック Assert.AreEqual(expected_ExceptionType, exceptionName); Assert.AreEqual(expected_ExceptionMessage, exceptionMessage); // 後処理 RepositoryTestHelper.ExecDeleteSql(in_DeleteNewDataSqlPath); }