public async Task Update(string values, int id) { var role = _roleUnitOfWork.RoleRepository.GetById(id); var roleSubdomainVersions = _roleUnitOfWork.SubdomainVersionRoleRepository.GetAllRoleVersionsByRoleId(id); JsonConvert.PopulateObject(values, role); RoleBusinessModel roleBusinessModel = new RoleBusinessModel(); roleBusinessModel.SubdomainVersionRoleIds = new int[roleSubdomainVersions.Count()]; int i = 0; foreach (var roleSubdomainVersion in roleSubdomainVersions) { roleBusinessModel.SubdomainVersionRoleIds[i] = (int)roleSubdomainVersion.SubdomainVersionId; _roleUnitOfWork.SubdomainVersionRoleRepository.Remove(roleSubdomainVersion); i++; } JsonConvert.PopulateObject(values, roleBusinessModel); foreach (var latestRoleVersionId in roleBusinessModel.SubdomainVersionRoleIds) { var newSubdomainVersionRole = new SubdomainVersionRole(); newSubdomainVersionRole.SubdomainVersionId = latestRoleVersionId; newSubdomainVersionRole.Role = role; role.SubdomainVersionRoles.Add(newSubdomainVersionRole); } _roleUnitOfWork.Complete(); }
public void Add(string values) { RoleBusinessModel roleViewModel = new RoleBusinessModel(); JsonConvert.PopulateObject(values, roleViewModel); var newRole = _mapper.Map <Role>(roleViewModel); if (roleViewModel.SubdomainVersionRoleIds != null) { foreach (var SubdomainVersionId in roleViewModel.SubdomainVersionRoleIds) { SubdomainVersionRole subdomainVersionRole = new SubdomainVersionRole(); subdomainVersionRole.SubdomainVersionId = SubdomainVersionId; subdomainVersionRole.Role = newRole; newRole.SubdomainVersionRoles.Add(subdomainVersionRole); } } _roleUnitOfWork.RoleRepository.Add(newRole); _roleUnitOfWork.Complete(); }
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); }