Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 public override IDocEntity SaveChanges(bool ignoreCache, DocConstantPermission permission)
 {
     UniqueKey = UniqueKey?.TrimAndPruneSpaces();
     return(base.SaveChanges(ignoreCache, permission));
 }
Ejemplo n.º 3
0
 public override IDocEntity SaveChanges(DocConstantPermission permission) => SaveChanges(false, DocConstantPermission.EDIT);
Ejemplo n.º 4
0
 public override IDocEntity SaveChanges(bool ignoreCache, DocConstantPermission permission)
 {
     return(base.SaveChanges(ignoreCache, permission));
 }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
 public override IDocEntity SaveChanges(bool ignoreCache, DocConstantPermission permission)
 {
     Name = Name?.TrimAndPruneSpaces();
     URI  = URI?.TrimAndPruneSpaces();
     return(base.SaveChanges(ignoreCache, permission));
 }
Ejemplo n.º 7
0
        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);
        }