Beispiel #1
0
        /// <summary>
        /// 新增单位
        /// </summary>
        /// <returns></returns>
        public ActionResult Add()
        {
            string        MeasureName = WebUtil.GetFormValue <string>("MeasureName");
            string        CompanyID   = WebUtil.GetFormValue <string>("CompanyID");
            MeasureEntity entity      = new MeasureEntity();

            entity.MeasureName = MeasureName;
            entity.CompanyID   = CompanyID;
            entity.SN          = ConvertHelper.NewGuid();
            entity.MeasureNum  = new TNumProvider(CompanyID).GetSwiftNum(typeof(MeasureEntity), 5);
            MeasureProvider provider = new MeasureProvider(CompanyID);
            int             line     = provider.AddMeasure(entity);
            DataResult      result   = new DataResult();

            if (line > 0)
            {
                result.Code    = (int)EResponseCode.Success;
                result.Message = "单位新增成功";
            }
            else
            {
                result.Code    = (int)EResponseCode.Exception;
                result.Message = "单位新增失败";
            }
            return(Content(JsonHelper.SerializeObject(result)));
        }
Beispiel #2
0
 /// <summary>
 /// リストに追加する
 /// </summary>
 /// <param name="entity">計測リポジトリー</param>
 public static void Add(MeasureEntity entity)
 {
     // ここも一つだけアクセスの保証を行う
     lock (((ICollection)_entities).SyncRoot) {
         _entities.Add(entity);
     }
 }
Beispiel #3
0
        /// <summary>
        /// 编辑单位
        /// </summary>
        /// <returns></returns>
        public ActionResult Edit()
        {
            string MeasureName = WebUtil.GetFormValue <string>("MeasureName");
            string CompanyID   = WebUtil.GetFormValue <string>("CompanyID");
            string SN          = WebUtil.GetFormValue <string>("SN");
            string MeasureNum  = WebUtil.GetFormValue <string>("MeasureNum");

            MeasureEntity entity = new MeasureEntity();

            entity.MeasureName = MeasureName;
            entity.CompanyID   = CompanyID;
            entity.SN          = SN;
            entity.MeasureNum  = MeasureNum;

            MeasureProvider provider = new MeasureProvider(CompanyID);
            int             line     = provider.EditMeasure(entity);
            DataResult      result   = new DataResult();

            if (line > 0)
            {
                result.Code    = (int)EResponseCode.Success;
                result.Message = "单位修改成功";
            }
            else
            {
                result.Code    = (int)EResponseCode.Exception;
                result.Message = "单位修改失败";
            }
            return(Content(JsonHelper.SerializeObject(result)));
        }
Beispiel #4
0
        /// <summary>
        /// 查询分页
        /// </summary>
        /// <returns></returns>
        public ActionResult GetPage()
        {
            string        CompanyID   = WebUtil.GetFormValue <string>("CompanyID");
            int           PageIndex   = WebUtil.GetFormValue <int>("PageIndex", 1);
            int           PageSize    = WebUtil.GetFormValue <int>("PageSize", 10);
            string        MeasureName = WebUtil.GetFormValue <string>("MeasureName");
            string        MeasureNum  = WebUtil.GetFormValue <string>("MeasureNum");
            MeasureEntity entity      = new MeasureEntity();

            entity.MeasureName = MeasureName;
            entity.MeasureNum  = MeasureNum;
            entity.CompanyID   = CompanyID;
            PageInfo pageInfo = new PageInfo();

            pageInfo.PageIndex = PageIndex;
            pageInfo.PageSize  = PageSize;
            MeasureProvider                provider = new MeasureProvider(CompanyID);
            List <MeasureEntity>           list     = provider.GetList(entity, ref pageInfo);
            DataListResult <MeasureEntity> result   = new DataListResult <MeasureEntity>()
            {
                Code = (int)EResponseCode.Success, Message = "响应成功", Result = list, PageInfo = pageInfo
            };

            return(Content(JsonHelper.SerializeObject(result)));
        }
