private Help _AssignValues(Help request, DocConstantPermission permission, Session session) { if (permission != DocConstantPermission.ADD && (request == null || request.Id <= 0)) { throw new HttpError(HttpStatusCode.NotFound, $"No record"); } if (permission == DocConstantPermission.ADD && !DocPermissionFactory.HasPermissionTryAdd(currentUser, "Help")) { throw new HttpError(HttpStatusCode.Forbidden, "You do not have ADD permission for this route."); } request.Select = request.Select ?? new List <string>(); Help ret = null; request = _InitAssignValues <Help>(request, permission, session); //In case init assign handles create for us, return it if (permission == DocConstantPermission.ADD && request.Id > 0) { return(request); } var cacheKey = GetApiCacheKey <Help>(DocConstantModelName.HELP, nameof(Help), request); //First, assign all the variables, do database lookups and conversions var pConfluenceId = request.ConfluenceId; var pDescription = request.Description; var pIcon = request.Icon; var pOrder = request.Order; var pPages = GetVariable <Reference>(request, nameof(request.Pages), request.Pages?.ToList(), request.PagesIds?.ToList()); var pScopes = GetVariable <Reference>(request, nameof(request.Scopes), request.Scopes?.ToList(), request.ScopesIds?.ToList()); var pTitle = request.Title; DocEntityLookupTable pType = GetLookup(DocConstantLookupTable.HELP, request.Type?.Name, request.Type?.Id); var pArchived = true == request.Archived; var pLocked = request.Locked; var entity = InitEntity <DocEntityHelp, Help>(request, permission, session); if (AllowPatchValue <Help, bool>(request, DocConstantModelName.HELP, pArchived, permission, nameof(request.Archived), pArchived != entity.Archived)) { entity.Archived = pArchived; } if (AllowPatchValue <Help, string>(request, DocConstantModelName.HELP, pConfluenceId, permission, nameof(request.ConfluenceId), pConfluenceId != entity.ConfluenceId)) { entity.ConfluenceId = pConfluenceId; } if (AllowPatchValue <Help, string>(request, DocConstantModelName.HELP, pDescription, permission, nameof(request.Description), pDescription != entity.Description)) { entity.Description = pDescription; } if (AllowPatchValue <Help, string>(request, DocConstantModelName.HELP, pIcon, permission, nameof(request.Icon), pIcon != entity.Icon)) { entity.Icon = pIcon; } if (AllowPatchValue <Help, int?>(request, DocConstantModelName.HELP, pOrder, permission, nameof(request.Order), pOrder != entity.Order)) { entity.Order = pOrder; } if (AllowPatchValue <Help, string>(request, DocConstantModelName.HELP, pTitle, permission, nameof(request.Title), pTitle != entity.Title)) { entity.Title = pTitle; } if (AllowPatchValue <Help, DocEntityLookupTable>(request, DocConstantModelName.HELP, pType, permission, nameof(request.Type), pType != entity.Type)) { entity.Type = pType; } if (request.Locked && AllowPatchValue <Help, bool>(request, DocConstantModelName.HELP, pArchived, permission, nameof(request.Locked), pLocked != entity.Locked)) { entity.Archived = pArchived; } entity.SaveChanges(permission); var idsToInvalidate = new List <int>(); idsToInvalidate.AddRange(PatchCollection <Help, DocEntityHelp, Reference, DocEntityPage>(request, entity, pPages, permission, nameof(request.Pages))); idsToInvalidate.AddRange(PatchCollection <Help, DocEntityHelp, Reference, DocEntityScope>(request, entity, pScopes, permission, nameof(request.Scopes))); if (idsToInvalidate.Any()) { idsToInvalidate.Add(entity.Id); DocCacheClient.RemoveByEntityIds(idsToInvalidate); DocCacheClient.RemoveSearch(DocConstantModelName.HELP); } entity.SaveChanges(permission); DocPermissionFactory.SetSelect <Help>(currentUser, nameof(Help), request.Select); ret = entity.ToDto(); var cacheExpires = DocResources.Metadata.GetCacheExpiration(DocConstantModelName.HELP); DocCacheClient.Set(key: cacheKey, value: ret, entityId: request.Id, entityType: DocConstantModelName.HELP, cacheExpires); return(ret); }
public override IDocEntity SaveChanges(bool ignoreCache, DocConstantPermission permission) { UniqueKey = UniqueKey?.TrimAndPruneSpaces(); return(base.SaveChanges(ignoreCache, permission)); }
public override IDocEntity SaveChanges(DocConstantPermission permission) => SaveChanges(false, DocConstantPermission.EDIT);
public override IDocEntity SaveChanges(bool ignoreCache, DocConstantPermission permission) { return(base.SaveChanges(ignoreCache, permission)); }
private Comment _AssignValues(Comment request, DocConstantPermission permission, Session session) { if (permission != DocConstantPermission.ADD && (request == null || request.Id <= 0)) { throw new HttpError(HttpStatusCode.NotFound, $"No record"); } if (permission == DocConstantPermission.ADD && !DocPermissionFactory.HasPermissionTryAdd(currentUser, "Comment")) { throw new HttpError(HttpStatusCode.Forbidden, "You do not have ADD permission for this route."); } request.Select = request.Select ?? new List <string>(); Comment ret = null; request = _InitAssignValues <Comment>(request, permission, session); //In case init assign handles create for us, return it if (permission == DocConstantPermission.ADD && request.Id > 0) { return(request); } var cacheKey = GetApiCacheKey <Comment>(DocConstantModelName.COMMENT, nameof(Comment), request); //First, assign all the variables, do database lookups and conversions var pScopes = GetVariable <Reference>(request, nameof(request.Scopes), request.Scopes?.ToList(), request.ScopesIds?.ToList()); var pText = request.Text; var pUser = DocEntityUser.Get(request.User?.Id, true, Execute) ?? DocEntityUser.Get(request.UserId, true, Execute); var pOwner = DocEntityBase.Get(request.Owner?.Id, true, Execute) ?? DocEntityBase.Get(request.OwnerId, true, Execute); var pArchived = true == request.Archived; var pLocked = request.Locked; var entity = InitEntity <DocEntityComment, Comment>(request, permission, session); if (AllowPatchValue <Comment, bool>(request, DocConstantModelName.COMMENT, pArchived, permission, nameof(request.Archived), pArchived != entity.Archived)) { entity.Archived = pArchived; } if (AllowPatchValue <Comment, string>(request, DocConstantModelName.COMMENT, pText, permission, nameof(request.Text), pText != entity.Text)) { entity.Text = pText; } if (AllowPatchValue <Comment, DocEntityUser>(request, DocConstantModelName.COMMENT, pUser, permission, nameof(request.User), pUser != entity.User)) { entity.User = pUser; } if (AllowPatchValue <Comment, DocEntityBase>(request, DocConstantModelName.COMMENT, pOwner, permission, nameof(request.Owner), pOwner != entity.Owner)) { entity.Owner = pOwner; } if (request.Locked && AllowPatchValue <Comment, bool>(request, DocConstantModelName.COMMENT, pArchived, permission, nameof(request.Locked), pLocked != entity.Locked)) { entity.Archived = pArchived; } entity.SaveChanges(permission); var idsToInvalidate = new List <int>(); idsToInvalidate.AddRange(PatchCollection <Comment, DocEntityComment, Reference, DocEntityScope>(request, entity, pScopes, permission, nameof(request.Scopes))); if (idsToInvalidate.Any()) { idsToInvalidate.Add(entity.Id); DocCacheClient.RemoveByEntityIds(idsToInvalidate); DocCacheClient.RemoveSearch(DocConstantModelName.COMMENT); } entity.SaveChanges(permission); DocPermissionFactory.SetSelect <Comment>(currentUser, nameof(Comment), request.Select); ret = entity.ToDto(); var cacheExpires = DocResources.Metadata.GetCacheExpiration(DocConstantModelName.COMMENT); DocCacheClient.Set(key: cacheKey, value: ret, entityId: request.Id, entityType: DocConstantModelName.COMMENT, cacheExpires); return(ret); }
public override IDocEntity SaveChanges(bool ignoreCache, DocConstantPermission permission) { Name = Name?.TrimAndPruneSpaces(); URI = URI?.TrimAndPruneSpaces(); return(base.SaveChanges(ignoreCache, permission)); }
private ReconcileDocument _AssignValues(ReconcileDocument request, DocConstantPermission permission, Session session) { if (permission != DocConstantPermission.ADD && (request == null || request.Id <= 0)) { throw new HttpError(HttpStatusCode.NotFound, $"No record"); } if (permission == DocConstantPermission.ADD && !DocPermissionFactory.HasPermissionTryAdd(currentUser, "ReconcileDocument")) { throw new HttpError(HttpStatusCode.Forbidden, "You do not have ADD permission for this route."); } request.Select = request.Select ?? new List <string>(); ReconcileDocument ret = null; request = _InitAssignValues <ReconcileDocument>(request, permission, session); //In case init assign handles create for us, return it if (permission == DocConstantPermission.ADD && request.Id > 0) { return(request); } var cacheKey = GetApiCacheKey <ReconcileDocument>(DocConstantModelName.RECONCILEDOCUMENT, nameof(ReconcileDocument), request); //First, assign all the variables, do database lookups and conversions var pArticleId = request.ArticleId; var pArticleLink = request.ArticleLink; var pAssignee = DocEntityUser.Get(request.Assignee?.Id, true, Execute) ?? DocEntityUser.Get(request.AssigneeId, true, Execute); var pData = request.Data; var pDescription = request.Description; var pDocument = DocEntityDocument.Get(request.Document?.Id, true, Execute) ?? DocEntityDocument.Get(request.DocumentId, true, Execute); var pDueDate = request.DueDate; var pMatches = request.Matches; var pReporter = DocEntityUser.Get(request.Reporter?.Id, true, Execute) ?? DocEntityUser.Get(request.ReporterId, true, Execute); var pSearchLink = request.SearchLink; var pStatus = request.Status; var pType = request.Type; var pWorkflow = DocEntityWorkflow.Get(request.Workflow?.Id, true, Execute) ?? DocEntityWorkflow.Get(request.WorkflowId, true, Execute); var pArchived = true == request.Archived; var pLocked = request.Locked; var entity = InitEntity <DocEntityReconcileDocument, ReconcileDocument>(request, permission, session); if (AllowPatchValue <ReconcileDocument, bool>(request, DocConstantModelName.RECONCILEDOCUMENT, pArchived, permission, nameof(request.Archived), pArchived != entity.Archived)) { entity.Archived = pArchived; } if (AllowPatchValue <ReconcileDocument, string>(request, DocConstantModelName.RECONCILEDOCUMENT, pArticleId, permission, nameof(request.ArticleId), pArticleId != entity.ArticleId)) { entity.ArticleId = pArticleId; } if (AllowPatchValue <ReconcileDocument, string>(request, DocConstantModelName.RECONCILEDOCUMENT, pArticleLink, permission, nameof(request.ArticleLink), pArticleLink != entity.ArticleLink)) { entity.ArticleLink = pArticleLink; } if (AllowPatchValue <ReconcileDocument, DocEntityUser>(request, DocConstantModelName.RECONCILEDOCUMENT, pAssignee, permission, nameof(request.Assignee), pAssignee != entity.Assignee)) { entity.Assignee = pAssignee; } if (AllowPatchValue <ReconcileDocument, string>(request, DocConstantModelName.RECONCILEDOCUMENT, pData, permission, nameof(request.Data), pData != entity.Data)) { entity.Data = pData; } if (AllowPatchValue <ReconcileDocument, string>(request, DocConstantModelName.RECONCILEDOCUMENT, pDescription, permission, nameof(request.Description), pDescription != entity.Description)) { entity.Description = pDescription; } if (AllowPatchValue <ReconcileDocument, DocEntityDocument>(request, DocConstantModelName.RECONCILEDOCUMENT, pDocument, permission, nameof(request.Document), pDocument != entity.Document)) { entity.Document = pDocument; } if (AllowPatchValue <ReconcileDocument, DateTime?>(request, DocConstantModelName.RECONCILEDOCUMENT, pDueDate, permission, nameof(request.DueDate), pDueDate != entity.DueDate)) { entity.DueDate = pDueDate; } if (AllowPatchValue <ReconcileDocument, int?>(request, DocConstantModelName.RECONCILEDOCUMENT, pMatches, permission, nameof(request.Matches), pMatches != entity.Matches)) { if (null != pMatches) { entity.Matches = (int)pMatches; } } if (AllowPatchValue <ReconcileDocument, DocEntityUser>(request, DocConstantModelName.RECONCILEDOCUMENT, pReporter, permission, nameof(request.Reporter), pReporter != entity.Reporter)) { entity.Reporter = pReporter; } if (AllowPatchValue <ReconcileDocument, string>(request, DocConstantModelName.RECONCILEDOCUMENT, pSearchLink, permission, nameof(request.SearchLink), pSearchLink != entity.SearchLink)) { entity.SearchLink = pSearchLink; } if (AllowPatchValue <ReconcileDocument, ReconciliationStatusEnm?>(request, DocConstantModelName.RECONCILEDOCUMENT, pStatus, permission, nameof(request.Status), pStatus != entity.Status)) { if (null != pStatus) { entity.Status = pStatus.Value; } } if (AllowPatchValue <ReconcileDocument, TaskTypeEnm?>(request, DocConstantModelName.RECONCILEDOCUMENT, pType, permission, nameof(request.Type), pType != entity.Type)) { if (null != pType) { entity.Type = pType.Value; } } if (AllowPatchValue <ReconcileDocument, DocEntityWorkflow>(request, DocConstantModelName.RECONCILEDOCUMENT, pWorkflow, permission, nameof(request.Workflow), pWorkflow != entity.Workflow)) { entity.Workflow = pWorkflow; } if (request.Locked && AllowPatchValue <ReconcileDocument, bool>(request, DocConstantModelName.RECONCILEDOCUMENT, pArchived, permission, nameof(request.Locked), pLocked != entity.Locked)) { entity.Archived = pArchived; } entity.SaveChanges(permission); var idsToInvalidate = new List <int>(); if (idsToInvalidate.Any()) { idsToInvalidate.Add(entity.Id); DocCacheClient.RemoveByEntityIds(idsToInvalidate); DocCacheClient.RemoveSearch(DocConstantModelName.RECONCILEDOCUMENT); } entity.SaveChanges(permission); DocPermissionFactory.SetSelect <ReconcileDocument>(currentUser, nameof(ReconcileDocument), request.Select); ret = entity.ToDto(); var cacheExpires = DocResources.Metadata.GetCacheExpiration(DocConstantModelName.RECONCILEDOCUMENT); DocCacheClient.Set(key: cacheKey, value: ret, entityId: request.Id, entityType: DocConstantModelName.RECONCILEDOCUMENT, cacheExpires); return(ret); }