Your IP : 216.73.217.79


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

<?php

/*
 * Contact otto@igotafrica.com for details
 */

include_once('BaseTableClass.php');

/**
 * Control the AD Member Firms table
 *
 * @author Otto Saayman
 */
class ADec_tblMemberFirms extends BaseTableClass
{

    public function getAll($year = 0)
    {

        if ($year <= 0) {
            $year = date('Y');
        }

        return $this->sqlf->getAll("SELECT * FROM ADec_tblMemberFirms WHERE DeclarationYear = " . $year);
    }

    public function getPIUnderwriters()
    {
        return $this->sqlf->getAll("SELECT DISTINCT PIUnderwriter FROM ADec_tblMemberFirms ORDER BY PIUnderwriter");
    }

    public function getPIUnderwritersSelectArray()
    {

        $objects = $this->getPIUnderwriters();
        $return = array();

        foreach ($objects as $object) {
            $return[$object['PIUnderwriter']] = $object['PIUnderwriter'];
        }

        $return['Other'] = 'Other';

        //        var_dump($return);
        //        exit;

        return $return;
    }

    public function getOrCreate($firmId, $declarationYear)
    {

        $testSQL = "SELECT * FROM ADec_tblMemberFirms WHERE Prev_FirmID = $firmId AND DeclarationYear = $declarationYear";

        if (false && $_SESSION["username"] == 'cesatesting') {
            echo '<p>Please ignore debug info: <textarea cols=30>' . $testSQL . '</textarea></p>';
            exit;
        }

        $checkFirm = $this->sqlf->getRow($testSQL);

        if (!is_array($checkFirm) || count($checkFirm) <= 0) {

            $checkFirm = array(
                'Prev_FirmID' => $firmId,
                'DeclarationYear' => $declarationYear,
            );

            $result = $this->sqlf->autoExecute('ADec_tblMemberFirms', $checkFirm, 'INSERT');

            if (true && $_SESSION["username"] == 'cesatesting') {
                echo '<p>Please ignore debug info: <textarea cols=30>' . print_r($result, true) . '</textarea></p>';
                exit;
                //                ini_set('display_errors', 1);
                //                error_reporting(E_ALL);
            }
        }

        $testSQL = "SELECT * FROM ADec_tblMemberFirms WHERE Prev_FirmID = $firmId AND DeclarationYear = $declarationYear";

        $checkFirm = $this->sqlf->getRow($testSQL);

        if (!is_array($checkFirm) || count($checkFirm) <= 0 || !isset($checkFirm['FirmName']) || $checkFirm['FirmName'] == '') {

            $memberFirmObj = new MemberFirm($this->sqlf);
            $memberFirm = $memberFirmObj->find($firmId);

            $checkFirm = array(
                'FirmID' => $checkFirm['FirmID'],
                'FirmName' => $memberFirm['FirmName'],
                'FormOfIncorporation' => $memberFirm['FormOfIncorporation'],
                'DateJoined' => $memberFirm['DateJoined'],
                'DateTerminated' => $memberFirm['DateTerminated'],
                'DirectoryLastUpdate' => $memberFirm['DirectoryLastUpdate'],
                'EntryType' => $memberFirm['EntryType'],
                'PageRef' => $memberFirm['PageRef'],
                'LogoReceived' => $memberFirm['LogoReceived'],
                'Photographs' => $memberFirm['Photographs'],
                'RunOns' => $memberFirm['RunOns'],
                'OrderNumber' => $memberFirm['OrderNumber'],
                'InvoiceNumber' => $memberFirm['InvoiceNumber'],
                'PaymentReceived' => $memberFirm['PaymentReceived'],
                'DeclarationReceived' => $memberFirm['DeclarationReceived'],
                'MemberStatus' => $memberFirm['MemberStatus'],
                'Acoustics' => $memberFirm['Acoustics'],
                'Agricultural' => $memberFirm['Agricultural'],
                'BuildingServices' => $memberFirm['BuildingServices'],
                'Chemical' => $memberFirm['Chemical'],
                'Civil' => $memberFirm['Civil'],
                'Development' => $memberFirm['Development'],
                'Electrical' => $memberFirm['Electrical'],
                'Electronic' => $memberFirm['Electronic'],
                'Environmental' => $memberFirm['Environmental'],
                'Geotechnical' => $memberFirm['Geotechnical'],
                'Industrial' => $memberFirm['Industrial'],
                'Mechanical' => $memberFirm['Mechanical'],
                'Marine' => $memberFirm['Marine'],
                'Mining' => $memberFirm['Mining'],
                'Process' => $memberFirm['Process'],
                'Structural' => $memberFirm['Structural'],
                'Transportation' => $memberFirm['Transportation'],
                'Architecture' => $memberFirm['Architecture'],
                'RuralDevelopment' => $memberFirm['RuralDevelopment'],
                'ProjectManagement' => $memberFirm['ProjectManagement'],
                'QuantitySurveying' => $memberFirm['QuantitySurveying'],
                'TownPlanning' => $memberFirm['TownPlanning'],
                'Multidisciplinary' => $memberFirm['Multidisciplinary'],
                'DisputeResolution' => $memberFirm['DisputeResolution'],
                'ExpertWitness' => $memberFirm['ExpertWitness'],
                'InformationSystems' => $memberFirm['InformationSystems'],
                'FacilitiesManagement' => $memberFirm['FacilitiesManagement'],
                'GIS' => $memberFirm['GIS'],
                'PIUnderwriter' => $memberFirm['PIUnderwriter'],
                'LevelOfCover' => $memberFirm['LevelOfCover'],
                'LevelOfCoverShort' => $memberFirm['LevelOfCoverShort'],
                'Quality Management' => $memberFirm['Quality Management'],
                'Date of last peer review' => $memberFirm['Date of last peer review'],
                'URL' => $memberFirm['URL'],
                'DocumentAccess' => $memberFirm['DocumentAccess'],
                'QualityMxSystem' => $memberFirm['QualityMxSystem'],
                'ExportDivision' => $memberFirm['ExportDivision'],
                'Active' => $memberFirm['Active'],
                'School' => $memberFirm['School'],
                'LNumber' => $memberFirm['LNumber'],
                'ExistingOrExperience' => $memberFirm['ExistingOrExperience'],
                'SeekingToExportTo' => $memberFirm['SeekingToExportTo'],
                'QMSPlan' => $memberFirm['QMSPlan'],
                'QMSDocs' => $memberFirm['QMSDocs'],
                'QMSISOComply' => $memberFirm['QMSISOComply'],
                'QMSISOCert' => $memberFirm['QMSISOCert'],
                'QMSISOCertDate' => $memberFirm['QMSISOCertDate'],
                'QMSOffices' => $memberFirm['QMSOffices'],
                'QMSConsult' => $memberFirm['QMSConsult'],
                'QMSCertBody' => $memberFirm['QMSCertBody'],
                'AcousticsName' => $memberFirm['AcousticsName'],
                'AgriculturalName' => $memberFirm['AgriculturalName'],
                'BuildingServicesName' => $memberFirm['BuildingServicesName'],
                'ChemicalName' => $memberFirm['ChemicalName'],
                'CivilName' => $memberFirm['CivilName'],
                'DevelopmentName' => $memberFirm['DevelopmentName'],
                'ElectricalName' => $memberFirm['ElectricalName'],
                'ElectronicName' => $memberFirm['ElectronicName'],
                'EnvironmentalName' => $memberFirm['EnvironmentalName'],
                'GeotechnicalName' => $memberFirm['GeotechnicalName'],
                'IndustrialName' => $memberFirm['IndustrialName'],
                'MechanicalName' => $memberFirm['MechanicalName'],
                'MarineName' => $memberFirm['MarineName'],
                'MiningName' => $memberFirm['MiningName'],
                'ProcessName' => $memberFirm['ProcessName'],
                'StructuralName' => $memberFirm['StructuralName'],
                'TransportationName' => $memberFirm['TransportationName'],
                'ArchitectureName' => $memberFirm['ArchitectureName'],
                'RuralDevelopmentName' => $memberFirm['RuralDevelopmentName'],
                'ProjectManagementName' => $memberFirm['ProjectManagementName'],
                'QuantitySurveyingName' => $memberFirm['QuantitySurveyingName'],
                'TownPlanningName' => $memberFirm['TownPlanningName'],
                'MultidisciplinaryName' => $memberFirm['MultidisciplinaryName'],
                'DisputeResolutionName' => $memberFirm['DisputeResolutionName'],
                'ExpertWitnessName' => $memberFirm['ExpertWitnessName'],
                'InformationSystemsName' => $memberFirm['InformationSystemsName'],
                'FacilitiesManagementName' => $memberFirm['FacilitiesManagementName'],
                'GISName' => $memberFirm['GISName'],
                'MainFirmInvoice' => $memberFirm['MainFirmInvoice'],
                'GroupFirmsInvoice' => $memberFirm['GroupFirmsInvoice'],
                'QMSImplemented' => $memberFirm['QMSImplemented'],
                'QMSImplFully' => $memberFirm['QMSImplFully'],
                'QMSImplPart' => $memberFirm['QMSImplPart'],
                'QMSAssess' => $memberFirm['QMSAssess'],
                'QMSUseConsult' => $memberFirm['QMSUseConsult'],
                'QMSIntend' => $memberFirm['QMSIntend'],
                'MentoringProg' => $memberFirm['MentoringProg'],
                'CandidateProg' => $memberFirm['CandidateProg'],
                'SubscriptionsContact' => $memberFirm['SubscriptionsContact'],
                'SubscriptionsEmail' => $memberFirm['SubscriptionsEmail'],
                'HRTrainingContact' => $memberFirm['HRTrainingContact'],
                'HRTrainingEmail' => $memberFirm['HRTrainingEmail'],
                'MarketingContact' => $memberFirm['MarketingContact'],
                'MarketingEmail' => $memberFirm['MarketingEmail'],
                'CAUSigned' => $memberFirm['CaUSigned'],
                'BBBEE' => $memberFirm['BBBEE'],
                'YPFContact' => $memberFirm['YPFContact'],
                'YPFEmail' => $memberFirm['YPFEmail'],
                'SMME' => $memberFirm['SMME'],
                'SMMEAmount' => $memberFirm['ThreeYearsAverageTurnover'],
                'BlackOwned' => $memberFirm['BlackOwned'],
                'BlackWomenOwned' => $memberFirm['BlackWomenOwned'],
                'WomenOwned' => $memberFirm['WomenOwned'],
                'BBBEELevel' => $memberFirm['BBBEELevel'],
                'SustainabilityPolicy' => $memberFirm['SustainabilityPolicy'],
                'SustainabilityIssues' => $memberFirm['SustainabilityIssues'],
                'SustainabilityProcess' => $memberFirm['SustainabilityProcess'],
                'SustainabilityChampion' => $memberFirm['SustainabilityChampion'],
                'SustainabilityChampName' => $memberFirm['SustainabilityChampName'],
                'SustainabilityFramework' => $memberFirm['SustainabilityFramework'],
                'SustainabilityDiscussed' => $memberFirm['SustainabilityDiscussed'],
                'SustainabilityIndicator1' => $memberFirm['SustainabilityIndicator1'],
                'SustainabilityIndicator2' => $memberFirm['SustainabilityIndicator2'],
                'SustainabilityIndicator3' => $memberFirm['SustainabilityIndicator3'],
                'SustainabilityIndicator4' => $memberFirm['SustainabilityIndicator4'],
                'SustainabilityIndicator5' => $memberFirm['SustainabilityIndicator5'],
                'QMIG' => $memberFirm['QMIG'],
                'QMSChampion' => $memberFirm['QMSChampion'],
                'QMSChampName' => $memberFirm['QMSChampName'],
                'QMSChampEmail' => $memberFirm['QMSChampEmail'],
                'SustainabilityChampEmail' => $memberFirm['SustainabilityChampEmail'],
                'ProcurementContact' => $memberFirm['ProcurementContact'],
                'ProcurementEmail' => $memberFirm['ProcurementEmail'],
                'SubscriptionsTel' => $memberFirm['SubscriptionsTel'],
                'HRTrainingTel' => $memberFirm['HRTrainingTel'],
                'MarketingTel' => $memberFirm['MarketingTel'],
                'ProcurementTel' => $memberFirm['ProcurementTel'],
                'YPFContactTel' => $memberFirm['YPFContactTel'],
                'BlackWomenOwned' => $memberFirm['BlackWomenOwned'],
                'SABTACO' => $memberFirm['SABTACO'],
                'BBCBE' => $memberFirm['BBCBE'],
                'GBCSA' => $memberFirm['GBCSA'],
                'TotalStaff' => $memberFirm['TotalStaff'],
                'DeclarationYear' => $declarationYear,
            );

            //            echo '<h4>System is undergoing maintenance. Please check back later.</h4>';
            //            var_dump($checkFirm);
            //            exit;

            $this->sqlf->autoExecute('ADec_tblMemberFirms', $checkFirm, 'UPDATE', 'FirmID = ' . $checkFirm['FirmID'], 'FirmID');
        }

        $memberOfficesObj = new MemberFirmOffice($this->sqlf);
        $aDecMemberOfficesObj = new ADec_tblMemberFirmOffices($this->sqlf);
        $memberOffices = $memberOfficesObj->findByFirmID($firmId);
        $aDecMemberOffices = $aDecMemberOfficesObj->findByFirmIDYear($checkFirm['FirmID'], $declarationYear);

        // echo '<h4>System is undergoing maintenance. Please check ignore the debug information below.</h4>';
        // echo count($memberOffices) . ' - ' . count($aDecMemberOffices) . '<br />';

        if (is_array($memberOffices) && count($memberOffices) > 0 && (!is_array($aDecMemberOffices) || count($aDecMemberOffices) <= 0)) {

            foreach ($memberOffices as $memberOffice) {

                $aDecMemberOffice = $memberOffice;
                $aDecMemberOffice['Prev_OfficeID'] = $memberOffice['OfficeID'];
                $aDecMemberOffice['Prev_FirmID'] = $firmId;
                $aDecMemberOffice['FirmID'] = $checkFirm['FirmID'];
                $aDecMemberOffice['DeclarationYear'] = $declarationYear;
                unset($aDecMemberOffice['OfficeID']);

                // var_dump($aDecMemberOffice);
                //                exit;

                $this->sqlf->autoExecute('ADec_tblMemberFirmOffices', $aDecMemberOffice, 'INSERT');
            }
        } //if
        //        exit;

        $memberFirmSkillObj = new ADec_tblMemberFirmSkills($this->sqlf);
        $memberFirmSkillObj->getOrCreate($checkFirm['FirmID'], $firmId, $declarationYear);
    }