Beispiel #5
0
        /// <summary>
        /// 查询产品单位
        /// </summary>
        /// <param name="ProductNum"></param>
        /// <returns></returns>
        public List <MeasureEntity> GetList(string ProductNum)
        {
            List <MeasureEntity> listResult = new List <MeasureEntity>();

            ProductProvider proProvider = new ProductProvider(this.CompanyID);
            ProductEntity   product     = proProvider.GetProduct(ProductNum);

            if (product != null)
            {
                MeasureEntity entity = GetMeasure(product.UnitNum);
                if (entity != null)
                {
                    listResult.Add(entity);
                }
            }
            List <MeasureRelEntity> listSource = GetMeasureRel(ProductNum);

            if (!listSource.IsNullOrEmpty())
            {
                foreach (MeasureRelEntity item in listSource)
                {
                    if (!listResult.Exists(a => a.SN == item.MeasureTarget))
                    {
                        MeasureEntity entity = GetMeasure(item.MeasureTarget);
                        if (entity != null)
                        {
                            listResult.Add(entity);
                        }
                    }
                }
            }
            return(listResult);
        }
Beispiel #6
0
        public void Search()
        {
            MeasureEntity entity = _measureRepository.GetLatest();

            AreaIDText       = entity.AreaID.ToString().PadLeft(4, '0');
            MeasureDateText  = entity.MeasureDate.ToString("yyyy/MM/dd hh:mm:ss");
            MeasureValueText = Math.Round(entity.MeasureValue, 2) + "℃";
        }
Beispiel #7
0
        public static Measure_CE ToCE(MeasureEntity item)
        {
            Measure_CE target = new Measure_CE();

            target.ID          = item.ID;
            target.SN          = item.SN;
            target.MeasureNum  = item.MeasureNum;
            target.MeasureName = item.MeasureName;
            return(target);
        }
Beispiel #8
0
        public async Task UpdateStatusAsync(SubscriberUpdated message)
        {
            MeasureEntity measure = await _measureContext.Measures
                                    .FirstOrDefaultAsync(m => m.Id == message.MeasureId);

            measure.Status   = message.Status;
            measure.Comments = message.Comment;

            await _measureContext.SaveChangesAsync();
        }
Beispiel #9
0
        /// <summary>
        /// 添加计量单位
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public int AddMeasure(MeasureEntity entity)
        {
            entity.IncludeAll();
            int line = this.Measure.Add(entity);

            if (line > 0)
            {
                CacheHelper.Remove(CacheKey.JOOSHOW_MEASURE_CACHE);
            }
            return(line);
        }
Beispiel #10
0
        public void Save(MeasureEntity entity)
        {
            var index = _entities.FindIndex(x => x.MeasureId == entity.MeasureId);

            if (index >= 0)
            {
                _entities[index] = entity;
                return;
            }
            _entities.Add(entity);
        }
Beispiel #11
0
        public void 直近値_シナリオ()
        {
            var measureMock = new Mock <IMeasureRepository>();
            var measure     = new MeasureEntity("guidA", "2017/01/01 13:00:00".ToDate(), 1.23456f);

            measureMock.Setup(x => x.GetLatest()).Returns(measure);

            var viewModel = new LatestViewModel(measureMock.Object);

            Assert.AreEqual("2017/01/01 13:00:00", viewModel.MeasureDate);
            Assert.AreEqual("1.23m/s", viewModel.MeasureValue);
        }
Beispiel #12
0
        public void シナリオ()
        {
            var entity      = new MeasureEntity(1, Convert.ToDateTime("2012/12/12 12:34:56"), 12.341f);
            var measureMock = new Mock <IMeasureRepository>();
            var vm          = new LatestViewModel(measureMock.Object);

            measureMock.Setup(x => x.GetLatest()).Returns(entity);
            vm.Search();
            vm.AreaIDText.Is("0001");
            vm.MeasureDateText.Is("2012/12/12 12:34:56");
            vm.MeasureValueText.Is("12.34℃");
        }
Beispiel #13
0
        /// <summary>
        /// 添加计量单位
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public int AddMeasure(MeasureEntity entity)
        {
            string Key = string.Format(CacheKey.JOOSHOW_MEASURE_CACHE, entity.CompanyID);

            entity.IncludeAll();
            int line = this.Measure.Add(entity);

            if (line > 0)
            {
                CacheHelper.Remove(Key);
            }
            return(line);
        }
