private static int ImportData(Context context, SitePackage sitePackage, Dictionary <long, long> idHash)
        {
            var count = 0;

            sitePackage.Data.ForEach(jsonExport =>
            {
                jsonExport.Body.ForEach(body =>
                {
                    switch (body.GetReferenceType())
                    {
                    case "Issues":
                        ImportIssues(
                            context: context,
                            idHash: idHash,
                            exportModel: body);
                        count++;
                        break;

                    case "Results":
                        ImportResults(
                            context: context,
                            idHash: idHash,
                            exportModel: body);
                        count++;
                        break;
                    }
                });
            });
            return(count);
        }
 internal void SetSavedIds(
     Context context,
     SiteSettings ss,
     SitePackage sitePackage,
     long savedSiteId,
     bool includeSitePermission)
 {
     SavedTenantId = context.TenantId;
     SavedSiteId   = savedSiteId;
     SavedParentId = sitePackage.HeaderInfo.GetConvertedId(
         siteId: ParentId,
         isParentId: true);
     if (SiteId == InheritPermission && includeSitePermission)
     {
         SavedInheritPermission = savedSiteId;
     }
     else
     {
         SavedInheritPermission = sitePackage.HeaderInfo.Convertors.FirstOrDefault(o =>
                                                                                   o.SiteId == InheritPermission)?.SavedSiteId
                                  ?? sitePackage.Sites.FirstOrDefault()?.InheritPermission
                                  ?? 0;
     }
     if (SavedInheritPermission == 0)
     {
         SavedInheritPermission = ss.SiteId == 0
             ? savedSiteId
             : ss.InheritPermission;
     }
 }
        private static void ImportItems(Context context,
                                        IDictionary <long, long> idHash,
                                        SitePackage sitePackage)
        {
            long savedReferenceId;

            sitePackage.Data.ForEach(jsonExport =>
            {
                jsonExport.Body.ForEach(body =>
                {
                    switch (body.GetReferenceType())
                    {
                    case "Issues":
                        var issuesExportModel = body as IssueExportModel;
                        savedReferenceId      = Rds.ExecuteScalar_response(
                            context: context,
                            selectIdentity: true,
                            statements: Rds.InsertItems(
                                selectIdentity: true,
                                param: Rds.ItemsParam()
                                .SiteId(idHash.Get(issuesExportModel.SiteId.ToLong()))
                                .ReferenceType("Issues")))
                                                .Id.ToLong();
                        idHash.Add(issuesExportModel.IssueId.ToLong(), savedReferenceId);
                        break;

                    case "Results":
                        var resultExportModel = body as ResultExportModel;
                        savedReferenceId      = Rds.ExecuteScalar_response(
                            context: context,
                            selectIdentity: true,
                            statements: Rds.InsertItems(
                                selectIdentity: true,
                                param: Rds.ItemsParam()
                                .SiteId(idHash.Get(resultExportModel.SiteId.ToLong()))
                                .ReferenceType("Results")))
                                                .Id.ToLong();
                        idHash.Add(resultExportModel.ResultId.ToLong(), savedReferenceId);
                        break;
                    }
                });
            });
        }
        public static ResponseFile ExportSitePackage(Context context, SiteSettings ss)
        {
            if (!Parameters.SitePackage.Export ||
                !context.CanManageSite(ss: ss))
            {
                return(null);
            }
            var    useIndentOption           = context.QueryStrings.Bool("UseIndentOption");
            var    includeSitePermission     = context.QueryStrings.Bool("IncludeSitePermission");
            var    includeRecordPermission   = context.QueryStrings.Bool("IncludeRecordPermission");
            var    includeColumnPermission   = context.QueryStrings.Bool("IncludeColumnPermission");
            string sitePackagesSelectableAll = Regex.Replace(
                context.QueryStrings.Data("SitePackagesSelectableAll"),
                @"[^0-9-,(true|false)]", "");
            var sites = new List <SelectedSite>();

            sitePackagesSelectableAll.Split(',')
            .ForEach(e =>
                     sites.Add(new SelectedSite()
            {
                SiteId      = e.Split_1st('-').ToLong(),
                IncludeData = e.Split_2nd('-').ToBool()
            }));
            if (ExceededExportLimit(
                    context: context,
                    sites: sites))
            {
                return(null);
            }
            foreach (var site in sites)
            {
                var currentSs = ss.SiteId == site.SiteId
                    ? ss
                    : SiteSettingsUtilities.Get(
                    context: context,
                    siteId: site.SiteId);
                if (site.IncludeData &&
                    (context.ContractSettings.Export == false ||
                     !context.CanExport(ss: currentSs)))
                {
                    return(null);
                }
            }
            var sitePackage = new SitePackage(
                context: context,
                siteList: sites,
                includeSitePermission: includeSitePermission,
                includeRecordPermission: includeRecordPermission,
                includeColumnPermission: includeColumnPermission);
            var file = new ResponseFile(
                fileContent: sitePackage.RecordingJson(
                    context: context,
                    formatting: useIndentOption
                        ? Formatting.Indented
                        : Formatting.None),
                fileDownloadName: ExportUtilities.FileName(
                    context: context,
                    sitePackage.Sites.FirstOrDefault()?.Title,
                    extension: "json"));

            return(file);
        }