| Server IP : 172.67.201.108 / Your IP : 216.73.216.11 Web Server : Apache/2.4.68 (Amazon Linux) OpenSSL/3.5.5 System : Linux ip-172-31-69-123.ec2.internal 6.1.176-223.369.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Jul 24 13:34:27 UTC 2026 x86_64 User : ec2-user ( 1000) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/hotel-dev/public_html/mod/ |
Upload File : |
<?php
//ini_set('display_errors',1);
//error_reporting(E_ALL & ~E_NOTICE);
?>
<?php include('_mod_security.php'); ?>
<?php
//header('Content-Type: application/json');
//var_dump($_GET);
$sql = '';
switch ($_GET['func']):
case 'grid' :
require_once('classes/lcs_db_grid.php');
$view_only = !role_match($ar_pagecontrol[$_GET['call']]['update_roles'] ?? '', get_roles());
$disabled_link = '';
if ($view_only) :
$disabled_link = ' class="disabled_link" ';
endif;
$sql = "SELECT id, description FROM job_categories ORDER BY description";
$result_job_cat = $db->query($sql) or die('Database Error!');
$ar_job_cat = $result_job_cat->fetchAll(PDO::FETCH_KEY_PAIR);
$dbg = new lcs_db_grid;
$dbg->start_header_section();
$dbg->start_header();
$dbg->add_column(['label' => 'Title', 'dbcol' => 'c.title', 'width' => '70px', 'class' => 'hover_expand']);
$dbg->add_column(['label' => 'First Name', 'dbcol' => 'c.first_name', 'width' => '70px', 'class' => 'hover_expand']);
$dbg->add_column(['label' => 'Last Name', 'dbcol' => 'c.last_name', 'width' => '70px', 'class' => 'hover_expand']);
$dbg->add_column(['label' => 'Job Cat', 'dbcol' => 'jc.description', 'width' => '70px', 'class' => 'hover_expand', 'multi_filter' => $ar_job_cat, 'multi_filter_col' => 'c.job_category_id', 'multi_filter_type' => 'int']);
$dbg->add_column(['label' => 'Hotel', 'dbcol' => 'h.hotel_name', 'width' => '100px', 'class' => 'hover_expand']);
$dbg->add_column(['label' => 'Work Email', 'dbcol' => 'c.primary_email', 'hidden' => true, 'width' => '220px']);
$dbg->add_column(['label' => 'Personal Email', 'dbcol' => 'c.secondary_email', 'hidden' => true, 'width' => '220px']);
$dbg->add_column(['label' => 'Email 3', 'dbcol' => 'c.email_3', 'hidden' => true, 'width' => '220px']);
$dbg->add_column(['label' => 'Email 4', 'dbcol' => 'c.email_4', 'hidden' => true, 'width' => '220px']);
$dbg->add_column(['label' => 'Status', 'dbcol' => 'c.status', 'width' => '50px', 'filter' => true]);
$dbg->add_column(['label' => 'CGR', 'dbcol' => 'c.cgr', 'width' => '35px', 'align' => 'center', 'filter' => true]);
$dbg->add_column(['label' => 'GTE', 'dbcol' => 'c.gte_certified', 'width' => '35px', 'align' => 'center', 'filter' => true]);
$dbg->add_column(['label' => 'RSVP', 'dbcol' => 'ec.rsvp_1', 'sortable' => false, 'searchable' => false, 'width' => '40px', 'align' => 'center', 'filter' => true]);
$dbg->add_column(['label' => 'Conf', 'dbcol' => 'ec.conf_1', 'sortable' => false, 'searchable' => false, 'width' => '40px', 'align' => 'center', 'filter' => true]);
$dbg->add_column(['label' => 'Cancel', 'dbcol' => 'ec.cancel_1', 'sortable' => false, 'searchable' => false, 'width' => '45px', 'align' => 'center', 'filter' => true]);
$dbg->add_column(['label' => 'ATT', 'dbcol' => 'ec.attended_1', 'sortable' => false, 'searchable' => false, 'width' => '35px', 'align' => 'center', 'filter' => true]);
$dbg->add_column(['label' => 'Wait', 'dbcol' => 'ec.wait_1', 'sortable' => false, 'searchable' => false, 'width' => '35px', 'align' => 'center', 'filter' => true]);
$dbg->add_column(['label' => 'RSVP', 'dbcol' => 'ec.rsvp_2', 'sortable' => false, 'searchable' => false, 'width' => '40px', 'align' => 'center', 'filter' => true]);
$dbg->add_column(['label' => 'Conf', 'dbcol' => 'ec.conf_2', 'sortable' => false, 'searchable' => false, 'width' => '40px', 'align' => 'center', 'filter' => true]);
$dbg->add_column(['label' => 'Cancel', 'dbcol' => 'ec.cancel_2', 'sortable' => false, 'searchable' => false, 'width' => '45px', 'align' => 'center', 'filter' => true]);
$dbg->add_column(['label' => 'ATT', 'dbcol' => 'ec.attended_2', 'sortable' => false, 'searchable' => false, 'width' => '35px', 'align' => 'center', 'filter' => true]);
$dbg->add_column(['label' => 'Wait', 'dbcol' => 'ec.wait_2', 'sortable' => false, 'searchable' => false, 'width' => '35px', 'align' => 'center', 'filter' => true]);
$dbg->add_column(['label' => '# Guests', 'dbcol' => 'ec.nbr_of_guests', 'sortable' => false, 'searchable' => false, 'width' => '60px', 'align' => 'center']);
$dbg->add_column(['label' => 'Guest Name', 'dbcol' => 'ec.guest_name', 'sortable' => false, 'searchable' => false, 'width' => '80px', 'align' => 'center']);
$dbg->add_column(['label' => 'Corr.', 'dbcol' => 'ec.corrections', 'sortable' => false, 'searchable' => false, 'width' => '40px']);
$dbg->end_header();
$dbg->start_sub_header();
$dbg->add_sub_column(['label' => 'Venue 1', 'start' => 13, 'cols' => 5]);
$dbg->add_sub_column(['label' => 'Venue 2', 'start' => 18, 'cols' => 5]);
$dbg->end_sub_header();
$dbg->end_header_section();
$sql = "SELECT h.hotel_name, ec.*, c.*, jc.*, (CASE c.status WHEN 0 THEN 'Inactive' WHEN 1 THEN 'Active' WHEN 2 THEN 'In transition' END) AS c_status FROM concierges c LEFT OUTER JOIN hotels h ON (c.hotel_id = h.hotel_id) LEFT OUTER JOIN events_concierges ec ON (c.concierge_id = ec.concierge_id AND ec.event_id = ".nz($_GET['parm1'], '0').") LEFT OUTER JOIN job_categories jc ON (c.job_category_id = jc.id) ".
"WHERE ".$dbg->search_spec()." ".$_GET['parm2']." ".$_GET['parm3']." ".
"ORDER BY ".$dbg->sort_spec();
//echo ' === '.$sql.' === ';
$xls_sql = $sql;
$xls_sql_encoded = xls_sql_encrypt($xls_sql);
$result = $db->query($sql) or die('Database Error!');
$dbg->start_data_section();
$total_guests = 0;
if ($result->rowCount() > 0) :
while ($row = $result->fetch(PDO::FETCH_OBJ)) :
$dbg->start_row();
$dbg->add_cell('<a href="index.php?IX='.$_GET['ix_form'].'&id='.$row->concierge_id.'" ' . $disabled_link . ' >'.$row->title.'</a>');
$dbg->add_cell('<a href="index.php?IX='.$_GET['ix_form'].'&id='.$row->concierge_id.'" ' . $disabled_link . ' >'.$row->first_name.'</a>');
$dbg->add_cell('<a href="index.php?IX='.$_GET['ix_form'].'&id='.$row->concierge_id.'" ' . $disabled_link . ' >'.$row->last_name.'</a>');
$dbg->add_cell($row->description);
$dbg->add_cell($row->hotel_name);
$dbg->add_cell($row->primary_email);
$dbg->add_cell($row->secondary_email);
$dbg->add_cell($row->email_3);
$dbg->add_cell($row->email_4);
$dbg->add_cell($row->c_status);
$dbg->add_cell('<input type="checkbox" disabled="disabled" '.bool_to_check($row->cgr).' />');
$dbg->add_cell('<input type="checkbox" disabled="disabled" '.bool_to_check($row->gte_certified).' />');
$dbg->add_cell('<input id="ec_rsvp_1_'.$row->concierge_id.'" type="checkbox" '.(($row->cancel_1 == 1 || $view_only) ? ' disabled ' : '').' '.bool_to_check($row->rsvp_1).' value="1" onchange="event_concierge_update(\''.trim($_GET['parm1']).'\', \''.$row->concierge_id.'\', \'rsvp_1\', this);" />');
$dbg->add_cell('<input id="ec_conf_1_'.$row->concierge_id.'" type="checkbox" '.(($row->rsvp_1 != 1 || $view_only) ? ' disabled ' : '').' '.bool_to_check($row->conf_1).' value="1" onchange="event_concierge_update(\''.trim($_GET['parm1']).'\', \''.$row->concierge_id.'\', \'conf_1\', this);" />');
$dbg->add_cell('<input id="ec_cancel_1_'.$row->concierge_id.'" type="checkbox" '.((($row->rsvp_1 != 1 && $row->cancel_1 != 1) || $view_only) ? ' disabled ' : '').' '.bool_to_check($row->cancel_1).' value="1" onchange="event_concierge_update(\''.trim($_GET['parm1']).'\', \''.$row->concierge_id.'\', \'cancel_1\', this);" />');
$dbg->add_cell('<input id="ec_attended_1_'.$row->concierge_id.'" type="checkbox" '.(($row->rsvp_1 != 1 || $view_only) ? ' disabled ' : '').' '.bool_to_check($row->attended_1).' value="1" onchange="event_concierge_update(\''.trim($_GET['parm1']).'\', \''.$row->concierge_id.'\', \'attended_1\', this);" />');
$dbg->add_cell('<input id="ec_wait_1_'.$row->concierge_id.'" type="checkbox" '.(($view_only) ? ' disabled ' : '').' '.bool_to_check($row->wait_1).' value="1" onchange="event_concierge_update(\''.trim($_GET['parm1']).'\', \''.$row->concierge_id.'\', \'wait_1\', this);" />');
$dbg->add_cell('<input id="ec_rsvp_2_'.$row->concierge_id.'" type="checkbox" '.(($row->cancel_2 == 1 || $view_only) ? ' disabled ' : '').' '.bool_to_check($row->rsvp_2).' value="1" onchange="event_concierge_update(\''.trim($_GET['parm1']).'\', \''.$row->concierge_id.'\', \'rsvp_2\', this);" />');
$dbg->add_cell('<input id="ec_conf_2_'.$row->concierge_id.'" type="checkbox" '.(($row->rsvp_2 != 1 || $view_only) ? ' disabled ' : '').' '.bool_to_check($row->conf_2).' value="1" onchange="event_concierge_update(\''.trim($_GET['parm1']).'\', \''.$row->concierge_id.'\', \'conf_2\', this);" />');
$dbg->add_cell('<input id="ec_cancel_2_'.$row->concierge_id.'" type="checkbox" '.((($row->rsvp_2 != 1 && $row->cancel_2 != 1) || $view_only) ? ' disabled ' : '').' '.bool_to_check($row->cancel_2).' value="1" onchange="event_concierge_update(\''.trim($_GET['parm1']).'\', \''.$row->concierge_id.'\', \'cancel_2\', this);" />');
$dbg->add_cell('<input id="ec_attended_2_'.$row->concierge_id.'" type="checkbox" '.(($row->rsvp_2 != 1 || $view_only) ? ' disabled ' : '').' '.bool_to_check($row->attended_2).' value="1" onchange="event_concierge_update(\''.trim($_GET['parm1']).'\', \''.$row->concierge_id.'\', \'attended_2\', this);" />');
$dbg->add_cell('<input id="ec_wait_2_'.$row->concierge_id.'" type="checkbox" '.(($view_only) ? ' disabled ' : '').' '.bool_to_check($row->wait_2).' value="1" onchange="event_concierge_update(\''.trim($_GET['parm1']).'\', \''.$row->concierge_id.'\', \'wait_2\', this);" />');
$dbg->add_cell('<input id="ec_nbr_of_guests_'.$row->concierge_id.'" type="text" maxlen="3" '.((($row->rsvp_1 != 1 && $row->rsvp_2 != 1 && $row->wait_1 != 1 && $row->wait_2 != 1) || $view_only) ? ' disabled ' : '').' value="'.$row->nbr_of_guests.'" onblur="event_concierge_update(\''.trim($_GET['parm1']).'\', \''.$row->concierge_id.'\', \'nbr_of_guests\', this);" />');
$dbg->add_cell('<input id="ec_guest_name_'.$row->concierge_id.'" type="text" maxlen="99" '.(($row->rsvp_1 != 1 && $row->rsvp_2 != 1 && $row->wait_1 != 1 && $row->wait_2 != 1 || $row->nbr_of_guests <= 1 || $view_only) ? ' disabled ' : '').' value="'.$row->guest_name.'" onblur="event_concierge_update(\''.trim($_GET['parm1']).'\', \''.$row->concierge_id.'\', \'guest_name\', this);" />');
if (!empty($row->corrections)) :
$popup_html = '<div id="grid_popup_'.$row->concierge_id.'" class="grid_popup" style="padding:18px!important;">';
$popup_html .= '<div style="position:absolute; right:0; top:0; padding:8px;"><a href="javascript:hide_details();">X</a></div>';
$popup_html .= '<b><br>Corrections details:</b> <br /><table>';
$popup_html .= '<tr><td>'.$row->first_name.' '.$row->last_name.'</td></tr>';
$popup_html .= '<tr><td valign="top">Corrections:</td><td> </td></tr>';
$popup_html .= '</table>';
$popup_html .= '<textarea id="corrections_'.$row->concierge_id.'" cols="80" rows="7">'.$row->corrections.'</textarea><br>';
$popup_html .= '<a href="javascript:copy_to_clipboard(\'corrections_'.$row->concierge_id.'\');">Copy to clipboard</a>';
$popup_html .= '</div>';
$dbg->add_cell($popup_html.'<a href="javascript:show_details(\'grid_popup_'.$row->concierge_id.'\');" >Click..</a>');
else :
$dbg->add_cell('');
endif;
//$dbg->add_cell('<input id="ec_corrections_'.$row->concierge_id.'" type="text" maxlen="999" readonly value="'.$row->corrections.'" />');
$dbg->end_row();
$total_guests += $row->nbr_of_guests;
endwhile;
else :
$dbg->start_row();
$dbg->add_cell('No records found');
$dbg->end_row();
endif;
$dbg->end_data_section();
echo json_encode(['row_count' => $result->rowCount(), 'html' => $dbg->get_html(), 'xls_sql' => $xls_sql_encoded, 'extra_data'=> 'Total Guests: '.number_format($total_guests, 0, '.', ',')]);
return;
break;
case 'delete' :
return;
break;
endswitch;
?>