Beispiel #14
0
        /// <summary>
        /// 查询分页计量单位
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="pageInfo"></param>
        /// <returns></returns>
        public List <MeasureEntity> GetList(MeasureEntity entity, ref PageInfo pageInfo)
        {
            List <MeasureEntity> listResult = GetList();

            if (!listResult.IsNullOrEmpty())
            {
                int rowCount = 0;
                rowCount          = listResult.Where(a => a.MeasureName.Contains(entity.MeasureName)).Count();
                pageInfo.RowCount = rowCount;
                return(listResult.Where(a => a.MeasureName.Contains(entity.MeasureName)).Skip((pageInfo.PageIndex - 1) * pageInfo.PageSize).Take(pageInfo.PageSize).ToList());
            }
            return(null);
        }
Beispiel #15
0
        /// <summary>
        /// 查询单位信息
        /// </summary>
        /// <returns></returns>
        public ActionResult Single()
        {
            string                     CompanyID = WebUtil.GetFormValue <string>("CompanyID");
            string                     SN        = WebUtil.GetFormValue <string>("SN");
            MeasureProvider            provider  = new MeasureProvider(CompanyID);
            MeasureEntity              entity    = provider.GetMeasure(SN);
            DataResult <MeasureEntity> result    = new DataResult <MeasureEntity>()
            {
                Code = (int)EResponseCode.Success, Message = "响应成功", Result = entity
            };

            return(Content(JsonHelper.SerializeObject(result)));
        }
Beispiel #16
0
        /// <summary>
        /// 根据计量单位删除
        /// </summary>
        /// <param name="measureNum"></param>
        /// <returns></returns>
        public int DeleteMeasure(string measureNum)
        {
            MeasureEntity entity = new MeasureEntity();

            entity.Where(a => a.MeasureNum == measureNum);
            int line = this.Measure.Delete(entity);

            if (line > 0)
            {
                CacheHelper.Remove(CacheKey.JOOSHOW_MEASURE_CACHE);
            }
            return(line);
        }
Beispiel #17
0
        /// <summary>
        /// 编辑计量单位
        /// </summary>
        /// <param name="measureNum"></param>
        /// <param name="measureName"></param>
        /// <returns></returns>
        public int EditMeasure(string measureNum, string measureName)
        {
            MeasureEntity entity = new MeasureEntity();

            entity.MeasureName = measureName;
            entity.IncludeMeasureName(true);
            entity.Where(a => a.MeasureNum == measureNum);
            int line = this.Measure.Update(entity);

            if (line > 0)
            {
                CacheHelper.Remove(CacheKey.JOOSHOW_MEASURE_CACHE);
            }
            return(line);
        }
Beispiel #18
0
        /// <summary>
        /// 编辑计量单位
        /// </summary>
        /// <param name="measureNum"></param>
        /// <param name="measureName"></param>
        /// <returns></returns>
        public int EditMeasure(MeasureEntity entity)
        {
            string Key = string.Format(CacheKey.JOOSHOW_MEASURE_CACHE, CompanyID);

            entity.MeasureName = entity.MeasureName;
            entity.IncludeMeasureName(true);
            entity.Where(a => a.SN == entity.SN);
            int line = this.Measure.Update(entity);

            if (line > 0)
            {
                CacheHelper.Remove(Key);
            }
            return(line);
        }
Beispiel #19
0
        /// <summary>
        /// 根据计量单位删除
        /// </summary>
        /// <param name="measureNum"></param>
        /// <returns></returns>
        public int DeleteMeasure(IEnumerable <string> list, string CompanyID)
        {
            string        Key    = string.Format(CacheKey.JOOSHOW_MEASURE_CACHE, CompanyID);
            MeasureEntity entity = new MeasureEntity();

            entity.Where("SN", ECondition.In, list.ToArray());
            entity.And(a => a.CompanyID == CompanyID);
            int line = this.Measure.Delete(entity);

            if (line > 0)
            {
                CacheHelper.Remove(Key);
            }
            return(line);
        }
