예제 #1
0
        public async Task <bool> Update(string values, int id)
        {
            var subdomainVersion    = _subdomainUnitOfWork.SubdomainVersionRepository.GetById(id);
            var subdomainReferences = await _subdomainUnitOfWork.SubdomainVersionReferenceRepository.getAllVersionReferences(id);

            JsonConvert.PopulateObject(values, subdomainVersion);


            SubdomainVersionBusinessModel subdomainVersionBusinessModel = new SubdomainVersionBusinessModel();

            subdomainVersionBusinessModel.ReferencedVersionIds = new int[subdomainReferences.Count];
            int i = 0;

            foreach (var reference in subdomainReferences)
            {
                subdomainVersionBusinessModel.ReferencedVersionIds[i] = reference.ReferencedVersionId;
                _subdomainUnitOfWork.SubdomainVersionReferenceRepository.Remove(reference);
                i++;
            }

            JsonConvert.PopulateObject(values, subdomainVersionBusinessModel);

            foreach (var latestRefId in subdomainVersionBusinessModel.ReferencedVersionIds)
            {
                var newReference = new SubdomainVersionReference();
                newReference.ReferencedVersionId = latestRefId;
                newReference.SubdomainVersion    = subdomainVersion;
                subdomainVersion.ReferencedSubdomainVersions.Add(newReference);
            }
            _subdomainUnitOfWork.Complete();

            return(true);
        }
예제 #2
0
        public async Task <string> CheckDeletedReferenceUse(int key, string values)
        {
            SubdomainVersionBusinessModel subdomainVersionBusinessModel = new SubdomainVersionBusinessModel();

            var subdomainReferences = await _subdomainUnitOfWork.SubdomainVersionReferenceRepository.getAllVersionReferences(key);

            JsonConvert.PopulateObject(values, subdomainVersionBusinessModel);

            List <int> oldReferences = new List <int>();

            foreach (var reference in subdomainReferences)
            {
                oldReferences.Add(reference.ReferencedVersionId);
            }

            //these are the references that user want to delete
            List <int> deletedReferences = new List <int>();

            foreach (var oldRef in oldReferences)
            {
                if (!subdomainVersionBusinessModel.ReferencedVersionIds.Contains(oldRef))
                {
                    deletedReferences.Add(oldRef);
                }
            }

            List <DrcCard> documentsThatHasRelations = new List <DrcCard>();

            var versionShadowDocuments = _drcUnitOfWork.DrcCardRepository.getAllShadowCardsBySubdomainVersion(key);

            foreach (var shadowDocument in versionShadowDocuments)
            {
                var sourceDocument = _drcUnitOfWork.DrcCardRepository.GetById((int)shadowDocument.MainCardId);

                if (sourceDocument != null && deletedReferences.Contains(sourceDocument.SubdomainVersionId))
                {
                    documentsThatHasRelations.Add(sourceDocument);
                }
            }
            _subdomainUnitOfWork.Complete();

            if (documentsThatHasRelations.Count > 0)
            {
                int    count   = 1;
                string message = "You can not delete fallowing references Because you have used same documents from that referenced versions:" + Environment.NewLine;
                foreach (var document in documentsThatHasRelations)
                {
                    var version       = _drcUnitOfWork.SubdomainVersionRepository.GetById(document.SubdomainVersionId);
                    var subdomainName = _drcUnitOfWork.SubdomainRepository.GetSubdomainName(version.SubdomainId);
                    message += count + ") " + subdomainName + "> " + version.VersionNumber + "> " + document.DrcCardName + Environment.NewLine;
                    count++;
                }

                return(message);
            }
            else
            {
                return(null);
            }
        }
예제 #3
0
        public async Task <bool> Add(string values)
        {
            var newSubdomainVersionBModel = new SubdomainVersionBusinessModel();

            JsonConvert.PopulateObject(values, newSubdomainVersionBModel);

            var subdomainVersionModel = _mapper.Map <SubdomainVersion>(newSubdomainVersionBModel);

            if (subdomainVersionModel.SourceVersionId != null)
            {
                var sourceId = (int)subdomainVersionModel.SourceVersionId;
                var sourceSubdomainVersion =
                    _subdomainUnitOfWork.SubdomainVersionRepository.GetVersionWithReferencesById(sourceId);
                if (sourceSubdomainVersion.EditLock)
                {
                    return(false);
                }
                else
                {
                    sourceSubdomainVersion.EditLock = true;

                    if (subdomainVersionModel.DexmoVersion == null)
                    {
                        if (sourceSubdomainVersion.DexmoVersion != null)
                        {
                            subdomainVersionModel.DexmoVersion = sourceSubdomainVersion.DexmoVersion;
                        }
                    }

                    foreach (var sourceReference in sourceSubdomainVersion.ReferencedSubdomainVersions)
                    {
                        var newReference = new SubdomainVersionReference();
                        newReference.SubdomainVersion    = subdomainVersionModel;
                        newReference.ReferencedVersionId = sourceReference.ReferencedVersionId;
                        subdomainVersionModel.ReferencedSubdomainVersions.Add(newReference);
                    }

                    var sourceSubdomainVersionRoles = _subdomainUnitOfWork.SubdomainVersionRoleRepository.GetAllVersionRolesBySubdomainVersionId(sourceId);

                    foreach (var sourceSubVersionRole in sourceSubdomainVersionRoles)
                    {
                        var newSubdomainVersionRole = new SubdomainVersionRole();
                        newSubdomainVersionRole.SubdomainVersion = subdomainVersionModel;
                        newSubdomainVersionRole.RoleId           = sourceSubVersionRole.RoleId;
                        _subdomainUnitOfWork.SubdomainVersionRoleRepository.Add(newSubdomainVersionRole);
                    }
                }
            }

            if (newSubdomainVersionBModel.ReferencedVersionIds != null)
            {
                foreach (var referenceId in newSubdomainVersionBModel.ReferencedVersionIds)
                {
                    var newReference = new SubdomainVersionReference();
                    newReference.SubdomainVersion    = subdomainVersionModel;
                    newReference.ReferencedVersionId = referenceId;
                    subdomainVersionModel.ReferencedSubdomainVersions.Add(newReference);
                }
            }


            _subdomainUnitOfWork.SubdomainVersionRepository.Add(subdomainVersionModel);
            _subdomainUnitOfWork.Complete();

            if (subdomainVersionModel.SourceVersionId != null)
            {
                CloneSourceVersionToNewVersion(subdomainVersionModel);
            }

            return(true);
        }