/home/edulekha/crm.edulekha.com/modules/appointly/views/lead_appointments.php
<?php defined('BASEPATH') or exit('No direct script access allowed'); ?>
<script>
    $(function() {
        // Status filter functionality
        $('.status-filter').click(function() {
            $('.status-filter').removeClass('active');
            $(this).addClass('active');

            var status = $(this).data('status');
            if (status === 'all') {
                $('.lead-appointments-table tr').show();
            } else {
                $('.lead-appointments-table tr').hide();
                $('.lead-appointments-table tr[data-status="' + status + '"]').show();
                $('.lead-appointments-table thead tr').show();
            }
        });
    });

    function deleteAppointmentFromProfile(appointmentId, element) {
        if (confirm("<?= str_replace('"', '\\"', _l('appointment_are_you_sure')); ?>")) {
            $.ajax({
                url: admin_url + "appointly/appointments/delete/" + appointmentId,
                type: "POST",
                dataType: "json",
                data: {
                    <?= $this->security->get_csrf_token_name(); ?>: "<?= $this->security->get_csrf_hash(); ?>"
                },
                beforeSend: function() {
                    $(element).prop("disabled", true).html("<i class=\"fa fa-spinner fa-spin\"></i>");
                },
                success: function(response) {
                    if (response && response.success) {
                        alert_float("success", response.message || "<?= str_replace('"', '\\"', _l('appointment_deleted')); ?>");
                        // Remove the row from the table
                        $(element).closest("tr").fadeOut(300, function() {
                            $(this).remove();
                            // Check if table is empty and show message
                            if ($("table tbody tr:visible").length === 0) {
                                location.reload(); // Reload to show "no appointments" message
                            }
                        });
                    } else {
                        console.error('Error deleting appointment: ' + response);
                        $(element).prop("disabled", false).html("<i class=\"fa fa-trash\"></i>");
                    }
                }
            });
        }
    }