Beispiel #20
0
        public async Task <int> AddMeasureAsync(MeasureModel measureModel)
        {
            MeasureEntity measureEntity = _mapper.Map <MeasureEntity>(measureModel);
            await _measureContext.Measures.AddAsync(measureEntity);

            await _measureContext.SaveChangesAsync();

            MeasureEntity measure = await _measureContext.Measures
                                    .FirstOrDefaultAsync(m => m.CardId == measureEntity.CardId &&
                                                         m.Date == measureEntity.Date &&
                                                         m.Status == measureEntity.Status &&
                                                         m.Weight == measureEntity.Weight);

            return(measure.Id);
        }
Beispiel #21
0
        /// <summary>
        /// 获得所有的计量单位
        /// </summary>
        /// <returns></returns>
        public List <MeasureEntity> GetList()
        {
            List <MeasureEntity> listResult = CacheHelper.Get(CacheKey.JOOSHOW_MEASURE_CACHE) as List <MeasureEntity>;

            if (!listResult.IsNullOrEmpty())
            {
                return(listResult);
            }
            MeasureEntity entity = new MeasureEntity();

            entity.IncludeAll();
            listResult = this.Measure.GetList(entity);
            if (!listResult.IsNullOrEmpty())
            {
                CacheHelper.Insert(CacheKey.JOOSHOW_MEASURE_CACHE, listResult);
            }
            return(listResult);
        }
Beispiel #22
0
        /// <summary>
        /// 获得所有的计量单位
        /// </summary>
        /// <returns></returns>
        public List <MeasureEntity> GetList()
        {
            string Key = string.Format(CacheKey.JOOSHOW_MEASURE_CACHE, this.CompanyID);
            List <MeasureEntity> listResult = CacheHelper.Get(Key) as List <MeasureEntity>;

            if (!listResult.IsNullOrEmpty())
            {
                return(listResult);
            }
            MeasureEntity entity = new MeasureEntity();

            entity.IncludeAll();
            entity.Where(a => a.CompanyID == this.CompanyID);
            listResult = this.Measure.GetList(entity);
            if (!listResult.IsNullOrEmpty())
            {
                CacheHelper.Insert(Key, listResult);
            }
            return(listResult);
        }
Beispiel #23
0
        public ActionResult GetMeasure()
        {
            string   name      = WebUtil.GetFormValue <string>("name", string.Empty);
            int      pageIndex = WebUtil.GetFormValue <int>("pageIndex", 1);
            int      pageSize  = WebUtil.GetFormValue <int>("pageSize", 10);
            PageInfo pageInfo  = new PageInfo()
            {
                PageIndex = 1, PageSize = pageSize
            };
            MeasureProvider provider = new MeasureProvider();
            MeasureEntity   entity   = new MeasureEntity();

            entity.MeasureName = name;
            List <MeasureEntity> listResult = provider.GetList(entity, ref pageInfo);

            listResult = listResult.IsNull() ? new List <MeasureEntity>() : listResult;
            string json = ConvertJson.ListToJson <MeasureEntity>(listResult);

            this.ReturnJson.AddProperty("List", json);
            this.ReturnJson.AddProperty("RowCount", pageInfo.RowCount);
            return(Content(this.ReturnJson.ToString()));
        }
Beispiel #24
0
        /// <summary>
        /// 查询某个产品的包装情况
        /// </summary>
        /// <param name="ProductNum"></param>
        /// <returns></returns>
        public List <MeasureRelEntity> GetMeasureRel(string ProductNum)
        {
            MeasureRelEntity entity = new MeasureRelEntity();

            entity.IncludeAll();
            entity.Where(item => item.CompanyID == this.CompanyID)
            .And(item => item.ProductNum == ProductNum);
            List <MeasureRelEntity> listResult = this.MeasureRel.GetList(entity);

            if (!listResult.IsNullOrEmpty())
            {
                foreach (MeasureRelEntity item in listResult)
                {
                    MeasureEntity measure = GetMeasure(item.MeasureSource);
                    item.SourceName = measure.IsNull() ? string.Empty : measure.MeasureName;

                    measure         = GetMeasure(item.MeasureTarget);
                    item.TargetName = measure.IsNull() ? string.Empty : measure.MeasureName;
                }
            }
            return(listResult);
        }
