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); }
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); } }
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); }