public void Before(Services.tmp.EntityOperation operation, EntityOperationContext context) { if (operation.IsEntity(Payment.ENTITY) && operation is EntityUpdate) { var update = operation as EntityUpdate; if (update.IsCreate()) { List<int> usersToAttach = new List<int>(); foreach (var attach in update.RelationUpdates.Where(ru => ru.Operation == Services.tmp.RelationOperation.Attach)) { var em = _domainService.Domain.Entities[attach.Entity]; var customerRel = em.Relations[em.Name, User.ENTITY, Payment.ROLE_CUSTOMER]; if (customerRel != null && customerRel.TypeFor(User.ENTITY) == RelationType.OneToMany) { var q = new EntityQuery2(User.ENTITY); q.WhereRelated(new RelationQuery(em.Name, customerRel.Role, attach.Id.Value)); var cust = _repository.Read(q); if (cust != null) usersToAttach.Add(cust.Id); } } foreach (var id in usersToAttach) { update.Attach(User.ENTITY, Payment.ROLE_CUSTOMER, id); } } } }
public void Before(Services.tmp.EntityOperation operation, EntityOperationContext context) { if (operation.IsEntity(NbuLibrary.Core.Domain.File.ENTITY) && operation is EntityUpdate) { var update = operation as EntityUpdate; if (update.IsCreate()) { var access = update.Attach(NbuLibrary.Core.Domain.User.ENTITY, Roles.Access, _securityService.CurrentUser.Id); access.Set("Type", FileAccessType.Owner); } else { var accessUpdates = update.GetMultipleRelationUpdates(User.ENTITY, Roles.Access); if (accessUpdates != null) foreach (var ac in accessUpdates) { if (ac.Operation == RelationOperation.Detach) continue; if (ac.ContainsProperty("Type") && ac.Get<FileAccessType>("Type") == FileAccessType.Token) ac.Set("Token", Guid.NewGuid());//TODO: token based file access } } } else if (operation.IsEntity(NbuLibrary.Core.Domain.File.ENTITY) && operation is EntityDelete) { var file = _fileService.GetFile(operation.Id.Value); context.Set<NbuLibrary.Core.Domain.File>(CTXKEY_FILEDELETION, file); } }
public InspectionResult Inspect(Services.tmp.EntityOperation operation) { if (operation.IsEntity(Payment.ENTITY) && operation is EntityUpdate) { var update = operation as EntityUpdate; if (update.IsCreate() && !update.ContainsProperty("Status")) return InspectionResult.Allow; //TODO-Finance: Everyone is allowed to create payments else if (_securityService.HasModulePermission(_securityService.CurrentUser, FinanceModule.Id, Permissions.Approve)) return InspectionResult.Allow; } return InspectionResult.None; }
public void After(Services.tmp.EntityOperation operation, EntityOperationContext context, EntityOperationResult result) { if (operation.IsEntity(NbuLibrary.Core.Domain.File.ENTITY) && operation is EntityDelete && result.Success) { var file = context.Get<NbuLibrary.Core.Domain.File>(CTXKEY_FILEDELETION); if (file != null) _fileService.DeleteFileContent(Guid.Parse(file.ContentPath)); } }