public CaseTemplateSiteTagVersion MapVersions(CaseTemplatePnDbContext dbContext,
                                                      CaseTemplateSiteTag caseTemplateSiteTag)
        {
            CaseTemplateSiteTagVersion caseTemplateSiteTagVersion = new CaseTemplateSiteTagVersion();

            caseTemplateSiteTagVersion.CaseTemplateId        = caseTemplateSiteTag.CaseTemplateId;
            caseTemplateSiteTagVersion.SdkSiteTagId          = caseTemplateSiteTag.SdkSiteTagId;
            caseTemplateSiteTagVersion.CreatedAt             = caseTemplateSiteTag.CreatedAt;
            caseTemplateSiteTagVersion.UpdatedAt             = caseTemplateSiteTag.UpdatedAt;
            caseTemplateSiteTagVersion.CreatedByUserId       = caseTemplateSiteTag.CreatedByUserId;
            caseTemplateSiteTagVersion.UpdatedByUserId       = caseTemplateSiteTag.UpdatedByUserId;
            caseTemplateSiteTagVersion.Version               = caseTemplateSiteTag.Version;
            caseTemplateSiteTagVersion.WorkflowState         = caseTemplateSiteTag.WorkflowState;
            caseTemplateSiteTagVersion.CaseTemplateSiteTagId = caseTemplateSiteTag.Id;

            return(caseTemplateSiteTagVersion);
        }
        public void Delete(CaseTemplatePnDbContext dbContext)
        {
            CaseTemplateSiteTag caseTemplateSiteTag =
                dbContext.CaseTemplateSiteTags.FirstOrDefault(x => x.Id == Id);

            if (caseTemplateSiteTag == null)
            {
                throw new NullReferenceException($"Could not find case template site group with id: {Id}");
            }

            caseTemplateSiteTag.WorkflowState = Constants.WorkflowStates.Removed;

            if (dbContext.ChangeTracker.HasChanges())
            {
                caseTemplateSiteTag.UpdatedAt = DateTime.Now;
                caseTemplateSiteTag.Version  += 1;

                dbContext.CaseTemplateSiteTagVersions.Add(MapVersions(dbContext, caseTemplateSiteTag));
                dbContext.SaveChanges();
            }
        }