Exemplo n.º 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);
        }
Exemplo n.º 2
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);
        }