    public static function getBlackOwnedValue($valIn)
    {

        $valOut = '';

        switch ($valIn) {
            case '≥10%<25%':
                $valOut = 'Equal to or greater than 10 and less than 25%';
                break;
            case 'Equal to or greater than 10 and less than 25':
                $valOut = 'Equal to or greater than 10 and less than 25%';
                break;
            case 'Equal to or greater than 10 and less than 25%':
                $valOut = 'Equal to or greater than 10 and less than 25%';
                break;
            case '≥25%<51%':
                $valOut = 'Equal to or greater than 25 and less than 51%';
                break;
            case 'Equal to or greater than 25 and less than 51':
                $valOut = 'Equal to or greater than 25 and less than 51%';
                break;
            case 'Equal to or greater than 25 and less than 51%':
                $valOut = 'Equal to or greater than 25 and less than 51%';
                break;
            case '≥51%<100%':
                $valOut = 'Equal to or greater than 51 and less than 100%';
                break;
            case 'Equal to or greater than 51 and less than 100':
                $valOut = 'Equal to or greater than 51 and less than 100%';
                break;
            case 'Equal to or greater than 51 and less than 100%':
                $valOut = 'Equal to or greater than 51 and less than 100%';
                break;
            case '100%':
                $valOut = '100%';
                break;
            case 'Equal to 100':
                $valOut = '100%';
                break;
            default:
                $valOut = 'Less than 10%';
                break;
        }

        return $valOut;
    }

