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