</script>
<!-- Lead Appointments Table -->
<div class="panel_s">
    <div class="panel-body">
        <div class="tw-mb-4 tw-flex tw-justify-between tw-items-center">
            <!-- Quick filter buttons -->
            <div class="btn-group">
                <button type="button" class="btn btn-default btn-sm status-filter active" data-status="all">
                    <?= _l('all'); ?>
                </button>
                <button type="button" class="btn btn-default btn-sm status-filter" data-status="pending">
                    <?= _l('appointment_status_pending'); ?>
                </button>
                <button type="button" class="btn btn-default btn-sm status-filter" data-status="in-progress">
                    <?= _l('appointment_status_in-progress'); ?>
                </button>
                <button type="button" class="btn btn-default btn-sm status-filter" data-status="completed">
                    <?= _l('appointment_status_completed'); ?>
                </button>
                <button type="button" class="btn btn-default btn-sm status-filter" data-status="cancelled">
                    <?= _l('appointment_status_cancelled'); ?>
                </button>
            </div>

            <!-- New appointment button for lead -->
            <a href="<?= admin_url('appointly/appointments/create_page?rel_type=lead_related&rel_id=' . $lead->id); ?>" class="btn btn-primary">
                <i class="fa fa-plus tw-mr-1"></i> <?= _l('appointment_new_appointment'); ?>
            </a>
        </div>

        <?php if (count($appointments) > 0) { ?>
            <div class="table-responsive lead-appointments-table">
                <table class="table dt-table" data-order-col="1" data-order-type="desc">
                    <thead>
                        <tr>
                            <th><?= _l('appointment_date_and_time'); ?></th>
                            <th><?= _l('appointment_status'); ?></th>
                            <th><?= _l('appointment_service'); ?></th>
                            <th><?= _l('appointment_provider'); ?></th>
                            <th><?= _l('appointment_initiated_by'); ?></th>
                            <th><?= _l('options'); ?></th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php foreach ($appointments as $appointment) { ?>
                            <tr data-status="<?= $appointment['status']; ?>">
                                <!-- Date and Time -->
                                <td>
                                    <div class="tw-flex tw-items-center">
                                        <?php
                                        // Get date status class
                                        $timestamp = strtotime($appointment['date'] . ' ' . $appointment['start_hour']);
                                        $now = time();
                                        $diff = $timestamp - $now;

                                        if ($diff < 0) {
                                            $dateClass = 'tw-bg-red-500';
                                        } elseif ($diff < 24 * 3600) {
                                            $dateClass = 'tw-bg-amber-500';
                                        } elseif ($diff < 7 * 24 * 3600) {
                                            $dateClass = 'tw-bg-blue-500';
                                        } else {
                                            $dateClass = 'tw-bg-green-500';
                                        }
                                        ?>
                                        <span class="tw-w-2 tw-h-2 tw-rounded-md <?= $dateClass ?> tw-mr-2"></span>
                                        <span class="tw-text-sm"><?= _dt($appointment['date'] . ' ' . $appointment['start_hour']); ?></span>
                                    </div>
                                </td>

                                <!-- Status -->
                                <td>
                                    <?php
                                    // Determine status class
                                    $statusClass = '';
                                    $statusText = '';

                                    switch ($appointment['status']) {
                                        case 'cancelled':
                                            $statusClass = 'tw-bg-danger-200 tw-text-danger-700';
                                            $statusText = _l('appointment_status_cancelled');
                                            break;
                                        case 'completed':
                                            $statusClass = 'tw-bg-success-50 tw-text-success-700';
                                            $statusText = _l('appointment_status_completed');
                                            break;
                                        case 'in-progress':
                                            $statusClass = 'tw-bg-primary-50 tw-text-primary-700';
                                            $statusText = _l('appointment_status_in-progress');
                                            break;
                                        case 'confirmed':
                                        case 'approved':
                                            $statusClass = 'tw-bg-success-50 tw-text-success-700';
                                            $statusText = _l('appointment_approved');
                                            break;
                                        case 'pending':
                                            $statusClass = 'tw-bg-warning-50 tw-text-warning-700';
                                            $statusText = _l('appointment_status_pending');
                                            break;
                                        case 'no-show':
                                            $statusClass = 'tw-bg-danger-200 tw-text-danger-700';
                                            $statusText = _l('appointment_status_no-show');
                                            break;
                                        default:
                                            $statusClass = 'tw-bg-neutral-50 tw-text-neutral-700';
                                            $statusText = ucfirst(str_replace('-', ' ', $appointment['status']));
                                    }

                                    echo '<div class="tw-inline-block">
                                        <span class="tw-px-3 tw-py-1 tw-text-sm tw-font-medium tw-rounded-md ' . $statusClass . '">
                                            ' . $statusText . '
                                        </span>
                                    </div>';
                                    ?>
                                </td>

                                <!-- Service -->
                                <td>
                                    <?php if (!empty($appointment['service_id'])):
                                        $CI = &get_instance();
                                        $service_name = get_service_name($appointment['service_id']);
                                        $CI->db->select('color');
                                        $CI->db->where('id', $appointment['service_id']);
                                        $service = $CI->db->get(db_prefix() . 'appointly_services')->row();
                                        $serviceClass = !empty($service) ? $service->color : '#3B82F6';
                                    ?>
                                        <a href="<?= admin_url('appointly/services/service/' . $appointment['service_id']); ?>" class="text-primary">
                                            <span class="tw-px-2 tw-py-1 tw-text-xs tw-rounded-md tw-text-white" style="background-color: <?= $serviceClass; ?>;">
                                                <?= $service_name; ?>
                                            </span>
                                        </a>
                                    <?php else: ?>
                                        <span class="tw-px-2 tw-py-1 tw-text-xs tw-font-medium tw-rounded-md tw-bg-neutral-50 tw-text-neutral-700">N/A</span>
                                    <?php endif; ?>
                                </td>

                                <!-- Provider -->
                                <td>
                                    <?php if (!empty($appointment['provider_id'])):
                                        $provider = get_staff($appointment['provider_id']);
                                        $provider_name = $provider ? $provider->firstname . ' ' . $provider->lastname : 'N/A';
                                    ?>
                                        <div class="tw-flex tw-items-center">
                                            <a href="<?= admin_url('staff/profile/' . $appointment['provider_id']); ?>" class="text-primary">
                                                <span class="tw-text-sm tw-font-medium"><?= $provider_name; ?></span>
                                            </a>
                                        </div>
                                    <?php else: ?>
                                        <span class="tw-px-2 tw-py-1 tw-text-xs tw-font-medium tw-rounded-md tw-bg-neutral-50 tw-text-neutral-700">N/A</span>
                                    <?php endif; ?>
                                </td>

                                <!-- Organizer (created by) -->
                                <td>
                                    <?php if (!empty($appointment['created_by'])):
                                        $creator = get_staff($appointment['created_by']);
                                        $creator_name = $creator ? $creator->firstname . ' ' . $creator->lastname : 'N/A';
                                    ?>
                                        <div class="tw-flex tw-items-center">
                                            <a href="<?= admin_url('staff/profile/' . $appointment['created_by']); ?>" class="text-primary">
                                                <span class="tw-text-sm tw-font-medium"><?= $creator_name; ?></span>
                                            </a>
                                        </div>
                                    <?php else: ?>
                                        <span class="tw-px-2 tw-py-1 tw-text-xs tw-font-medium tw-rounded-md tw-bg-neutral-50 tw-text-neutral-700">N/A</span>
                                    <?php endif; ?>
                                </td>

                                <!-- Options -->
                                <td>
                                    <a href="<?= admin_url('appointly/appointments/view?appointment_id=' . $appointment['id']); ?>" class="btn btn-default btn-icon" title="<?= _l('view'); ?>" data-toggle="tooltip">
                                        <i class="fa fa-eye"></i>
                                    </a>
                                    <?php if (staff_can('delete', 'appointments') || $appointment['created_by'] == get_staff_user_id()): ?>
                                        <button type="button" class="btn btn-danger btn-icon" onclick="deleteAppointmentFromProfile(<?= $appointment['id']; ?>, this)" title="<?= _l('delete'); ?>" data-toggle="tooltip">
                                            <i class="fa fa-trash"></i>
                                        </button>
                                    <?php endif; ?>
                                </td>
                            </tr>
                        <?php } ?>
                    </tbody>
                </table>
            </div>
        <?php } else { ?>
            <div class="alert alert-info">
                <div class="tw-flex tw-flex-col tw-items-center tw-justify-center tw-py-4">
                    <p class="tw-mb-4"><?= _l('no_appointments_found'); ?></p>
                    <p class="tw-mb-4"><?= _l('would_you_like_to_create_new_appointment_for_lead'); ?></p>
                    <a href="<?= admin_url('appointly/appointments/create_page?rel_type=lead_related&rel_id=' . $lead->id); ?>" class="btn btn-primary">
                        <i class="fa fa-calendar-plus-o tw-mr-1"></i> <?= _l('appointment_new_appointment'); ?>
                    </a>
                </div>
            </div>
        <?php } ?>
    </div>
</div>