    public static function getAnnualTurnoverValue($valIn, $turnOverValue = 0)
    {

        if ($turnOverValue > 0) {

            if ($turnOverValue < 3000000) {
                return 'EME1';
            } elseif ($turnOverValue < 6000000) {
                return 'EME2';
            } elseif ($turnOverValue < 10000000) {
                return 'QSE1';
            } elseif ($turnOverValue < 15000000) {
                return 'QSE2';
            } elseif ($turnOverValue < 20000000) {
                return 'QSE3';
            } elseif ($turnOverValue < 25000000) {
                return 'QSE4';
            } elseif ($turnOverValue < 35000000) {
                return 'GEN1';
            } elseif ($turnOverValue < 50000000) {
                return 'GEN2';
            } elseif ($turnOverValue < 60000000) {
                return 'GEN3';
            } elseif ($turnOverValue < 70000000) {
                return 'GEN4';
            } elseif ($turnOverValue < 80000000) {
                return 'GEN5';
            } elseif ($turnOverValue < 90000000) {
                return 'GEN6';
            } elseif ($turnOverValue < 100000000) {
                return 'GEN7';
            }

            return 'GEN8';
        }

        $valOut = 'EME1';
        $valArr = explode(' ', $valIn);

        if (is_array($valArr) && count($valArr) > 0) {
            $valOut = $valArr[0];
        }

        return $valOut;
    }

