public async Task <bool> LookForSourceChange(int id, string values) { var subdomainVersion = _subdomainUnitOfWork.SubdomainVersionRepository.GetById(id); SubdomainVersion updatedversionInstance = _mapper.Map <SubdomainVersion>(subdomainVersion); JsonConvert.PopulateObject(values, updatedversionInstance); if (subdomainVersion.SourceVersionId != null) { if (subdomainVersion.SourceVersionId != updatedversionInstance.SourceVersionId) { return(false); } } return(true); }
public void CloneSourceVersionToNewVersion(SubdomainVersion subdomainVersion) { var sourceId = (int)subdomainVersion.SourceVersionId; var sourceVersionCards = _drcUnitOfWork.DrcCardRepository.getAllCardsBySubdomainVersion(sourceId); IList <SourceNewDrcCardMap> sourceNewDrcCardMaps = new List <SourceNewDrcCardMap>(); foreach (var sourceVersionCard in sourceVersionCards) { SourceNewDrcCardMap sourceNewDrcCardMap = new SourceNewDrcCardMap(); sourceNewDrcCardMap.SourceCardId = sourceVersionCard.Id; DrcCard newDrcCard = new DrcCard(); newDrcCard = sourceVersionCard; newDrcCard.Id = 0; newDrcCard.SubdomainVersionId = 0; newDrcCard.SubdomainVersion = subdomainVersion; _drcUnitOfWork.DrcCardRepository.Add(newDrcCard); _drcUnitOfWork.Complete(); sourceNewDrcCardMap.NewCardId = newDrcCard.Id; sourceNewDrcCardMaps.Add(sourceNewDrcCardMap); } foreach (var sourceNewDrcCardMap in sourceNewDrcCardMaps) { var newDrcCard = _drcUnitOfWork.DrcCardRepository.GetById(sourceNewDrcCardMap.NewCardId); var sourceCardResponsibilities = _drcUnitOfWork.DrcCardResponsibilityRepository.GetDrcCardResponsibilitiesByDrcCardId( sourceNewDrcCardMap.SourceCardId); foreach (var sourceDrcCardResponsibility in sourceCardResponsibilities) { Responsibility newResponsibility = new Responsibility(); newResponsibility = _drcUnitOfWork.ResponsibilityRepository.GetByIdWithoutTracking(sourceDrcCardResponsibility .ResponsibilityId); var sourceResponsibilityCollaborations = _drcUnitOfWork.DrcCardResponsibilityRepository.GetResponsibilityCollaborationsByResponsibilityId(newResponsibility.Id); newResponsibility.Id = 0; _drcUnitOfWork.ResponsibilityRepository.Add(newResponsibility); DrcCardResponsibility newDrcCardResponsibility = new DrcCardResponsibility(); newDrcCardResponsibility.DrcCard = newDrcCard; newDrcCardResponsibility.Responsibility = newResponsibility; newDrcCardResponsibility.IsRelationCollaboration = false; _drcUnitOfWork.DrcCardResponsibilityRepository.Add(newDrcCardResponsibility); foreach (var sourceResponsibilityCollaboration in sourceResponsibilityCollaborations) { int newDrcCardId = sourceNewDrcCardMaps .Where(c => c.SourceCardId == sourceResponsibilityCollaboration.DrcCardId) .Select(c => c.NewCardId).Single(); DrcCardResponsibility newResponsibilityCollaboration = new DrcCardResponsibility(); newResponsibilityCollaboration.DrcCardId = newDrcCardId; newResponsibilityCollaboration.Responsibility = newResponsibility; newResponsibilityCollaboration.IsRelationCollaboration = sourceResponsibilityCollaboration.IsRelationCollaboration; _drcUnitOfWork.DrcCardResponsibilityRepository.Add(newResponsibilityCollaboration); _drcUnitOfWork.Complete(); } _drcUnitOfWork.Complete(); } var sourceCardFields = _drcUnitOfWork.DrcCardFieldRepository .GetDrcCardFieldsByDrcCardId(sourceNewDrcCardMap.SourceCardId); foreach (var sourceCardField in sourceCardFields) { Field newField = new Field(); newField = _drcUnitOfWork.FieldRepository.GetByIdWithoutTracking(sourceCardField.FieldId); var sourceFieldCollaboration = _drcUnitOfWork.DrcCardFieldRepository.GetFieldCollaborationByFieldId(newField.Id); newField.Id = 0; _drcUnitOfWork.FieldRepository.Add(newField); DrcCardField newDrcCardField = new DrcCardField(); newDrcCardField.DrcCard = newDrcCard; newDrcCardField.Field = newField; newDrcCardField.IsRelationCollaboration = false; _drcUnitOfWork.DrcCardFieldRepository.Add(newDrcCardField); if (sourceFieldCollaboration != null) { int newCollaborationDrcCardId = sourceNewDrcCardMaps .Where(c => c.SourceCardId == sourceFieldCollaboration.DrcCardId) .Select(c => c.NewCardId).Single(); DrcCardField newDrcCardFieldCollaboration = new DrcCardField(); newDrcCardFieldCollaboration.DrcCardId = newCollaborationDrcCardId; newDrcCardFieldCollaboration.Field = newField; newDrcCardFieldCollaboration.IsRelationCollaboration = true; _drcUnitOfWork.DrcCardFieldRepository.Add(newDrcCardFieldCollaboration); _drcUnitOfWork.Complete(); } _drcUnitOfWork.Complete(); } var sourceCardAuthorizations = _drcUnitOfWork.AuthorizationRepository.GetAuthorizationsByDrcCardId(sourceNewDrcCardMap.SourceCardId); foreach (var sourceCardAuthorization in sourceCardAuthorizations) { Authorization newAuthorization = new Authorization(); newAuthorization = _drcUnitOfWork.AuthorizationRepository.GetByIdWithoutTracking(sourceCardAuthorization.Id); var oldAuthorizationRoles = _drcUnitOfWork.AuthorizationRoleRepository.GetAuthorizationRolesByAuthorizationId(newAuthorization.Id); newAuthorization.Id = 0; newAuthorization.DrcCardId = 0; newAuthorization.DrcCard = newDrcCard; _drcUnitOfWork.AuthorizationRepository.Add(newAuthorization); foreach (var oldAuthorizationRole in oldAuthorizationRoles) { AuthorizationRole authorizationRole = new AuthorizationRole(); authorizationRole.AuthorizationId = newAuthorization.Id; authorizationRole.RoleId = oldAuthorizationRole.RoleId; _drcUnitOfWork.AuthorizationRoleRepository.Add(authorizationRole); _drcUnitOfWork.Complete(); } } _drcUnitOfWork.Complete(); } }