Пример #1
0
        private void SaveRelations(IUnitOfWorkWritable unitOfWork, VmConnectionsInput model)
        {
            var unificRootId = versioningManager.GetUnificRootId <ServiceVersioned>(unitOfWork, model.Id);

            if (unificRootId.HasValue)
            {
                model.UnificRootId = unificRootId.Value;
                TranslationManagerToEntity.Translate <VmConnectionsInput, Service>(model, unitOfWork);
            }
        }
Пример #2
0
        public OrganizationVersioned SaveOrganization(IUnitOfWorkWritable unitOfWork, VmOrganizationInput model)
        {
            var organizationRep = unitOfWork.CreateRepository <IOrganizationVersionedRepository>();
            var unificRootId    = versionManager.GetUnificRootId <OrganizationVersioned>(unitOfWork, model.Id);

            if (unificRootId.HasValue && IsCyclicDependency(unitOfWork, unificRootId.Value, model.ParentId))
            {
                throw new OrganizationCyclicDependencyException();
            }
            if (!string.IsNullOrEmpty(model.OrganizationId) && organizationRep.All().Any(x => (x.UnificRootId != unificRootId) && (x.Oid == model.OrganizationId)))
            {
                throw new PtvArgumentException("", model.OrganizationId);
            }

            if (typesCache.Get <OrganizationType>(OrganizationTypeEnum.TT1.ToString()) == model.OrganizationType ||
                typesCache.Get <OrganizationType>(OrganizationTypeEnum.TT2.ToString()) == model.OrganizationType)
            {
                if (organizationRep.All().Single(x => x.Id == model.Id).TypeId != model.OrganizationType)
                {
                    throw new PtvServiceArgumentException("Organization type is not allowed!", new List <string> {
                        typesCache.GetByValue <OrganizationType>(model.OrganizationType.Value)
                    });
                }
            }
            var entity = TranslationManagerToEntity.Translate <VmOrganizationInput, OrganizationVersioned>(model, unitOfWork);

            unitOfWork.Save();


            return(entity);
        }
Пример #3
0
        internal IVmEntityBase CheckIsEntityEditable <T, T2>(Guid id, IUnitOfWork unitOfWork) where T : class, IEntityIdentifier, IVersionedVolume <T2> where T2 : IVersionedRoot
        {
            Guid?rootId = null;

            rootId = versioningManager.GetUnificRootId <T>(unitOfWork, id);

            var result = new VmEntityEditableBase();

            if (rootId.HasValue && CheckEntityAccess <T, T2>(rootId.Value, id))
            {
                var lastModified  = versioningManager.GetLastModifiedVersion <T>(unitOfWork, rootId.Value);
                var lastPublished = versioningManager.GetLastPublishedVersion <T>(unitOfWork, rootId.Value);
                result = new VmEntityEditableBase
                {
                    Id                      = id,
                    LastModifiedId          = lastModified?.EntityId,
                    ModifiedOfLastModified  = lastModified?.Modified,
                    LastPublishedId         = lastPublished?.EntityId,
                    ModifiedOfLastPublished = lastPublished?.Modified,
                    IsEditable              = versioningManager.IsAllowedForEditing <T>(unitOfWork, id)
                };
                return(result);
            }
            return(null);
        }