    public static function getBlackWomenOwnedValue($valIn)
    {

        $valOut = 'Less than 30%';

        switch ($valIn) {
            case '≥30%<51%':
                $valOut = 'Equal to or greater than 30 and less than 51%';
                break;
            case 'Equal to or greater than 30 and less than 51':
                $valOut = 'Equal to or greater than 30 and less than 51%';
                break;
            case 'Equal to or greater than 30 and less than 51%':
                $valOut = 'Equal to or greater than 30 and less than 51%';
                break;
            case '≥51%<100%':
                $valOut = 'Equal to or greater than 50 and less than 100%';
                break;
            case 'Equal to or greater than 50 and less than 100':
                $valOut = 'Equal to or greater than 50 and less than 100%';
                break;
            case 'Equal to or greater than 50 and less than 100%':
                $valOut = 'Equal to or greater than 50 and less than 100%';
                break;
            case '≥100%':
                $valOut = '100%';
                break;
            case 'Less than 10%':
                $valOut = 'Less than 10%';
                break;
            case 'Equal to or greater than 10 and less than 30%':
                $valOut = 'Equal to or greater than 10 and less than 30%';
                break;
            case 'Equal to or greater than 51 and less than 100%':
                $valOut = 'Equal to or greater than 51 and less than 100%';
                break;
            case '100%':
                $valOut = '100%';
                break;
        }

        return $valOut;
    }

    /**
     * Count the number of results captured for the current year
     */
    public function countResultsCaptured($declarationYear): int
    {
        $sql = "SELECT COUNT(*) as Cntr FROM ADec_tblMemberFirms mf
            INNER JOIN ADec_Done_Local dl ON mf.FirmID = dl.RefID AND dl.RefType = 'FirmID' 
                AND dl.RefDoc IN ('UPDATED') AND YEAR(dl.ADecDate) = $declarationYear";

        // echo $sql;

        $result = $this->sqlf->getRow($sql);

        if (is_array($result) && count($result) > 0) {
            return $result['Cntr'];
        }

        return 0;
    }
}