Beispiel #25
0
        public ActionResult Add()
        {
            string        SN     = WebUtil.GetQueryStringValue <string>("SN", string.Empty);
            MeasureEntity entity = null;
            ITopClient    client = new TopClientDefault();

            if (!SN.IsEmpty())
            {
                Dictionary <string, string> dic = new Dictionary <string, string>();
                dic.Add("CompanyID", CompanyID);
                dic.Add("SN", SN);

                string result = client.Execute(MeasureApiName.MeasureApiName_Single, dic);
                DataResult <MeasureEntity> dataResult = JsonConvert.DeserializeObject <DataResult <MeasureEntity> >(result);
                entity = dataResult.Result;
            }

            entity         = entity.IsNull() ? new MeasureEntity() : entity;
            ViewBag.Entity = entity;

            return(View());
        }
Beispiel #26
0
 public ActionResult Create(string Num, string Name)
 {
     if (Num.IsEmpty())
     {
         MeasureEntity entity = new MeasureEntity();
         entity.MeasureNum  = SequenceProvider.GetSequence(typeof(MeasureEntity));
         entity.MeasureName = Name;
         entity.SN          = SequenceProvider.GetSequence(typeof(MeasureEntity));
         MeasureProvider provider = new MeasureProvider();
         int             line     = provider.AddMeasure(entity);
         if (line > 0)
         {
             this.ReturnJson.AddProperty("Key", "1000");
             this.ReturnJson.AddProperty("Value", "添加成功");
         }
         else
         {
             this.ReturnJson.AddProperty("Key", "1001");
             this.ReturnJson.AddProperty("Value", "添加失败");
         }
     }
     else
     {
         MeasureProvider provider = new MeasureProvider();
         int             line     = provider.EditMeasure(Num, Name);
         if (line > 0)
         {
             this.ReturnJson.AddProperty("Key", "1000");
             this.ReturnJson.AddProperty("Value", "编辑成功");
         }
         else
         {
             this.ReturnJson.AddProperty("Key", "1001");
             this.ReturnJson.AddProperty("Value", "编辑失败");
         }
     }
     return(Content(this.ReturnJson.ToString()));
 }
        public void シナリオ()
        {
            // モックのデータを作成
            var entity = new MeasureEntity(
                1,
                Convert.ToDateTime("2020/05/26 22:00:00"),
                12.34f);

            // Moqセット
            var measureMock = new Mock <IMeasureRepository>();

            measureMock.Setup(x => x.GetLatest()).Returns(entity);

            var vm = new LatestViewModel(measureMock.Object);

            // エリアID
            // 計測日時
            // 計測値

            vm.Search();
            vm.AreaIdText.Is("001");
            vm.MeasureDateText.Is("2020/05/26 22:00:00");
            vm.MeasureValueText.Is("12.34℃");
        }
Beispiel #28
0
        //public MeasureListViewModelMeasure() : this(Factories.CreateSensorRepository())
        //{
        //}

        public MeasureListViewModelMeasure(MeasureEntity entity)
        {
            _entity = entity;
        }
Beispiel #29
0
 public MeasureListViewModelMeasure(MeasureEntity entity)
 {
     _entity = entity ?? throw new ArgumentNullException(nameof(entity));
 }
