Your IP : 216.73.217.117


Current Path : /var/www/cesa.co.za/php/includes/
Upload File :
Current File : /var/www/cesa.co.za/php/includes/TrainingProvider.php

<?php

include_once('BaseTableClass.php');

class TrainingProvider extends BaseTableClass {

    public function checkCreateTable() {
        $tableCreateSQL = "DROP TABLE IF EXISTS `TrainingProviders`;
CREATE TABLE IF NOT EXISTS `TrainingProviders` (
  `ProviderID` int(11) NOT NULL AUTO_INCREMENT,
  `CompanyName` varchar(255) DEFAULT NULL,
  `ContactTitle` varchar(255) DEFAULT NULL,
  `ContactInitials` varchar(255) DEFAULT NULL,
  `ContactFirstName` varchar(255) DEFAULT NULL,
  `ContactSurname` varchar(255) DEFAULT NULL,
  `Designation` varchar(255) DEFAULT NULL,
  `IDNumber` varchar(255) DEFAULT NULL,
  `PhoneNumber` varchar(255) DEFAULT NULL,
  `MobileNumber` varchar(255) DEFAULT NULL,
  `FaxNumber` varchar(255) DEFAULT NULL,
  `EmailAddress` varchar(255) DEFAULT NULL,
  `Password` varchar(255) DEFAULT NULL,
  `PhysicalAddress1` varchar(255) DEFAULT NULL,
  `PhysicalAddress2` varchar(255) DEFAULT NULL,
  `PhysicalCity` varchar(255) DEFAULT NULL,
  `PhysicalCode` varchar(255) DEFAULT NULL,
  `PhysicalProvince` varchar(255) DEFAULT NULL,
  `PhysicalCountry` varchar(255) DEFAULT NULL,
  `PostalAddress1` varchar(255) DEFAULT NULL,
  `PostalAddress2` varchar(255) DEFAULT NULL,
  `PostalCity` varchar(255) DEFAULT NULL,
  `PostalCode` varchar(255) DEFAULT NULL,
  `PostalProvince` varchar(255) DEFAULT NULL,
  `PostalCountry` varchar(255) DEFAULT NULL,
  `Website` varchar(255) DEFAULT NULL,
  `CompanyRegNo` varchar(255) DEFAULT NULL,
  `VATNumber` varchar(255) DEFAULT NULL,
  `BBBEELevel` varchar(255) DEFAULT NULL,
  `CSDNo` varchar(255) DEFAULT NULL,
  `Reference1Company` varchar(255) DEFAULT NULL,
  `Reference1Contact` varchar(255) DEFAULT NULL,
  `Reference1Cell` varchar(255) DEFAULT NULL,
  `Reference1Email` varchar(255) DEFAULT NULL,
  `Reference2Company` varchar(255) DEFAULT NULL,
  `Reference2Contact` varchar(255) DEFAULT NULL,
  `Reference2Cell` varchar(255) DEFAULT NULL,
  `Reference2Email` varchar(255) DEFAULT NULL,
  `Reference3Company` varchar(255) DEFAULT NULL,
  `Reference3Contact` varchar(255) DEFAULT NULL,
  `Reference3Cell` varchar(255) DEFAULT NULL,
  `Reference3Email` varchar(255) DEFAULT NULL,
  `InterestWebinar` char(1) DEFAULT NULL,
  `InterestClassroom` char(1) DEFAULT NULL,
  `InterestVideo` char(1) DEFAULT NULL,
  `InterestPublications` char(1) DEFAULT NULL,
  `DateUpdated` datetime DEFAULT NULL,
  `UpdatedBy` varchar(255) DEFAULT NULL,
  `Archived` tinyint(1) NOT NULL DEFAULT 0,
  PRIMARY KEY (`ProviderID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;

--
-- Triggers `TrainingProviders`
--
DROP TRIGGER IF EXISTS `trg_TrainingProviders_after_delete`;
DELIMITER $$
CREATE TRIGGER `trg_TrainingProviders_after_delete` AFTER DELETE ON `TrainingProviders` FOR EACH ROW BEGIN
    INSERT INTO ErrorLog (errmessage, is_info, must_report, created_at, updated_at)
    VALUES (
        CONCAT('Training Provider record deleted: ProviderID: ', OLD.`ProviderID`, '; ContactFirstName: ', OLD.`ContactFirstName`, '; ContactTitle: ', 
            OLD.`ContactTitle`, '; ContactInitials: ', OLD.`ContactInitials`, '; ContactFirstName: ', OLD.`ContactFirstName`, '; ContactSurname: ', 
            OLD.`ContactSurname`, '; IDNumber: ', OLD.`IDNumber`, '; MobileNumber: ', OLD.`MobileNumber`, '; EmailAddress: ', OLD.`EmailAddress`), 1, 1, NOW(), 
            NOW()
        );";
    }

    /**
     * Find training provider by company name
     * @param string $companyName
     * @return array|false
     */
    public function findByCompanyName($companyName) {
        global $conni;
        $companyName = mysqli_real_escape_string($conni, $companyName);
        $sql = "SELECT * FROM TrainingProviders WHERE CompanyName = '" . $companyName . "' AND (Archived = 0 OR Archived IS NULL) LIMIT 1";
        return $this->sqlf->getRow($sql);
    }

    /**
     * Get select list array for training providers
     * @return array
     */
    public function getSelectList() {
        $sql = "SELECT ProviderID, CompanyName FROM TrainingProviders WHERE (Archived = 0 OR Archived IS NULL) ORDER BY CompanyName";
        $result = $this->sqlf->getAll($sql);
        $trainingProviders = array();
        if (is_array($result)) {
            foreach ($result as $row) {
                $trainingProviders[$row['CompanyName']] = $row['ProviderID'];
            }
        }
        return $trainingProviders;
    }
}

function trainingProviderListOptionsLoad(&$objThis)
{
    // Add custom column for documents
    $objThis->ListOptions->Add("documentSummary");
    $objThis->ListOptions->Items["documentSummary"]->CssClass = "text-nowrap";
    $objThis->ListOptions->Items["documentSummary"]->Visible = true;
}

function trainingProviderListOptionsRendering(&$objThis)
{

    global $sqlf, $TrainingProviders;

    // TODO: Print the properties of the $objThis->ProviderID object
    // echo '<pre>';
    // print_r($TrainingProviders->ProviderID);
    // echo '</pre>';

    $docString = '';

    if ($TrainingProviders->ProviderID->CurrentValue > 0) {
        $trainingProviderDocObj = new TrainingProviderDoc($sqlf);
        $trainingProviderBEEDocs = $trainingProviderDocObj->getByProviderID($TrainingProviders->ProviderID->CurrentValue, 'B-BBEE certificate');

        if (is_array($trainingProviderBEEDocs) && count($trainingProviderBEEDocs) > 0) {

            if (strlen($trainingProviderBEEDocs[0]['DateIssued']) > 0 && strlen($trainingProviderBEEDocs[0]['DocFile']) > 0) {
                $docDateIssued = new DateTime($trainingProviderBEEDocs[0]['DateIssued']);
                $docString = '<span class="phpmaker"><a 
                    href="/echasl23/providerdocs/' . $trainingProviderBEEDocs[0]['DocFile'] . '" 
                    target="_blank">' . $trainingProviderBEEDocs[0]['DocType']
                    . ' (' . $docDateIssued->format('d-m-Y') . ')</a></span>';
                $docString = $docDateIssued->format('d-m-Y');
            } else {
                $docString = 'No B-BBEE date issued';
            }
        } else {
            $docString = 'No B-BBEE doc found';
        }
    }

    $objThis->ListOptions->Items["documentSummary"]->Body = $docString
        // . "<button type='button' class='btn btn-primary btn-sm' 
        // onclick='showDocs(\"" . $TrainingProviders->ProviderID->CurrentValue . "\")'><i class='fas fa-file-alt'></i> 
        // View Docs</button>"
    ;
}

function trainingProviderListPageHead(&$objThis)
{
    // Add modal HTML
?>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
    <div class="modal fade" id="docsModal" tabindex="-1" role="dialog" style="display: none;">
        <div class="modal-dialog modal-lg" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title">Training Provider Documents</h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
                <div class="modal-body" id="docsContent">
                    Loading...
                </div>
            </div>
        </div>
    </div>
<?php
}

function trainingProviderListPageFooter(&$objThis)
{
    // Add JavaScript for handling the modal
?>
    <script>
        function showDocs(id) {
            $('#docsModal').modal('show');
            $.ajax({
                url: '/echasl23/ajax/get_provider_docs.php',
                type: 'POST',
                data: {
                    provider_id: id
                },
                success: function(response) {
                    $('#docsContent').html(response);
                },
                error: function() {
                    $('#docsContent').html('Error loading documents');
                }
            });
        }
    </script>
<?php
}