Fixes for the reports. General clean up all around. Better usage of log_lvl.
This commit is contained in:
@@ -220,17 +220,23 @@ export async function handle_update_ae_obj__person(
|
||||
export function handle_db_save_ae_obj_li__person(
|
||||
{
|
||||
obj_type,
|
||||
obj_li
|
||||
obj_li,
|
||||
log_lvl=0
|
||||
}: {
|
||||
obj_type: string,
|
||||
obj_li: any
|
||||
obj_li: any,
|
||||
log_lvl?: number
|
||||
}
|
||||
) {
|
||||
console.log(`*** handle_db_save_ae_obj_li__person() ***`);
|
||||
if (log_lvl) {
|
||||
console.log(`*** handle_db_save_ae_obj_li__person() ***`);
|
||||
}
|
||||
|
||||
if (obj_li && obj_li.length) {
|
||||
obj_li.forEach(async function (obj: any) {
|
||||
// console.log(`ae_obj ${obj_type}:`, obj);
|
||||
if (log_lvl) {
|
||||
console.log(`ae_obj ${obj_type}:`, obj);
|
||||
}
|
||||
|
||||
try {
|
||||
const id_random = await db_core.person.put({
|
||||
|
||||
@@ -126,17 +126,23 @@ export async function handle_load_ae_obj_li__event(
|
||||
export function handle_db_save_ae_obj_li__event(
|
||||
{
|
||||
obj_type,
|
||||
obj_li
|
||||
obj_li,
|
||||
log_lvl = 0
|
||||
}: {
|
||||
obj_type: string,
|
||||
obj_li: any
|
||||
obj_li: any,
|
||||
log_lvl?: number
|
||||
}
|
||||
) {
|
||||
console.log(`*** handle_db_save_ae_obj_li__event() ***`);
|
||||
if (log_lvl) {
|
||||
console.log(`*** handle_db_save_ae_obj_li__event() ***`);
|
||||
}
|
||||
|
||||
if (obj_li && obj_li.length) {
|
||||
obj_li.forEach(async function (obj: any) {
|
||||
// console.log(`ae_obj ${obj_type}:`, obj);
|
||||
if (log_lvl) {
|
||||
console.log(`ae_obj ${obj_type}:`, obj);
|
||||
}
|
||||
|
||||
try {
|
||||
const id_random = await db_events.events.put({
|
||||
|
||||
@@ -260,17 +260,23 @@ export async function handle_search__event_badge(
|
||||
export function handle_db_save_ae_obj_li__badge(
|
||||
{
|
||||
obj_type,
|
||||
obj_li
|
||||
obj_li,
|
||||
log_lvl = 0
|
||||
}: {
|
||||
obj_type: string,
|
||||
obj_li: any
|
||||
obj_li: any,
|
||||
log_lvl?: number
|
||||
}
|
||||
) {
|
||||
console.log(`*** handle_db_save_ae_obj_li__badge() ***`);
|
||||
if (log_lvl) {
|
||||
console.log(`*** handle_db_save_ae_obj_li__badge() ***`);
|
||||
}
|
||||
|
||||
if (obj_li && obj_li.length) {
|
||||
obj_li.forEach(async function (obj: any) {
|
||||
// console.log(`ae_obj ${obj_type}:`, obj);
|
||||
if (log_lvl) {
|
||||
console.log(`ae_obj ${obj_type}:`, obj);
|
||||
}
|
||||
|
||||
try {
|
||||
const id_random = await db_events.badges.put({
|
||||
|
||||
@@ -284,6 +284,7 @@ export async function handle_search__event_file(
|
||||
like_search_qry_str = null,
|
||||
like_presentation_search_qry_str = null,
|
||||
like_file_search_qry_str = null,
|
||||
order_by_li = {'priority': 'DESC', 'sort': 'DESC', 'filename': 'ASC', 'extension': 'ASC', 'hosted_file_size': 'ASC', 'updated_on': 'DESC', 'created_on': 'DESC'},
|
||||
params = {},
|
||||
try_cache = true,
|
||||
log_lvl = 0
|
||||
@@ -296,12 +297,15 @@ export async function handle_search__event_file(
|
||||
like_search_qry_str?: null|string,
|
||||
like_presentation_search_qry_str?: null|string,
|
||||
like_file_search_qry_str?: null|string,
|
||||
order_by_li?: key_val,
|
||||
params?: any,
|
||||
try_cache?: boolean,
|
||||
log_lvl?: number
|
||||
}
|
||||
) {
|
||||
console.log(`*** handle_search__event_file() *** event_id=${event_id}`);
|
||||
if (log_lvl) {
|
||||
console.log(`*** handle_search__event_file() *** event_id=${event_id}`);
|
||||
}
|
||||
|
||||
let enabled: string = (params.qry__enabled ?? 'enabled'); // all, disabled, enabled
|
||||
let hidden: string = (params.qry__hidden ?? 'not_hidden'); // all, hidden, not_hidden
|
||||
@@ -357,8 +361,6 @@ export async function handle_search__event_file(
|
||||
// params_json['and_qry']['created_on'] = created_on;
|
||||
// }
|
||||
|
||||
let order_by_li = {'priority': 'DESC', 'sort': 'DESC', 'filename': 'ASC', 'extension': 'ASC', 'hosted_file_size': 'ASC', 'updated_on': 'DESC', 'created_on': 'DESC'};
|
||||
|
||||
ae_promises.load__event_file_obj_li = await api.get_ae_obj_li_for_obj_id_crud({
|
||||
api_cfg: api_cfg,
|
||||
obj_type: 'event_file',
|
||||
@@ -400,17 +402,23 @@ export async function handle_search__event_file(
|
||||
export function handle_db_save_ae_obj_li__event_file(
|
||||
{
|
||||
obj_type,
|
||||
obj_li
|
||||
obj_li,
|
||||
log_lvl=0
|
||||
}: {
|
||||
obj_type: string,
|
||||
obj_li: any
|
||||
obj_li: any,
|
||||
log_lvl?: number
|
||||
}
|
||||
) {
|
||||
console.log(`*** handle_db_save_ae_obj_li__event_file() ***`);
|
||||
if (log_lvl) {
|
||||
console.log(`*** handle_db_save_ae_obj_li__event_file() ***`);
|
||||
}
|
||||
|
||||
if (obj_li && obj_li.length) {
|
||||
obj_li.forEach(async function (obj: any) {
|
||||
console.log(`ae_obj ${obj_type}:`, obj);
|
||||
if (log_lvl) {
|
||||
console.log(`ae_obj ${obj_type}:`, obj);
|
||||
}
|
||||
|
||||
try {
|
||||
const id_random = await db_events.files.put({
|
||||
|
||||
@@ -441,17 +441,23 @@ export async function create_ae_obj__event_location(
|
||||
export function db_save_ae_obj_li__event_location(
|
||||
{
|
||||
obj_type,
|
||||
obj_li
|
||||
obj_li,
|
||||
log_lvl=0
|
||||
}: {
|
||||
obj_type: string,
|
||||
obj_li: any
|
||||
obj_li: any,
|
||||
log_lvl?: number
|
||||
}
|
||||
) {
|
||||
console.log(`*** db_save_ae_obj_li__event_location() ***`);
|
||||
if (log_lvl) {
|
||||
console.log(`*** db_save_ae_obj_li__event_location() ***`);
|
||||
}
|
||||
|
||||
if (obj_li && obj_li.length) {
|
||||
obj_li.forEach(async function (obj: any) {
|
||||
// console.log(`ae_obj ${obj_type}:`, obj);
|
||||
if (log_lvl) {
|
||||
console.log(`ae_obj ${obj_type}:`, obj);
|
||||
}
|
||||
|
||||
try {
|
||||
const id_random = await db_events.locations.put({
|
||||
|
||||
@@ -176,17 +176,23 @@ export async function create_ae_obj__event_presentation(
|
||||
export function db_save_ae_obj_li__event_presentation(
|
||||
{
|
||||
obj_type,
|
||||
obj_li
|
||||
obj_li,
|
||||
log_lvl=0
|
||||
}: {
|
||||
obj_type: string,
|
||||
obj_li: any
|
||||
obj_li: any,
|
||||
log_lvl?: number
|
||||
}
|
||||
) {
|
||||
console.log(`*** db_save_ae_obj_li__event_presentation() ***`);
|
||||
if (log_lvl) {
|
||||
console.log(`*** db_save_ae_obj_li__event_presentation() ***`);
|
||||
}
|
||||
|
||||
if (obj_li && obj_li.length) {
|
||||
obj_li.forEach(async function (obj: any) {
|
||||
// console.log(`ae_obj ${obj_type}:`, obj);
|
||||
if (log_lvl) {
|
||||
console.log(`ae_obj ${obj_type}:`, obj);
|
||||
}
|
||||
|
||||
try {
|
||||
const id_random = await db_events.presentations.put({
|
||||
|
||||
@@ -304,6 +304,7 @@ export async function search__event_presenter(
|
||||
like_search_qry_str = null,
|
||||
like_presentation_search_qry_str = null,
|
||||
like_presenter_search_qry_str = null,
|
||||
order_by_li = {'priority': 'DESC', 'sort': 'DESC', 'given_name': 'ASC', 'family_name': 'ASC', 'email': 'ASC', 'updated_on': 'DESC', 'created_on': 'DESC'},
|
||||
params = {},
|
||||
try_cache = true,
|
||||
log_lvl = 0
|
||||
@@ -317,6 +318,7 @@ export async function search__event_presenter(
|
||||
like_search_qry_str?: null|string,
|
||||
like_presentation_search_qry_str?: null|string,
|
||||
like_presenter_search_qry_str?: null|string,
|
||||
order_by_li?: key_val,
|
||||
params?: any,
|
||||
try_cache?: boolean,
|
||||
log_lvl?: number
|
||||
@@ -384,8 +386,6 @@ export async function search__event_presenter(
|
||||
params_json['and_qry']['biography_check'] = biography;
|
||||
}
|
||||
|
||||
let order_by_li = {'priority': 'DESC', 'sort': 'DESC', 'given_name': 'ASC', 'family_name': 'ASC', 'email': 'ASC', 'updated_on': 'DESC', 'created_on': 'DESC'};
|
||||
|
||||
ae_promises.load__event_presenter_obj_li = await api.get_ae_obj_li_for_obj_id_crud({
|
||||
api_cfg: api_cfg,
|
||||
obj_type: 'event_presenter',
|
||||
@@ -441,7 +441,9 @@ export function db_save_ae_obj_li__event_presenter(
|
||||
|
||||
if (obj_li && obj_li.length) {
|
||||
obj_li.forEach(async function (obj: any) {
|
||||
// console.log(`ae_obj ${obj_type}:`, obj);
|
||||
if (log_lvl) {
|
||||
console.log(`ae_obj ${obj_type}:`, obj);
|
||||
}
|
||||
|
||||
try {
|
||||
const id_random = await db_events.presenters.put({
|
||||
|
||||
@@ -510,17 +510,23 @@ export async function search__event_session(
|
||||
export function db_save_ae_obj_li__event_session(
|
||||
{
|
||||
obj_type,
|
||||
obj_li
|
||||
obj_li,
|
||||
log_lvl = 0
|
||||
}: {
|
||||
obj_type: string,
|
||||
obj_li: any
|
||||
obj_li: any,
|
||||
log_lvl?: number
|
||||
}
|
||||
) {
|
||||
console.log(`*** db_save_ae_obj_li__event_session() ***`);
|
||||
if (log_lvl) {
|
||||
console.log(`*** db_save_ae_obj_li__event_session() ***`);
|
||||
}
|
||||
|
||||
if (obj_li && obj_li.length) {
|
||||
obj_li.forEach(async function (obj: any) {
|
||||
// console.log(`ae_obj ${obj_type}:`, obj);
|
||||
if (log_lvl) {
|
||||
console.log(`ae_obj ${obj_type}:`, obj);
|
||||
}
|
||||
|
||||
try {
|
||||
const id_random = await db_events.sessions.put({
|
||||
|
||||
@@ -413,12 +413,26 @@ export async function handle_download_export__event_exhibit_tracking(
|
||||
|
||||
|
||||
// This function will loop through the event_exhibit_obj_li and save each one to the DB.
|
||||
export function handle_db_save_ae_obj_li__exhibitor({obj_type, obj_li=[]}: {obj_type: string, obj_li: any[]}) {
|
||||
console.log(`*** handle_db_save_ae_obj_li__exhibitor() ***`);
|
||||
export function handle_db_save_ae_obj_li__exhibitor(
|
||||
{
|
||||
obj_type,
|
||||
obj_li=[],
|
||||
log_lvl=0
|
||||
}: {
|
||||
obj_type: string,
|
||||
obj_li: any[],
|
||||
log_lvl?: number
|
||||
}
|
||||
) {
|
||||
if (log_lvl) {
|
||||
console.log(`*** handle_db_save_ae_obj_li__exhibitor() ***`);
|
||||
}
|
||||
|
||||
if (obj_li && obj_li.length) {
|
||||
obj_li.forEach(async function (obj) {
|
||||
// console.log(`ae_obj ${obj_type}:`, obj);
|
||||
if (log_lvl) {
|
||||
console.log(`ae_obj ${obj_type}:`, obj);
|
||||
}
|
||||
|
||||
try {
|
||||
const id_random = await db_events.exhibits.put({
|
||||
@@ -468,17 +482,23 @@ export function handle_db_save_ae_obj_li__exhibitor({obj_type, obj_li=[]}: {obj_
|
||||
export function handle_db_save_ae_obj_li__exhibitor_tracking(
|
||||
{
|
||||
obj_type,
|
||||
obj_li
|
||||
obj_li,
|
||||
log_lvl=0
|
||||
}: {
|
||||
obj_type: string,
|
||||
obj_li: any
|
||||
obj_li: any,
|
||||
log_lvl?: number
|
||||
}
|
||||
) {
|
||||
console.log(`*** handle_db_save_ae_obj_li__exhibitor_tracking() ***`);
|
||||
if (log_lvl) {
|
||||
console.log(`*** handle_db_save_ae_obj_li__exhibitor_tracking() ***`);
|
||||
}
|
||||
|
||||
if (obj_li && obj_li.length) {
|
||||
obj_li.forEach(async function (obj: any) {
|
||||
// console.log(`ae_obj ${obj_type}:`, obj);
|
||||
if (log_lvl) {
|
||||
console.log(`ae_obj ${obj_type}:`, obj);
|
||||
}
|
||||
|
||||
try {
|
||||
const id_random = await db_events.exhibit_tracking.put({
|
||||
|
||||
@@ -215,6 +215,8 @@ let events_local_data_struct: key_val = {
|
||||
show_report__presenters_agree: false,
|
||||
show_report__recent_files: false,
|
||||
|
||||
// time_format: 'time_us_short', // 'time_short', 'time_us_short'
|
||||
|
||||
disable_submit__opt_out: true,
|
||||
submit_status__opt_out: null,
|
||||
},
|
||||
|
||||
@@ -98,7 +98,15 @@ if (file_type == 'CSV' || file_type == 'Excel') {
|
||||
}
|
||||
params['return_file'] = true;
|
||||
|
||||
ae_promises.download__sponsorship_export_file = await api.get_object({api_cfg: api_cfg, endpoint: endpoint, params: params, return_blob: return_file, filename: filename, auto_download: auto_download, log_lvl: log_lvl});
|
||||
ae_promises.download__sponsorship_export_file = await api.get_object({
|
||||
api_cfg: api_cfg,
|
||||
endpoint: endpoint,
|
||||
params: params,
|
||||
return_blob: return_file,
|
||||
filename: filename,
|
||||
auto_download: auto_download,
|
||||
log_lvl: log_lvl
|
||||
});
|
||||
|
||||
console.log('ae_promises.download__sponsorship_export_file:', ae_promises.download__sponsorship_export_file);
|
||||
return ae_promises.download__sponsorship_export_file;
|
||||
|
||||
@@ -12,7 +12,7 @@ import { ae_snip, ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger } from '$
|
||||
|
||||
// Exports
|
||||
export let container_class_li: string|Array<string> = [];
|
||||
export let event_file_id_random_li: Array<string> = [''];
|
||||
export let event_file_id_random_li: Array<string> = [];
|
||||
export let allow_basic: boolean = false;
|
||||
export let allow_moderator: boolean = false;
|
||||
// export let max_records: number = 100;
|
||||
@@ -42,7 +42,8 @@ let lq_kv__event_file_obj_li = liveQuery(
|
||||
|
||||
|
||||
{#if event_file_id_random_li && $lq_kv__event_file_obj_li && $lq_kv__event_file_obj_li?.length > 0 && $lq_kv__event_file_obj_li?.length == event_file_id_random_li?.length}
|
||||
<div class="overflow-auto">
|
||||
|
||||
<div class="overflow-auto space-y-2">
|
||||
<h2 class="h3">
|
||||
<span class="text-base">
|
||||
Results:
|
||||
@@ -257,6 +258,13 @@ let lq_kv__event_file_obj_li = liveQuery(
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
{:else}
|
||||
|
||||
<p class="text-sm">
|
||||
No files available to show.
|
||||
</p>
|
||||
|
||||
{/if}
|
||||
|
||||
</section>
|
||||
|
||||
@@ -11,7 +11,7 @@ import { db_events } from "$lib/db_events";
|
||||
|
||||
// Exports
|
||||
export let container_class_li: string|Array<string> = [];
|
||||
export let event_presenter_id_random_li: Array<string> = [''];
|
||||
export let event_presenter_id_random_li: Array<string> = [];
|
||||
export let allow_basic: boolean = false;
|
||||
export let allow_moderator: boolean = false;
|
||||
export let show_presentation_fields: boolean = false;
|
||||
@@ -36,10 +36,11 @@ let lq_kv__event_presenter_obj_li = liveQuery(
|
||||
<section class="ae_comp event_presenter_obj_tbl container {container_class_li}">
|
||||
|
||||
|
||||
{#if event_presenter_id_random_li && $lq_kv__event_presenter_obj_li && $lq_kv__event_presenter_obj_li?.length > 0}
|
||||
<div class="overflow-auto">
|
||||
{#if event_presenter_id_random_li && $lq_kv__event_presenter_obj_li && $lq_kv__event_presenter_obj_li?.length > 0 && $lq_kv__event_presenter_obj_li?.length == event_presenter_id_random_li?.length}
|
||||
|
||||
<div class="overflow-auto space-y-2">
|
||||
<h2 class="h3">
|
||||
<span class="text-md">
|
||||
<span class="text-base">
|
||||
Results:
|
||||
</span>
|
||||
|
||||
@@ -74,6 +75,9 @@ let lq_kv__event_presenter_obj_li = liveQuery(
|
||||
<th class="px-4 py-2">Presentation</th>
|
||||
<th class="px-4 py-2">Presentation time</th>
|
||||
{/if}
|
||||
<th class="px-4 py-2">
|
||||
Updated On
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody
|
||||
@@ -120,11 +124,20 @@ let lq_kv__event_presenter_obj_li = liveQuery(
|
||||
<td class="px-4 py-2 lg:text-xs">{ae_util.iso_datetime_formatter(event_presenter_obj?.event_presentation_start_datetime, 'time_us_short')}</td>
|
||||
{/if}
|
||||
|
||||
<td class="px-4 py-2 text-sm">{ae_util.iso_datetime_formatter(event_presenter_obj?.updated_on, 'datetime_us_no_seconds')}</td>
|
||||
|
||||
</tr>
|
||||
{/each}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
{:else}
|
||||
|
||||
<p class="text-sm">
|
||||
No presenters available to show.
|
||||
</p>
|
||||
|
||||
{/if}
|
||||
|
||||
</section>
|
||||
|
||||
@@ -20,7 +20,7 @@ export let container_class_li: string|Array<string> = [];
|
||||
// export let link_to_type: string;
|
||||
// export let link_to_id: string;
|
||||
// export let event_presenter_id_random_li: Array<string> = [''];
|
||||
export let event_session_id_random_li: Array<string>;
|
||||
export let event_session_id_random_li: Array<string> = [];
|
||||
// export let allow_basic: boolean = false;
|
||||
// export let allow_moderator: boolean = false;
|
||||
|
||||
@@ -42,7 +42,7 @@ let lq_kv__event_session_obj_li = liveQuery(
|
||||
|
||||
{#if event_session_id_random_li && event_session_id_random_li?.length > 0 && $events_slct.event_session_obj_li?.length == $lq_kv__event_session_obj_li?.length}
|
||||
|
||||
<div class="container overflow-auto">
|
||||
<div class="overflow-auto space-y-2">
|
||||
<h2 class="h3">
|
||||
<span class="text-base">
|
||||
Results:
|
||||
@@ -105,9 +105,11 @@ let lq_kv__event_session_obj_li = liveQuery(
|
||||
</div>
|
||||
|
||||
{:else}
|
||||
|
||||
<p class="text-sm">
|
||||
No sessions found.
|
||||
No sessions available to show.
|
||||
</p>
|
||||
|
||||
{/if}
|
||||
|
||||
|
||||
|
||||
@@ -38,10 +38,11 @@ let lq__event_obj = liveQuery(
|
||||
() => db_events.events.get($events_slct.event_id)
|
||||
);
|
||||
|
||||
let event_file_id_random_li: string[];
|
||||
let event_session_id_random_li: string[] = [];
|
||||
// let event_presentation_id_random_li: string[] = [];
|
||||
let event_presenter_id_random_li: string[] = [];
|
||||
// It is important that these not be set to a value! It messes with the Dexie LiveQuery.
|
||||
let event_file_id_random_li: Array<string>;
|
||||
let event_session_id_random_li: Array<string>;
|
||||
// let event_presentation_id_random_li: Array<string>;
|
||||
let event_presenter_id_random_li: Array<string>;
|
||||
|
||||
let load_obj_li_results: Promise<any>|key_val;
|
||||
let search_submit_results: Promise<any>|key_val;
|
||||
@@ -166,6 +167,8 @@ async function handle_search__event_presenter(
|
||||
$events_sess.pres_mgmt.status_qry__search = 'loading';
|
||||
$events_sess.pres_mgmt.status_rpt[$events_sess.pres_mgmt.show_report] = 'loading';
|
||||
|
||||
let order_by_li = {'updated_on': 'DESC', 'priority': 'DESC', 'sort': 'DESC', 'given_name': 'ASC', 'family_name': 'ASC', 'email': 'ASC', 'created_on': 'DESC'};
|
||||
|
||||
ae_promises.search__event_presenter = events_func.search__event_presenter({
|
||||
api_cfg: $ae_api,
|
||||
event_id: $events_slct.event_id,
|
||||
@@ -177,6 +180,7 @@ async function handle_search__event_presenter(
|
||||
like_presentation_search_qry_str: lk_search_str,
|
||||
like_presenter_search_qry_str: lk_search_str,
|
||||
// external_event_id: $events_loc.pres_mgmt.default__external_registration_id,
|
||||
order_by_li: order_by_li,
|
||||
params: params,
|
||||
try_cache: try_cache,
|
||||
log_lvl: log_lvl,
|
||||
@@ -463,7 +467,7 @@ async function handle_qry__event_session(
|
||||
{/await} -->
|
||||
|
||||
<!-- Show presenters that have agreed -->
|
||||
{#if $events_sess.pres_mgmt.show_report == 'presenters_agree' && event_presenter_id_random_li?.length > 0}
|
||||
{#if $events_sess.pres_mgmt.show_report == 'presenters_agree' && event_presenter_id_random_li}
|
||||
<!-- <div class="overflow-x-auto"> -->
|
||||
<h3 class="h4 text-center">Presenters Agreed</h3>
|
||||
|
||||
@@ -476,7 +480,7 @@ async function handle_qry__event_session(
|
||||
{/if}
|
||||
|
||||
<!-- Show presenters with bios -->
|
||||
{#if $events_sess.pres_mgmt.show_report == 'presenters_biography' && event_presenter_id_random_li?.length > 0}
|
||||
{#if $events_sess.pres_mgmt.show_report == 'presenters_biography' && event_presenter_id_random_li}
|
||||
<h3 class="h4 text-center">Presenters with Bios</h3>
|
||||
|
||||
<Comp_event_presenter_obj_tbl
|
||||
@@ -503,7 +507,7 @@ async function handle_qry__event_session(
|
||||
|
||||
|
||||
<!-- Show sessions without files -->
|
||||
{#if $events_sess.pres_mgmt.show_report == 'session_no_files' && event_session_id_random_li?.length > 0}
|
||||
{#if $events_sess.pres_mgmt.show_report == 'session_no_files' && event_session_id_random_li}
|
||||
<h3 class="h4 text-center">Sessions without Files</h3>
|
||||
|
||||
<Comp_event_session_obj_tbl
|
||||
|
||||
Reference in New Issue
Block a user