Beispiel #30
0
        public async Task <Result> UpdateRule(Rule rule)
        {
            RuleEntity newruleEntity      = _clinicalFactory.MappingToRuleEntity.DefaultContext.Mapper.Map <RuleEntity>(rule);
            RuleEntity originalRuleEntity = ClinicalDbService.RuleRepository.GetById(newruleEntity.RuleId);

            originalRuleEntity.Description = newruleEntity.Description;

            #region Update Segments ------------------------------------------------------------------------------------

            IEnumerable <int> originalSegmentsId = originalRuleEntity.Segments.Select(s => s.SegmentId);
            IEnumerable <int> editedSegmentsId   = newruleEntity.Segments.Select(s => s.SegmentId);

            IList <SegmentEntity> segmentToAdd    = new List <SegmentEntity>();
            IEnumerable <int>     segmentsIdToAdd = editedSegmentsId.Except(originalSegmentsId);
            foreach (int segmentId in segmentsIdToAdd)
            {
                SegmentEntity segment = ClinicalDbService.SegmentRepository.GetById(segmentId);
                if (!segmentToAdd.Contains(segment))
                {
                    segmentToAdd.Add(segment);
                }
            }

            segmentToAdd.ToList().ForEach(s => originalRuleEntity.Segments.Add(s));


            IList <SegmentEntity> segmentToRemove  = new List <SegmentEntity>();
            IEnumerable <int>     segmentsIdRemove = originalSegmentsId.Except(editedSegmentsId);

            foreach (int segmentId in segmentsIdRemove)
            {
                SegmentEntity segment = originalRuleEntity.Segments.FirstOrDefault(s => s.SegmentId == segmentId);
                if (!segmentToRemove.Contains(segment))
                {
                    segmentToRemove.Add(segment);
                }
            }

            segmentToRemove.ToList().ForEach(s => originalRuleEntity.Segments.Remove(s));
            #endregion

            #region Update Contracts -----------------------------------------------------------------------------------

            IEnumerable <int> originalContractsId = originalRuleEntity.Contracts.Select(c => c.ContractId);
            IEnumerable <int> editedContractsId   = newruleEntity.Contracts.Select(c => c.ContractId);

            IList <ContractEntity> contractToAdd    = new List <ContractEntity>();
            IEnumerable <int>      contractsIdToAdd = editedContractsId.Except(originalContractsId);
            foreach (int contractId in contractsIdToAdd)
            {
                ContractEntity contract = ClinicalDbService.ContractRepository.GetById(contractId);
                if (!contractToAdd.Contains(contract))
                {
                    contractToAdd.Add(contract);
                }
            }

            contractToAdd.ToList().ForEach(c => originalRuleEntity.Contracts.Add(c));

            IList <ContractEntity> contractToRemove  = new List <ContractEntity>();
            IEnumerable <int>      contractsIdRemove = originalContractsId.Except(editedContractsId);

            foreach (int contractId in contractsIdRemove)
            {
                ContractEntity contract = originalRuleEntity.Contracts.FirstOrDefault(s => s.ContractId == contractId);
                if (!contractToRemove.Contains(contract))
                {
                    contractToRemove.Add(contract);
                }
            }

            contractToRemove.ToList().ForEach(c => originalRuleEntity.Contracts.Remove(c));
            #endregion

            #region Update Pbp -----------------------------------------------------------------------------------------

            IEnumerable <int> originalPbpId = originalRuleEntity.Pbp.Select(c => c.PbpId);
            IEnumerable <int> editedPbpId   = newruleEntity.Pbp.Select(c => c.PbpId);

            IList <PbpEntity> pbpToAdd    = new List <PbpEntity>();
            IEnumerable <int> pbpsIdToAdd = editedPbpId.Except(originalPbpId);
            foreach (int pbpId in pbpsIdToAdd)
            {
                PbpEntity pbp = ClinicalDbService.PbpRepository.GetById(pbpId);
                if (!pbpToAdd.Contains(pbp))
                {
                    pbpToAdd.Add(pbp);
                }
            }

            pbpToAdd.ToList().ForEach(c => originalRuleEntity.Pbp.Add(c));

            IList <PbpEntity> pbpToRemove  = new List <PbpEntity>();
            IEnumerable <int> pbpsIdRemove = originalPbpId.Except(editedPbpId);

            foreach (int pbpId in pbpsIdRemove)
            {
                PbpEntity pbp = originalRuleEntity.Pbp.FirstOrDefault(s => s.PbpId == pbpId);
                if (!pbpToRemove.Contains(pbp))
                {
                    pbpToRemove.Add(pbp);
                }
            }

            pbpToRemove.ToList().ForEach(c => originalRuleEntity.Pbp.Remove(c));
            #endregion

            #region Update TIN -----------------------------------------------------------------------------------------

            IEnumerable <int> originalTinId = originalRuleEntity.Tin.Select(c => c.TinId);
            IEnumerable <int> editedTinId   = newruleEntity.Tin.Select(c => c.TinId);

            IList <TinEntity> tinToAdd    = new List <TinEntity>();
            IEnumerable <int> tinsIdToAdd = editedTinId.Except(originalTinId);
            foreach (int tinId in tinsIdToAdd)
            {
                TinEntity tin = ClinicalDbService.TinRepository.GetById(tinId);
                if (!tinToAdd.Contains(tin))
                {
                    tinToAdd.Add(tin);
                }
            }

            tinToAdd.ToList().ForEach(c => originalRuleEntity.Tin.Add(c));

            IList <TinEntity> tinToRemove  = new List <TinEntity>();
            IEnumerable <int> tinsIdRemove = originalTinId.Except(editedTinId);

            foreach (int tinId in tinsIdRemove)
            {
                TinEntity tin = originalRuleEntity.Tin.FirstOrDefault(s => s.TinId == tinId);
                if (!tinToRemove.Contains(tin))
                {
                    tinToRemove.Add(tin);
                }
            }

            tinToRemove.ToList().ForEach(c => originalRuleEntity.Tin.Remove(c));
            #endregion

            #region Update Measures ------------------------------------------------------------------------------------

            IEnumerable <int> originalMeasuresId = originalRuleEntity.Measures.Select(c => c.MeasureId);
            IEnumerable <int> editedMeasuresId   = newruleEntity.Measures.Select(c => c.MeasureId);

            IList <MeasureEntity> measuresToAdd   = new List <MeasureEntity>();
            IEnumerable <int>     measuresIdToAdd = editedMeasuresId.Except(originalMeasuresId);
            foreach (int measureId in measuresIdToAdd)
            {
                MeasureEntity measure = ClinicalDbService.MeasureRepository.GetById(measureId);
                if (!measuresToAdd.Contains(measure))
                {
                    measuresToAdd.Add(measure);
                }
            }

            measuresToAdd.ToList().ForEach(c => originalRuleEntity.Measures.Add(c));

            IList <MeasureEntity> measuresToRemove = new List <MeasureEntity>();
            IEnumerable <int>     measuresIdRemove = originalMeasuresId.Except(editedMeasuresId);

            foreach (int measureId in measuresIdRemove)
            {
                MeasureEntity measure = originalRuleEntity.Measures.FirstOrDefault(s => s.MeasureId == measureId);
                if (!measuresToRemove.Contains(measure))
                {
                    measuresToRemove.Add(measure);
                }
            }

            measuresToRemove.ToList().ForEach(c => originalRuleEntity.Measures.Remove(c));
            #endregion

            #region Update Applications --------------------------------------------------------------------------------

            IEnumerable <int> originalApplicationsId = originalRuleEntity.Applications.Select(c => c.ApplicationId);
            IEnumerable <int> editedApplicationsId   = newruleEntity.Applications.Select(c => c.ApplicationId);

            IList <ApplicationEntity> applicationsToAdd   = new List <ApplicationEntity>();
            IEnumerable <int>         applicationsIdToAdd = editedApplicationsId.Except(originalApplicationsId);
            foreach (int applicationId in applicationsIdToAdd)
            {
                ApplicationEntity application = ClinicalDbService.ApplicationRepository.GetById(applicationId);
                if (!applicationsToAdd.Contains(application))
                {
                    applicationsToAdd.Add(application);
                }
            }

            applicationsToAdd.ToList().ForEach(c => originalRuleEntity.Applications.Add(c));

            IList <ApplicationEntity> applicationsToRemove = new List <ApplicationEntity>();
            IEnumerable <int>         applicationsIdRemove = originalApplicationsId.Except(editedApplicationsId);

            foreach (int applicationId in applicationsIdRemove)
            {
                ApplicationEntity application = originalRuleEntity.Applications.FirstOrDefault(s => s.ApplicationId == applicationId);
                if (!applicationsToRemove.Contains(application))
                {
                    applicationsToRemove.Add(application);
                }
            }

            applicationsToRemove.ToList().ForEach(c => originalRuleEntity.Applications.Remove(c));
            #endregion

            ClinicalDbService.RuleRepository.Update(originalRuleEntity);

            await ClinicalDbService.SaveAsync();

            return(Result.New(originalRuleEntity));
        }