예제 #1
0
        public bool Update(InspectionCenter inspectionCenter, string requestBody)
        {
            ValidateInputPattern(inspectionCenter);

            // Check IF Inspection Center Already Present
            if (!IfNotExists(inspectionCenter))
            {
                throw new ServiceBaseException(_l[InspectionCenterConstants.NO_DATA_FOUND]);
            }

            // Dyanmic Custom Controls
            var centerCustomProperties = GetCustomProperties(requestBody, InspectionCenterConstants.InspectionCenterEntity);

            var dbInspectionCenterCoverage = GetCoverageByCenterID(inspectionCenter.Id);

            var centerCoverageList = CustomSchemaHelper <List <InspectionCenterCoverage> > .Deserialize(inspectionCenter.InspectionCenterCoverages);

            var roleEmailList = CustomSchemaHelper <List <RoleEmails> > .Deserialize(inspectionCenter.RoleEmails);

            IsOtherCoverageExists(inspectionCenter, centerCoverageList);

            if (roleEmailList.Select(x => x.Role).Distinct().Count() < roleEmailList.Count())
            {
                throw new ServiceBaseException(_l["Cannot repeat role inside inspection center:"], 1000);
            }
            using (TransactionScope scope = new TransactionScope())
            {
                inspectionCenter.LastModificationTime = DateTime.Now;
                _centerRepository.Update(inspectionCenter, centerCustomProperties);
                _messageQueueManager.SendUpdateCenter(_messagePublisherConfigSettings.CenterUpdatedExchange, new UpdatedCenter {
                    CenterId = inspectionCenter.Id
                });

                scope.Complete();
            }
            return(true);
        }