Beispiel #1
0
        private Favorite _AssignValues(Favorite 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, "Favorite"))
            {
                throw new HttpError(HttpStatusCode.Forbidden, "You do not have ADD permission for this route.");
            }

            request.Select = request.Select ?? new List <string>();

            Favorite ret = null;

            request = _InitAssignValues <Favorite>(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 <Favorite>(DocConstantModelName.FAVORITE, nameof(Favorite), request);

            //First, assign all the variables, do database lookups and conversions
            var pScope    = DocEntityScope.Get(request.Scope?.Id, true, Execute) ?? DocEntityScope.Get(request.ScopeId, 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 <DocEntityFavorite, Favorite>(request, permission, session);

            if (AllowPatchValue <Favorite, bool>(request, DocConstantModelName.FAVORITE, pArchived, permission, nameof(request.Archived), pArchived != entity.Archived))
            {
                entity.Archived = pArchived;
            }
            if (AllowPatchValue <Favorite, DocEntityScope>(request, DocConstantModelName.FAVORITE, pScope, permission, nameof(request.Scope), pScope != entity.Scope))
            {
                entity.Scope = pScope;
            }
            if (AllowPatchValue <Favorite, DocEntityBase>(request, DocConstantModelName.FAVORITE, pOwner, permission, nameof(request.Owner), pOwner != entity.Owner))
            {
                entity.Owner = pOwner;
            }
            if (request.Locked && AllowPatchValue <Favorite, bool>(request, DocConstantModelName.FAVORITE, 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.FAVORITE);
            }

            entity.SaveChanges(permission);
            DocPermissionFactory.SetSelect <Favorite>(currentUser, nameof(Favorite), request.Select);
            ret = entity.ToDto();

            var cacheExpires = DocResources.Metadata.GetCacheExpiration(DocConstantModelName.FAVORITE);

            DocCacheClient.Set(key: cacheKey, value: ret, entityId: request.Id, entityType: DocConstantModelName.FAVORITE, cacheExpires);

            return(ret);
        }
Beispiel #2
0
        public static TDto ToDto <TEntity, TDto>(DocEntityBase entity)
            where TEntity : DocEntityBase, new()
            where TDto : class, IDto, new()
        {
            TDto ret = null;

            switch (typeof(TDto).Name)
            {
            case DocConstantModelName.ADJUDICATEDRATING:
                var enAdjudicatedRating = entity as DocEntityAdjudicatedRating;
                ret = enAdjudicatedRating.ToDto() as TDto;
                break;

            case DocConstantModelName.APP:
                var enApp = entity as DocEntityApp;
                ret = enApp.ToDto() as TDto;
                break;

            case DocConstantModelName.ATTRIBUTE:
                var enAttribute = entity as DocEntityAttribute;
                ret = enAttribute.ToDto() as TDto;
                break;

            case DocConstantModelName.ATTRIBUTEINTERVAL:
                var enAttributeInterval = entity as DocEntityAttributeInterval;
                ret = enAttributeInterval.ToDto() as TDto;
                break;

            case DocConstantModelName.AUDITDELTA:
                var enAuditDelta = entity as DocEntityAuditDelta;
                ret = enAuditDelta.ToDto() as TDto;
                break;

            case DocConstantModelName.AUDITRECORD:
                var enAuditRecord = entity as DocEntityAuditRecord;
                ret = enAuditRecord.ToDto() as TDto;
                break;

            case DocConstantModelName.BACKGROUNDTASK:
                var enBackgroundTask = entity as DocEntityBackgroundTask;
                ret = enBackgroundTask.ToDto() as TDto;
                break;

            case DocConstantModelName.BACKGROUNDTASKHISTORY:
                var enBackgroundTaskHistory = entity as DocEntityBackgroundTaskHistory;
                ret = enBackgroundTaskHistory.ToDto() as TDto;
                break;

            case DocConstantModelName.BACKGROUNDTASKITEM:
                var enBackgroundTaskItem = entity as DocEntityBackgroundTaskItem;
                ret = enBackgroundTaskItem.ToDto() as TDto;
                break;

            case DocConstantModelName.BROADCAST:
                var enBroadcast = entity as DocEntityBroadcast;
                ret = enBroadcast.ToDto() as TDto;
                break;

            case DocConstantModelName.CLIENT:
                var enClient = entity as DocEntityClient;
                ret = enClient.ToDto() as TDto;
                break;

            case DocConstantModelName.COMMENT:
                var enComment = entity as DocEntityComment;
                ret = enComment.ToDto() as TDto;
                break;

            case DocConstantModelName.DATABASEVERSION:
                var enDatabaseVersion = entity as DocEntityDatabaseVersion;
                ret = enDatabaseVersion.ToDto() as TDto;
                break;

            case DocConstantModelName.DATACLASS:
                var enDataClass = entity as DocEntityDataClass;
                ret = enDataClass.ToDto() as TDto;
                break;

            case DocConstantModelName.DATAPROPERTY:
                var enDataProperty = entity as DocEntityDataProperty;
                ret = enDataProperty.ToDto() as TDto;
                break;

            case DocConstantModelName.DATASET:
                var enDataSet = entity as DocEntityDataSet;
                ret = enDataSet.ToDto() as TDto;
                break;

            case DocConstantModelName.DATATAB:
                var enDataTab = entity as DocEntityDataTab;
                ret = enDataTab.ToDto() as TDto;
                break;

            case DocConstantModelName.DATETIME:
                var enDateTime = entity as DocEntityDateTime;
                ret = enDateTime.ToDto() as TDto;
                break;

            case DocConstantModelName.DEFAULT:
                var enDefault = entity as DocEntityDefault;
                ret = enDefault.ToDto() as TDto;
                break;

            case DocConstantModelName.DISEASESTATESET:
                var enDiseaseStateSet = entity as DocEntityDiseaseStateSet;
                ret = enDiseaseStateSet.ToDto() as TDto;
                break;

            case DocConstantModelName.DIVISION:
                var enDivision = entity as DocEntityDivision;
                ret = enDivision.ToDto() as TDto;
                break;

            case DocConstantModelName.DOCUMENT:
                var enDocument = entity as DocEntityDocument;
                ret = enDocument.ToDto() as TDto;
                break;

            case DocConstantModelName.DOCUMENTSET:
                var enDocumentSet = entity as DocEntityDocumentSet;
                ret = enDocumentSet.ToDto() as TDto;
                break;

            case DocConstantModelName.DOCUMENTSETHISTORY:
                var enDocumentSetHistory = entity as DocEntityDocumentSetHistory;
                ret = enDocumentSetHistory.ToDto() as TDto;
                break;

            case DocConstantModelName.EOD:
                var enEoD = entity as DocEntityEoD;
                ret = enEoD.ToDto() as TDto;
                break;

            case DocConstantModelName.EVENT:
                var enEvent = entity as DocEntityEvent;
                ret = enEvent.ToDto() as TDto;
                break;

            case DocConstantModelName.FAVORITE:
                var enFavorite = entity as DocEntityFavorite;
                ret = enFavorite.ToDto() as TDto;
                break;

            case DocConstantModelName.FEATURESET:
                var enFeatureSet = entity as DocEntityFeatureSet;
                ret = enFeatureSet.ToDto() as TDto;
                break;

            case DocConstantModelName.FILE:
                var enFile = entity as DocEntityFile;
                ret = enFile.ToDto() as TDto;
                break;

            case DocConstantModelName.GLOSSARY:
                var enGlossary = entity as DocEntityGlossary;
                ret = enGlossary.ToDto() as TDto;
                break;

            case DocConstantModelName.HELP:
                var enHelp = entity as DocEntityHelp;
                ret = enHelp.ToDto() as TDto;
                break;

            case DocConstantModelName.HISTORY:
                var enHistory = entity as DocEntityHistory;
                ret = enHistory.ToDto() as TDto;
                break;

            case DocConstantModelName.IMPERSONATION:
                var enImpersonation = entity as DocEntityImpersonation;
                ret = enImpersonation.ToDto() as TDto;
                break;

            case DocConstantModelName.IMPORTDATA:
                var enImportData = entity as DocEntityImportData;
                ret = enImportData.ToDto() as TDto;
                break;

            case DocConstantModelName.INTERVAL:
                var enInterval = entity as DocEntityInterval;
                ret = enInterval.ToDto() as TDto;
                break;

            case DocConstantModelName.JUNCTION:
                var enJunction = entity as DocEntityJunction;
                ret = enJunction.ToDto() as TDto;
                break;

            case DocConstantModelName.LIBRARYSET:
                var enLibrarySet = entity as DocEntityLibrarySet;
                ret = enLibrarySet.ToDto() as TDto;
                break;

            case DocConstantModelName.LOCALE:
                var enLocale = entity as DocEntityLocale;
                ret = enLocale.ToDto() as TDto;
                break;

            case DocConstantModelName.LOCALELOOKUP:
                var enLocaleLookup = entity as DocEntityLocaleLookup;
                ret = enLocaleLookup.ToDto() as TDto;
                break;

            case DocConstantModelName.LOOKUPCATEGORY:
                var enLookupCategory = entity as DocEntityLookupCategory;
                ret = enLookupCategory.ToDto() as TDto;
                break;

            case DocConstantModelName.LOOKUPTABLE:
                var enLookupTable = entity as DocEntityLookupTable;
                ret = enLookupTable.ToDto() as TDto;
                break;

            case DocConstantModelName.LOOKUPTABLEBINDING:
                var enLookupTableBinding = entity as DocEntityLookupTableBinding;
                ret = enLookupTableBinding.ToDto() as TDto;
                break;

            case DocConstantModelName.LOOKUPTABLEENUM:
                var enLookupTableEnum = entity as DocEntityLookupTableEnum;
                ret = enLookupTableEnum.ToDto() as TDto;
                break;

            case DocConstantModelName.MEANRANGES:
                var enMeanRanges = entity as DocEntityMeanRanges;
                ret = enMeanRanges.ToDto() as TDto;
                break;

            case DocConstantModelName.MEANRANGEVALUE:
                var enMeanRangeValue = entity as DocEntityMeanRangeValue;
                ret = enMeanRangeValue.ToDto() as TDto;
                break;

            case DocConstantModelName.MEANVARIANCES:
                var enMeanVariances = entity as DocEntityMeanVariances;
                ret = enMeanVariances.ToDto() as TDto;
                break;

            case DocConstantModelName.MEANVARIANCEVALUE:
                var enMeanVarianceValue = entity as DocEntityMeanVarianceValue;
                ret = enMeanVarianceValue.ToDto() as TDto;
                break;

            case DocConstantModelName.PAGE:
                var enPage = entity as DocEntityPage;
                ret = enPage.ToDto() as TDto;
                break;

            case DocConstantModelName.PROJECT:
                var enProject = entity as DocEntityProject;
                ret = enProject.ToDto() as TDto;
                break;

            case DocConstantModelName.QUEUECHANNEL:
                var enQueueChannel = entity as DocEntityQueueChannel;
                ret = enQueueChannel.ToDto() as TDto;
                break;

            case DocConstantModelName.RATING:
                var enRating = entity as DocEntityRating;
                ret = enRating.ToDto() as TDto;
                break;

            case DocConstantModelName.RECONCILEDOCUMENT:
                var enReconcileDocument = entity as DocEntityReconcileDocument;
                ret = enReconcileDocument.ToDto() as TDto;
                break;

            case DocConstantModelName.ROLE:
                var enRole = entity as DocEntityRole;
                ret = enRole.ToDto() as TDto;
                break;

            case DocConstantModelName.SCOPE:
                var enScope = entity as DocEntityScope;
                ret = enScope.ToDto() as TDto;
                break;

            case DocConstantModelName.SERVEPORTALSET:
                var enServePortalSet = entity as DocEntityServePortalSet;
                ret = enServePortalSet.ToDto() as TDto;
                break;

            case DocConstantModelName.STATS:
                var enStats = entity as DocEntityStats;
                ret = enStats.ToDto() as TDto;
                break;

            case DocConstantModelName.STATSRECORD:
                var enStatsRecord = entity as DocEntityStatsRecord;
                ret = enStatsRecord.ToDto() as TDto;
                break;

            case DocConstantModelName.STATSSTUDYSET:
                var enStatsStudySet = entity as DocEntityStatsStudySet;
                ret = enStatsStudySet.ToDto() as TDto;
                break;

            case DocConstantModelName.STUDYDESIGN:
                var enStudyDesign = entity as DocEntityStudyDesign;
                ret = enStudyDesign.ToDto() as TDto;
                break;

            case DocConstantModelName.STUDYTYPE:
                var enStudyType = entity as DocEntityStudyType;
                ret = enStudyType.ToDto() as TDto;
                break;

            case DocConstantModelName.TAG:
                var enTag = entity as DocEntityTag;
                ret = enTag.ToDto() as TDto;
                break;

            case DocConstantModelName.TASK:
                var enTask = entity as DocEntityTask;
                ret = enTask.ToDto() as TDto;
                break;

            case DocConstantModelName.TEAM:
                var enTeam = entity as DocEntityTeam;
                ret = enTeam.ToDto() as TDto;
                break;

            case DocConstantModelName.TERMCATEGORY:
                var enTermCategory = entity as DocEntityTermCategory;
                ret = enTermCategory.ToDto() as TDto;
                break;

            case DocConstantModelName.TERMMASTER:
                var enTermMaster = entity as DocEntityTermMaster;
                ret = enTermMaster.ToDto() as TDto;
                break;

            case DocConstantModelName.TERMSYNONYM:
                var enTermSynonym = entity as DocEntityTermSynonym;
                ret = enTermSynonym.ToDto() as TDto;
                break;

            case DocConstantModelName.THERAPEUTICAREASET:
                var enTherapeuticAreaSet = entity as DocEntityTherapeuticAreaSet;
                ret = enTherapeuticAreaSet.ToDto() as TDto;
                break;

            case DocConstantModelName.TIMECARD:
                var enTimeCard = entity as DocEntityTimeCard;
                ret = enTimeCard.ToDto() as TDto;
                break;

            case DocConstantModelName.TIMEPOINT:
                var enTimePoint = entity as DocEntityTimePoint;
                ret = enTimePoint.ToDto() as TDto;
                break;

            case DocConstantModelName.TRIAL:
                var enTrial = entity as DocEntityTrial;
                ret = enTrial.ToDto() as TDto;
                break;

            case DocConstantModelName.UNITCONVERSIONRULES:
                var enUnitConversionRules = entity as DocEntityUnitConversionRules;
                ret = enUnitConversionRules.ToDto() as TDto;
                break;

            case DocConstantModelName.UNITOFMEASURE:
                var enUnitOfMeasure = entity as DocEntityUnitOfMeasure;
                ret = enUnitOfMeasure.ToDto() as TDto;
                break;

            case DocConstantModelName.UNITS:
                var enUnits = entity as DocEntityUnits;
                ret = enUnits.ToDto() as TDto;
                break;

            case DocConstantModelName.UNITVALUE:
                var enUnitValue = entity as DocEntityUnitValue;
                ret = enUnitValue.ToDto() as TDto;
                break;

            case DocConstantModelName.UPDATE:
                var enUpdate = entity as DocEntityUpdate;
                ret = enUpdate.ToDto() as TDto;
                break;

            case DocConstantModelName.USER:
                var enUser = entity as DocEntityUser;
                ret = enUser.ToDto() as TDto;
                break;

            case DocConstantModelName.USERREQUEST:
                var enUserRequest = entity as DocEntityUserRequest;
                ret = enUserRequest.ToDto() as TDto;
                break;

            case DocConstantModelName.USERSESSION:
                var enUserSession = entity as DocEntityUserSession;
                ret = enUserSession.ToDto() as TDto;
                break;

            case DocConstantModelName.USERTYPE:
                var enUserType = entity as DocEntityUserType;
                ret = enUserType.ToDto() as TDto;
                break;

            case DocConstantModelName.VALUETYPE:
                var enValueType = entity as DocEntityValueType;
                ret = enValueType.ToDto() as TDto;
                break;

            case DocConstantModelName.VARIABLEINSTANCE:
                var enVariableInstance = entity as DocEntityVariableInstance;
                ret = enVariableInstance.ToDto() as TDto;
                break;

            case DocConstantModelName.VARIABLERULE:
                var enVariableRule = entity as DocEntityVariableRule;
                ret = enVariableRule.ToDto() as TDto;
                break;

            case DocConstantModelName.WORKFLOW:
                var enWorkflow = entity as DocEntityWorkflow;
                ret = enWorkflow.ToDto() as TDto;
                break;
            }
            return(ret);
        }
Beispiel #3
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);
        }