/// <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()
     };
 }
Example #2
0
        /// <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);
            }
        }
Example #3
0
        /// <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);
            }
        }
Example #4
0
        /// <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);
            }
        }
Example #5
0
        /// <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);
        }