| Current Path : /var/www/v3.cesa.co.za/src/MemberBundle/Repository/ |
| Current File : /var/www/v3.cesa.co.za/src/MemberBundle/Repository/ADecMemberFirmRepository.php |
<?php
namespace App\MemberBundle\Repository;
use App\MemberBundle\Entity\ADecMemberFirm;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\ORM\Query\ResultSetMappingBuilder;
use Doctrine\Persistence\ManagerRegistry;
/**
* @extends ServiceEntityRepository<ADecMemberFirm>
*
* @method ADecMemberFirm|null find($id, $lockMode = null, $lockVersion = null)
* @method ADecMemberFirm|null findOneBy(array $criteria, array $orderBy = null)
* @method ADecMemberFirm[] findAll()
* @method ADecMemberFirm[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class ADecMemberFirmRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, ADecMemberFirm::class);
}
public function findOneByLiveFirmAndDeclarationYear(int $liveFirmId, int $year): ?ADecMemberFirm
{
return $this->findOneBy([
'prev_firm_id' => (string) $liveFirmId,
'declaration_year' => $year,
]);
}
/**
* Get the list of IDs
* @return array
*/
public function findAllIds()
{
return $this->createQueryBuilder('mf')
->select('mf.id')
// ->where('ma.cancelled = 0 OR ma.cancelled IS NULL')
// ->setMaxResults(100)
->getQuery()->getArrayResult()
;
}
/**
* Get the list of IDs
* @return array
*/
public function getList($year = null)
{
if (!is_null($year) && $year != 'members') {
$conn = $this->getEntityManager()->getConnection();
$tableName = 'ADec_tblMemberFirms_' . $year;
$transformationTableName = 'ADec_Transformation_' . $year;
$doneTableName = 'ADec_Done_Local_' . $year;
$whereClause = '';
if ($year > 2023) {
$tableName = 'ADec_tblMemberFirms';
$transformationTableName = 'ADec_Transformation';
$doneTableName = 'ADec_Done_Local';
$whereClause = ' AND mf.DeclarationYear = ' . $year . ' AND (mt.DeclarationYear IS NULL OR mt.DeclarationYear = ' . $year . ') ';
}
if ($year <= 2016) {
$transformationTableName = 'ADec_Transformation_2017';
}
$sql = "SELECT mf.*, mt.*,
(SELECT MAX(ADecID) AS ADecID
FROM " . $doneTableName . " dt
WHERE dt.RefID = mf.FirmID
AND dt.RefType = 'FirmID'
AND dt.RefDoc = 'UPDATED'
AND YEAR(dt.ADecDate) = " . $year . ") AS ADecID,
(SELECT BlackWomenOwned
FROM `ADec_tblMemberFirms` mf2
WHERE mf2.DeclarationYear = $year
AND mf2.Prev_FirmID = mf.Prev_FirmID) AS BlackWomenOwnedVal
FROM " . $tableName . " mf
LEFT OUTER JOIN " . $transformationTableName . " mt ON mf.FirmID = mt.FirmID
WHERE mf.MemberStatus IN ('Member', 'RETIRED') "
. $whereClause
. " ORDER BY mf.FirmName ASC";
// echo $sql . '<br /><br />';
$resultSet = $conn->executeQuery($sql);
return $resultSet->fetchAllAssociative();
} else {
return $this->createQueryBuilder('mf')->where('mf.member_status IN (:memberStatus)')->setParameter('memberStatus', ['Member'])->getQuery()->getArrayResult();
}
// else {
//
// $conn = $this->getEntityManager()->getConnection();
//
// $sql = "SELECT * FROM adec_tblmemberfirms WHERE Prev_FirmID IN (SELECT FirmID FROM tblmemberfirms WHERE memberstatus IN ('Member'))";
//
// $resultSet = $conn->executeQuery($sql);
//
// return $resultSet->fetchAllAssociative();
// }
}
/**
* Insert firms from tblMemberFirms into ADec_tblMemberFirms for a given year
* @param int $year
* @return int Number of rows inserted
*/
public function insertFirmsForYear($year = 2025)
{
$conn = $this->getEntityManager()->getConnection();
$sql = "INSERT INTO `ADec_tblMemberFirms` (
`Prev_FirmID`,
`FirmName`,
`FormOfIncorporation`,
`DateJoined`,
`DateTerminated`,
`DirectoryLastUpdate`,
`EntryType`,
`PageRef`,
`LogoReceived`,
`Photographs`,
`EntryText`,
`RunOns`,
`OrderNumber`,
`InvoiceNumber`,
`PaymentReceived`,
`DeclarationReceived`,
`MemberStatus`,
`Acoustics`,
`Agricultural`,
`BuildingServices`,
`Chemical`,
`Civil`,
`Development`,
`Electrical`,
`Electronic`,
`Environmental`,
`Geotechnical`,
`Industrial`,
`Mechanical`,
`Marine`,
`Mining`,
`Process`,
`Structural`,
`Transportation`,
`Architecture`,
`RuralDevelopment`,
`ProjectManagement`,
`QuantitySurveying`,
`TownPlanning`,
`Multidisciplinary`,
`DisputeResolution`,
`ExpertWitness`,
`InformationSystems`,
`FacilitiesManagement`,
`GIS`,
`PIUnderwriter`,
`LevelOfCover`,
`LevelOfCoverShort`,
`Quality Management`,
`Date of last peer review`,
`URL`,
`DocumentAccess`,
`QualityMxSystem`,
`ExportDivision`,
`Active`,
`School`,
`LNumber`,
`ExistingOrExperience`,
`SeekingToExportTo`,
`QMSPlan`,
`QMSDocs`,
`QMSISOComply`,
`QMSISOCert`,
`QMSISOCertDate`,
`QMSOffices`,
`QMSConsult`,
`QMSCertBody`,
`AcousticsName`,
`AgriculturalName`,
`BuildingServicesName`,
`ChemicalName`,
`CivilName`,
`DevelopmentName`,
`ElectricalName`,
`ElectronicName`,
`EnvironmentalName`,
`GeotechnicalName`,
`IndustrialName`,
`MechanicalName`,
`MarineName`,
`MiningName`,
`ProcessName`,
`StructuralName`,
`TransportationName`,
`ArchitectureName`,
`RuralDevelopmentName`,
`ProjectManagementName`,
`QuantitySurveyingName`,
`TownPlanningName`,
`MultidisciplinaryName`,
`DisputeResolutionName`,
`ExpertWitnessName`,
`InformationSystemsName`,
`FacilitiesManagementName`,
`GISName`,
`MainFirmInvoice`,
`GroupFirmsInvoice`,
`QMSImplemented`,
`QMSImplFully`,
`QMSImplPart`,
`QMSAssess`,
`QMSUseConsult`,
`QMSIntend`,
`MentoringProg`,
`CandidateProg`,
`SubscriptionsContact`,
`SubscriptionsEmail`,
`HRTrainingContact`,
`HRTrainingEmail`,
`MarketingContact`,
`MarketingEmail`,
`GoToPersonName`,
`GoToPersonTel`,
`GoToPersonEmail`,
`CAUSigned`,
`BBBEE`,
`YPFContact`,
`YPFEmail`,
`SMME`,
`BlackOwned`,
`BBBEELevel`,
`SustainabilityPolicy`,
`SustainabilityIssues`,
`SustainabilityProcess`,
`SustainabilityChampion`,
`SustainabilityChampName`,
`SustainabilityFramework`,
`SustainabilityDiscussed`,
`SustainabilityIndicator1`,
`SustainabilityIndicator2`,
`SustainabilityIndicator3`,
`SustainabilityIndicator4`,
`SustainabilityIndicator5`,
`QMIG`,
`QMSChampion`,
`QMSChampName`,
`QMSChampEmail`,
`SustainabilityChampEmail`,
`ProcurementContact`,
`ProcurementEmail`,
`SubscriptionsTel`,
`HRTrainingTel`,
`MarketingTel`,
`ProcurementTel`,
`YPFContactTel`,
`BlackWomenOwned`,
`WomenOwned`,
`SABTACO`,
`BBCBE`,
`GBCSA`,
`TotalStaff`,
`ImmigratedStaff`,
`ManualCaptured`,
`DeclarationYear`
)
SELECT
f.FirmID AS Prev_FirmID,
f.FirmName,
f.FormOfIncorporation,
f.DateJoined,
f.DateTerminated,
f.DirectoryLastUpdate,
f.EntryType,
f.PageRef,
f.LogoReceived,
f.Photographs,
NULL AS EntryText,
f.RunOns,
f.OrderNumber,
f.InvoiceNumber,
f.PaymentReceived,
f.DeclarationReceived,
f.MemberStatus,
f.Acoustics,
f.Agricultural,
f.BuildingServices,
f.Chemical,
f.Civil,
f.Development,
f.Electrical,
f.Electronic,
f.Environmental,
f.Geotechnical,
f.Industrial,
f.Mechanical,
f.Marine,
f.Mining,
f.Process,
f.Structural,
f.Transportation,
f.Architecture,
f.RuralDevelopment,
f.ProjectManagement,
f.QuantitySurveying,
f.TownPlanning,
f.Multidisciplinary,
f.DisputeResolution,
f.ExpertWitness,
f.InformationSystems,
f.FacilitiesManagement,
f.GIS,
f.PIUnderwriter,
f.LevelOfCover,
f.LevelOfCoverShort,
f.`Quality Management`,
f.`Date of last peer review`,
f.URL,
f.DocumentAccess,
f.QualityMxSystem,
f.ExportDivision,
f.Active,
f.School,
f.LNumber,
f.ExistingOrExperience,
f.SeekingToExportTo,
f.QMSPlan,
f.QMSDocs,
f.QMSISOComply,
f.QMSISOCert,
f.QMSISOCertDate,
f.QMSOffices,
f.QMSConsult,
f.QMSCertBody,
f.AcousticsName,
f.AgriculturalName,
f.BuildingServicesName,
f.ChemicalName,
f.CivilName,
f.DevelopmentName,
f.ElectricalName,
f.ElectronicName,
f.EnvironmentalName,
f.GeotechnicalName,
f.IndustrialName,
f.MechanicalName,
f.MarineName,
f.MiningName,
f.ProcessName,
f.StructuralName,
f.TransportationName,
f.ArchitectureName,
f.RuralDevelopmentName,
f.ProjectManagementName,
f.QuantitySurveyingName,
f.TownPlanningName,
f.MultidisciplinaryName,
f.DisputeResolutionName,
f.ExpertWitnessName,
f.InformationSystemsName,
f.FacilitiesManagementName,
f.GISName,
f.MainFirmInvoice,
f.GroupFirmsInvoice,
f.QMSImplemented,
f.QMSImplFully,
f.QMSImplPart,
f.QMSAssess,
f.QMSUseConsult,
f.QMSIntend,
f.MentoringProg,
f.CandidateProg,
f.SubscriptionsContact,
f.SubscriptionsEmail,
f.HRTrainingContact,
f.HRTrainingEmail,
f.MarketingContact,
f.MarketingEmail,
f.GoToPersonName,
f.GoToPersonTel,
f.GoToPersonEmail,
f.CaUSigned,
f.BBBEE,
f.YPFContact,
f.YPFEmail,
f.SMME,
f.BlackOwned,
f.BBBEELevel,
f.SustainabilityPolicy,
f.SustainabilityIssues,
f.SustainabilityProcess,
f.SustainabilityChampion,
f.SustainabilityChampName,
f.SustainabilityFramework,
f.SustainabilityDiscussed,
f.SustainabilityIndicator1,
f.SustainabilityIndicator2,
f.SustainabilityIndicator3,
f.SustainabilityIndicator4,
f.SustainabilityIndicator5,
f.QMIG,
f.QMSChampion,
f.QMSChampName,
f.QMSChampEmail,
f.SustainabilityChampEmail,
f.ProcurementContact,
f.ProcurementEmail,
f.SubscriptionsTel,
f.HRTrainingTel,
f.MarketingTel,
f.ProcurementTel,
f.YPFContactTel,
f.BlackWomenOwned,
f.WomenOwned,
f.SABTACO,
f.BBCBE,
f.GBCSA,
f.TotalStaff,
NULL AS ImmigratedStaff,
1 AS ManualCaptured,
" . intval($year) . " AS DeclarationYear
FROM `tblMemberFirms` f
WHERE 1 = 1
AND f.FirmID NOT IN (
SELECT mf.Prev_FirmID
FROM ADec_tblMemberFirms mf
WHERE mf.DeclarationYear = " . intval($year) . "
AND mf.Prev_FirmID IS NOT NULL
)
AND f.MemberStatus IN ('Member', 'RETIRED')
AND YEAR(f.DeclarationReceived) = " . intval($year);
echo $sql . '<br />';
exit;
$result = $conn->executeStatement($sql);
return $result;
}
/**
* Insert transformation data from tblMemberFirmsTransformation into ADec_Transformation
* @return int Number of rows inserted
*/
public function insertTransformationData()
{
$conn = $this->getEntityManager()->getConnection();
$sql = "INSERT INTO `ADec_Transformation` (
`TransformID`,
`FirmID`,
`Prev_FirmID`,
`TransTopMA`,
`TransTopMC`,
`TransTopMI`,
`TransTopMW`,
`TransTopFA`,
`TransTopFC`,
`TransTopFI`,
`TransTopFW`,
`TransTopMN`,
`TransTopFN`,
`TransSeniorMA`,
`TransSeniorMC`,
`TransSeniorMI`,
`TransSeniorMW`,
`TransSeniorFA`,
`TransSeniorFC`,
`TransSeniorFI`,
`TransSeniorFW`,
`TransSeniorMN`,
`TransSeniorFN`,
`TransProfMA`,
`TransProfMC`,
`TransProfMI`,
`TransProfMW`,
`TransProfFA`,
`TransProfFC`,
`TransProfFI`,
`TransProfFW`,
`TransProfMN`,
`TransProfFN`,
`TransSkilledMA`,
`TransSkilledMC`,
`TransSkilledMI`,
`TransSkilledMW`,
`TransSkilledFA`,
`TransSkilledFC`,
`TransSkilledFI`,
`TransSkilledFW`,
`TransSkilledMN`,
`TransSkilledFN`,
`TransSemiMA`,
`TransSemiMC`,
`TransSemiMI`,
`TransSemiMW`,
`TransSemiFA`,
`TransSemiFC`,
`TransSemiFI`,
`TransSemiFW`,
`TransSemiMN`,
`TransSemiFN`,
`TransUnskillMA`,
`TransUnskillMC`,
`TransUnskillMI`,
`TransUnskillMW`,
`TransUnskillFA`,
`TransUnskillFC`,
`TransUnskillFI`,
`TransUnskillFW`,
`TransUnskillMN`,
`TransUnskillFN`,
`TransTempMA`,
`TransTempMC`,
`TransTempMI`,
`TransTempMW`,
`TransTempFA`,
`TransTempFC`,
`TransTempFI`,
`TransTempFW`,
`TransTempMN`,
`TransTempFN`,
`ThreeYearsAverageTurnover`,
`DeclarationYear`
)
SELECT
t.TransformID,
mf.FirmID,
t.FirmID AS Prev_FirmID,
t.TransTopMA,
t.TransTopMC,
t.TransTopMI,
t.TransTopMW,
t.TransTopFA,
t.TransTopFC,
t.TransTopFI,
t.TransTopFW,
t.TransTopMN,
t.TransTopFN,
t.TransSeniorMA,
t.TransSeniorMC,
t.TransSeniorMI,
t.TransSeniorMW,
t.TransSeniorFA,
t.TransSeniorFC,
t.TransSeniorFI,
t.TransSeniorFW,
t.TransSeniorMN,
t.TransSeniorFN,
t.TransProfMA,
t.TransProfMC,
t.TransProfMI,
t.TransProfMW,
t.TransProfFA,
t.TransProfFC,
t.TransProfFI,
t.TransProfFW,
t.TransProfMN,
t.TransProfFN,
t.TransSkilledMA,
t.TransSkilledMC,
t.TransSkilledMI,
t.TransSkilledMW,
t.TransSkilledFA,
t.TransSkilledFC,
t.TransSkilledFI,
t.TransSkilledFW,
t.TransSkilledMN,
t.TransSkilledFN,
t.TransSemiMA,
t.TransSemiMC,
t.TransSemiMI,
t.TransSemiMW,
t.TransSemiFA,
t.TransSemiFC,
t.TransSemiFI,
t.TransSemiFW,
t.TransSemiMN,
t.TransSemiFN,
t.TransUnskillMA,
t.TransUnskillMC,
t.TransUnskillMI,
t.TransUnskillMW,
t.TransUnskillFA,
t.TransUnskillFC,
t.TransUnskillFI,
t.TransUnskillFW,
t.TransUnskillMN,
t.TransUnskillFN,
t.TransTempMA,
t.TransTempMC,
t.TransTempMI,
t.TransTempMW,
t.TransTempFA,
t.TransTempFC,
t.TransTempFI,
t.TransTempFW,
t.TransTempMN,
t.TransTempFN,
f.ThreeYearsAverageTurnover,
mf.DeclarationYear
FROM `tblMemberFirmsTransformation` t
INNER JOIN `ADec_tblMemberFirms` mf ON t.FirmID = mf.Prev_FirmID
INNER JOIN `tblMemberFirms` f ON t.FirmID = f.FirmID
WHERE mf.ManualCaptured = 1";
echo $sql . '<br />';
exit;
$result = $conn->executeStatement($sql);
return $result;
}
// /**
// * @return MemberFirm[] Returns an array of MemberFirm objects
// */
// public function findByExampleField($value): array
// {
// return $this->createQueryBuilder('m')
// ->andWhere('m.exampleField = :val')
// ->setParameter('val', $value)
// ->orderBy('m.id', 'ASC')
// ->setMaxResults(10)
// ->getQuery()
// ->getResult()
// ;
// }
// public function findOneBySomeField($value): ?MemberFirm
// {
// return $this->createQueryBuilder('m')
// ->andWhere('m.exampleField = :val')
// ->setParameter('val', $value)
// ->getQuery()
// ->getOneOrNullResult()
// ;
// }
}