| Current Path : /var/www/v3.cesa.co.za/src/MemberBundle/Services/ |
| Current File : /var/www/v3.cesa.co.za/src/MemberBundle/Services/MemberFirmManager.php |
<?php
namespace App\MemberBundle\Services;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Monolog\Logger;
use App\ContactBundle\Services\MessageManager;
use App\MemberBundle\Entity\MemberFirm;
use App\CoreBundle\Services\Utils;
/**
* Member Firm List Old manager
*
* @author Otto Saayman <otto@igotafrica.com>
* @package MemberBundle
* @subpackage MemberFirm
* @version 0.0.1
*/
final class MemberFirmManager
{
/**
* Service Container
* @var object
*/
private $container = null;
/**
* Entity manager
* @var object
*/
private $em;
/**
* Class construct
*
* @param ContainerInterface $container
* @param Logger $logger
* @return void
*/
public function __construct(
ContainerInterface $container
) {
$this->setContainer($container);
$this->setEm($container->get('doctrine')->getManager('default'));
return;
}
/**
* Get Container
*
* @return ContainerInterface $container
*/
public function getContainer()
{
return $this->container;
}
/**
* Set Container
*
* @param ContainerInterface $container
* @return void
*/
public function setContainer($container)
{
$this->container = $container;
}
/**
* Get Entity Manager
*
* @return string
*/
public function getEm()
{
return $this->em;
}
/**
* Set Container
*
* @param string $em
* @return void
*/
public function setEm($em)
{
$this->em = $em;
}
/**
* Get a Member Firm
*
* @return MemberFirm
*/
public function find($id)
{
if (strlen($id) <= 0) {
return null;
}
return $this->em->getRepository(MemberFirm::class)->find($id);
}
/**
* Get a Member Firm by parameters
*
* @param array $params
* @return MemberFirm
*/
public function findOneBy($params)
{
return $this->em->getRepository(MemberFirm::class)->findOneBy($params);
}
/**
* Get a Member Firm by parameters
*
* @param array $params
* @return array
*/
public function findBy($params)
{
return $this->em->getRepository(MemberFirm::class)->findBy($params);
}
/**
* Get all Member Firms
*
* @return array
*/
public function findAll()
{
return $this->em->getRepository(MemberFirm::class)->findAll();
}
/**
* Get all Member Firm IDs
*
* @return array
*/
public function findAllIds()
{
return $this->em->getRepository(MemberFirm::class)->findAllIds();
}
/**
* Save a Member Firm
*
* @params MemberFirm $memberFirm
* @return MemberFirm
*/
public function save(MemberFirm &$memberFirm)
{
$this->em->persist($memberFirm);
$this->em->flush();
return $memberFirm;
}
/**
* Save a Member Firm
*
* @params MemberFirm $memberFirm
* @return MemberFirm
*/
public function findOrAdd(
&$toBeAdded,
&$toBeUpdated,
$allMembers,
$email,
$status,
$firstName = '',
$lastName = '',
$tag = ''
) {
if (!Utils::isEmailAddressValid($email)) {
return;
}
if (strlen($tag) <= 0) {
echo 'No tag for ' . $email . '<br />' . "\r\n";
return;
}
$email = str_replace('.coza', '.co.za', $email);
//check if attendee is in list
$mustAdd = true;
$mustTag = true;
$updateMailId = '';
foreach ($allMembers as $mailId => $member) {
if (trim(strtolower($member['email_address'])) == trim(strtolower($email))) {
$mustAdd = false;
$updateMailId = $mailId;
}
if (!is_countable($member['tags']) || count($member['tags']) <= 0) {
continue;
}
foreach ($member['tags'] as $oneTag) {
// var_dump($oneTag);
// echo "\r\n" . ' tag!' . "\r\n";
if ($oneTag['name'] == $tag) {
$mustTag = false;
}
}
} //foreach
if ($mustAdd) {
foreach ($toBeAdded as $checkOne) {
if (trim(strtolower($checkOne['email_address'])) == trim(strtolower($email))) {
$mustAdd = false;
}
}
}
if ($mustAdd) {
$toBeAdded[] = [
'email_address' => $email,
'status' => $status,
'merge_fields' => ['FNAME' => $firstName, 'LNAME' => $lastName],
'tags' => ["Member", $tag]
];
echo 'Added ' . count($toBeAdded) . ' - ' . $email . '<br />' . "\r\n";
} elseif ($mustTag && strlen($updateMailId) > 0) {
$toBeUpdated[] = [
'subscriber_id' => $updateMailId,
'email_address' => $email,
// 'tags' => ["Member", $tag]
'tags' => [['name' => $tag, 'status' => 'active'], ['name' => "Member", 'status' => 'active']]
];
echo 'Updated ' . count($toBeAdded) . ' - ' . $email . '<br />' . "\r\n";
}
}
/**
* Save a Member Firm
*
* @return void
*/
public function mailChimpSynch()
{
$mcCreds = MessageManager::getMCCredentials();
$messageManager = $this->getContainer()->get('contact_message.manager');
$tempValueManager = $this->getContainer()->get('temp_value.manager');
$startAt = 1; //$tempValueManager->getTempValue('mailchimp_member_synch_start', 1);
echo 'Member firm synch starts now<br />' . "\r\n";
// exit;
$allMembers = $messageManager->getAllEMailsFromMailChimp($mcCreds['api_key'], $mcCreds['main_audience']);
echo "Found " . count($allMembers) . " members in MailChimp <br />" . "\r\n";
// echo '<br /><br />';
// exit;
$toBeAdded = [];
$toBeUpdated = [];
$memberFirms = $this->findAllIds();
$endAt = count($memberFirms) + 10; //$startAt + 50;
$recordCount = 1;
echo 'Running member synch: ' . $startAt . ' ' . $endAt . '<br />' . "\r\n";
// exit;
foreach ($memberFirms as $memberFirmId) {
if ($recordCount < $startAt) {
continue;
}
if ($startAt > $endAt) {
break;
}
$memberFirm = $this->find($memberFirmId['id']);
if (!is_object($memberFirm)) {
echo 'Firm not found: ' . $memberFirmId['id'] . '<br />' . "\r\n";
continue;
}
if (!in_array(strtolower($memberFirm->getMemberStatus()), array('member', 'retired member', 'honorary member'))) {
echo 'Firm status not valid member: ' . $memberFirmId['id'] . '<br />' . "\r\n";
continue;
}
$subscribed = 'subscribed';
if (!is_null($memberFirm->getMarketingEmail()) && strlen($memberFirm->getMarketingEmail()) > 0) {
$this->findOrAdd(
$toBeAdded,
$toBeUpdated,
$allMembers,
$memberFirm->getMarketingEmail(),
$subscribed,
$memberFirm->getMarketingContact(),
'',
'Member Marketing'
);
}
if (!is_null($memberFirm->getSubscriptionsEmail()) && strlen($memberFirm->getSubscriptionsEmail()) > 0) {
$this->findOrAdd(
$toBeAdded,
$toBeUpdated,
$allMembers,
$memberFirm->getSubscriptionsEmail(),
$subscribed,
$memberFirm->getSubscriptionsContact(),
'',
'Member Subscriptions'
);
}
if (!is_null($memberFirm->getHrTrainingEmail()) && strlen($memberFirm->getHrTrainingEmail()) > 0) {
$this->findOrAdd(
$toBeAdded,
$toBeUpdated,
$allMembers,
$memberFirm->getHrTrainingEmail(),
$subscribed,
$memberFirm->getHrTrainingContact(),
'',
'Member HR and Training'
);
}
if (!is_null($memberFirm->getYpfEmail()) && strlen($memberFirm->getYpfEmail()) > 0) {
$this->findOrAdd(
$toBeAdded,
$toBeUpdated,
$allMembers,
$memberFirm->getYpfEmail(),
$subscribed,
$memberFirm->getYpfContact(),
'',
'Member YPF'
);
}
if (!is_null($memberFirm->getQmsChampEmail()) && strlen($memberFirm->getQmsChampEmail()) > 0) {
$this->findOrAdd(
$toBeAdded,
$toBeUpdated,
$allMembers,
$memberFirm->getQmsChampEmail(),
$subscribed,
$memberFirm->getQmsChampName(),
'',
'Member QMS Champion'
);
}
if (!is_null($memberFirm->getSustainabilityChampEmail()) && strlen($memberFirm->getSustainabilityChampEmail()) > 0) {
$this->findOrAdd(
$toBeAdded,
$toBeUpdated,
$allMembers,
$memberFirm->getSustainabilityChampEmail(),
$subscribed,
$memberFirm->getSustainabilityChampName(),
'',
'Member Sustainability Champion'
);
}
if (!is_null($memberFirm->getProcurementEmail()) && strlen($memberFirm->getProcurementEmail()) > 0) {
$this->findOrAdd(
$toBeAdded,
$toBeUpdated,
$allMembers,
$memberFirm->getProcurementEmail(),
$subscribed,
$memberFirm->getProcurementContact(),
'',
'Member Procurement'
);
}
foreach ($memberFirm->getMemberOffice() as $office) {
foreach ($office->getMemberContact() as $contact) {
if (!is_null($contact->getEmail()) && strlen($contact->getEmail()) > 0) {
$this->findOrAdd(
$toBeAdded,
$toBeUpdated,
$allMembers,
$contact->getEmail(),
$subscribed,
$contact->getContactFirstName(),
$contact->getContactSurname(),
'Member Office Contact'
);
if ($contact->isMandatedPrincipal()) {
$this->findOrAdd(
$toBeAdded,
$toBeUpdated,
$allMembers,
$contact->getEmail(),
$subscribed,
$contact->getContactFirstName(),
$contact->getContactSurname(),
'Member Mandated Principal Office Contact'
);
}
if ($contact->isPrincipal()) {
$this->findOrAdd(
$toBeAdded,
$toBeUpdated,
$allMembers,
$contact->getEmail(),
$subscribed,
$contact->getContactFirstName(),
$contact->getContactSurname(),
'Member Principal Office Contact'
);
}
if ($contact->isOfficeHead()) {
$this->findOrAdd(
$toBeAdded,
$toBeUpdated,
$allMembers,
$contact->getEmail(),
$subscribed,
$contact->getContactFirstName(),
$contact->getContactSurname(),
'Member Office Head'
);
}
if (!is_null($contact->getYpf()) && strtolower($contact->getYpf()) == 'y') {
$this->findOrAdd(
$toBeAdded,
$toBeUpdated,
$allMembers,
$contact->getEmail(),
$subscribed,
$contact->getContactFirstName(),
$contact->getContactSurname(),
'Member YPF'
);
}
}
} //foreach member contact
} //foreach member office
if (count($toBeAdded) > 200) {
$messageManager->addToMailChimp($mcCreds['api_key'], $mcCreds['main_audience'], $toBeAdded);
// var_dump($toBeAdded);
// exit;
// var_dump($toBeAdded);
// exit;
$toBeAdded = array();
}
if (count($toBeUpdated) > 200) {
$messageManager->updateTagsMailChimp($mcCreds['api_key'], $mcCreds['main_audience'], $toBeUpdated);
// var_dump($toBeAdded);
// exit;
// var_dump($toBeUpdated);
// exit;
$toBeUpdated = array();
}
$recordCount++;
$startAt++;
} //foreach member firm
echo 'Member synch done: ' . $startAt . ' ' . $startAt . '<br />' . "\r\n";
$tempValueManager->setTempValue('mailchimp_member_synch_start', $startAt);
if (count($toBeAdded) > 0) {
$messageManager->addToMailChimp($mcCreds['api_key'], $mcCreds['main_audience'], $toBeAdded);
}
if (count($toBeUpdated) > 0) {
$messageManager->updateTagsMailChimp($mcCreds['api_key'], $mcCreds['main_audience'], $toBeUpdated);
}
}
public function processStats($members)
{
$statsStart = array(
'10' => array('num' => 0, 'turnover' => 0.00),
'30' => array('num' => 0, 'turnover' => 0.00),
'51' => array('num' => 0, 'turnover' => 0.00),
'1130' => array('num' => 0, 'turnover' => 0.00),
'1025' => array('num' => 0, 'turnover' => 0.00),
'30' => array('num' => 0, 'turnover' => 0.00),
'2550' => array('num' => 0, 'turnover' => 0.00),
'3050' => array('num' => 0, 'turnover' => 0.00),
'5199' => array('num' => 0, 'turnover' => 0.00),
'31100' => array('num' => 0, 'turnover' => 0.00),
'51100' => array('num' => 0, 'turnover' => 0.00),
'100' => array('num' => 0, 'turnover' => 0.00),
);
$demos = [
'ma' => 0,
'mc' => 0,
'mi' => 0,
'mw' => 0,
'mf' => 0,
'fa' => 0,
'fc' => 0,
'fi' => 0,
'fw' => 0,
'ff' => 0,
'male' => 0,
'female' => 0,
];
$staffDemographics = [
'tm' => $demos,
'sm' => $demos,
'pro' => $demos,
'skilled' => $demos,
'semi' => $demos,
'unskill' => $demos,
'temp' => $demos,
'totals' => $demos,
'male_total' => 0,
'female_total' => 0,
'total' => 0,
'black_owned_total' => 0,
];
$countStaff = ['num' => 0, 'staff' => 0, 'transformation' => $staffDemographics];
$turnOverCategoriesArray = [
'NotSpecified' => $countStaff,
'EME1' => $countStaff,
'EME2' => $countStaff,
'QSE1' => $countStaff,
'QSE2' => $countStaff,
'QSE3' => $countStaff,
'QSE4' => $countStaff,
'GEN1' => $countStaff,
'GEN2' => $countStaff,
'GEN3' => $countStaff,
'GEN4' => $countStaff,
'GEN5' => $countStaff,
'GEN6' => $countStaff,
'GEN7' => $countStaff,
'GEN8' => $countStaff,
];
$bbbeeLevelArray = [
'Level1' => 0,
'Level2' => 0,
'Level3' => 0,
'Level4' => 0,
'Level5' => 0,
'Level6' => 0,
'Level7' => 0,
'Level8' => 0,
];
$statistics = array(
'black_women_owned' => $statsStart,
'black_owned' => $statsStart,
'women_owned' => $statsStart,
'total' => array('num' => 0, 'turnover' => 0.00, 'online' => 0, 'offline' => 0),
'total_black_owned' => array('num' => 0, 'turnover' => 0.00),
'total_not_black_owned' => array('num' => 0, 'turnover' => 0.00),
'turnover' => array(
'overall' => $turnOverCategoriesArray,
'black_owned' => $turnOverCategoriesArray,
'not_black_owned' => $turnOverCategoriesArray,
),
'staff' => $staffDemographics,
'bbbeeLevels' => $bbbeeLevelArray,
'staff_levels_to_check' => [],
'total_captured' => 0,
'member_rows' => [],
);
$fieldTransformed = [
'BlackOwned' => 'black_owned',
'BlackWomenOwned' => 'black_women_owned',
'BlackWomenOwnedVal' => 'black_women_owned_val',
'WomenOwned' => 'women_owned',
'TotalStaff' => 'total_staff',
'ThreeYearsAverageTurnover' => 'three_years_average_turnover',
'SMME' => 'smme',
'TransTopMA' => 'trans_top_ma',
'TransTopMC' => 'trans_top_mc',
'TransTopMI' => 'trans_top_mi',
'TransTopMW' => 'trans_top_mw',
'TransTopMN' => 'trans_top_mf',
'TransTopFA' => 'trans_top_fa',
'TransTopFC' => 'trans_top_fc',
'TransTopFI' => 'trans_top_fi',
'TransTopFW' => 'trans_top_fw',
'TransTopFN' => 'trans_top_ff',
'TransSeniorMA' => 'trans_senior_ma',
'TransSeniorMC' => 'trans_senior_mc',
'TransSeniorMI' => 'trans_senior_mi',
'TransSeniorMW' => 'trans_senior_mw',
'TransSeniorMN' => 'trans_senior_mf',
'TransSeniorFA' => 'trans_senior_fa',
'TransSeniorFC' => 'trans_senior_fc',
'TransSeniorFI' => 'trans_senior_fi',
'TransSeniorFW' => 'trans_senior_fw',
'TransSeniorFN' => 'trans_senior_ff',
'TransProfMA' => 'trans_prof_ma',
'TransProfMC' => 'trans_prof_mc',
'TransProfMI' => 'trans_prof_mi',
'TransProfMW' => 'trans_prof_mw',
'TransProfMN' => 'trans_prof_mf',
'TransProfFA' => 'trans_prof_fa',
'TransProfFC' => 'trans_prof_fc',
'TransProfFI' => 'trans_prof_fi',
'TransProfFW' => 'trans_prof_fw',
'TransProfFN' => 'trans_prof_ff',
'TransSkilledMA' => 'trans_skilled_ma',
'TransSkilledMC' => 'trans_skilled_mc',
'TransSkilledMI' => 'trans_skilled_mi',
'TransSkilledMW' => 'trans_skilled_mw',
'TransSkilledMN' => 'trans_skilled_mf',
'TransSkilledFA' => 'trans_skilled_fa',
'TransSkilledFC' => 'trans_skilled_fc',
'TransSkilledFI' => 'trans_skilled_fi',
'TransSkilledFW' => 'trans_skilled_fw',
'TransSkilledFN' => 'trans_skilled_ff',
'TransSemiMA' => 'trans_semi_ma',
'TransSemiMC' => 'trans_semi_mc',
'TransSemiMI' => 'trans_semi_mi',
'TransSemiMW' => 'trans_semi_mw',
'TransSemiMN' => 'trans_semi_mf',
'TransSemiFA' => 'trans_semi_fa',
'TransSemiFC' => 'trans_semi_fc',
'TransSemiFI' => 'trans_semi_fi',
'TransSemiFW' => 'trans_semi_fw',
'TransSemiFN' => 'trans_semi_ff',
'TransUnskillMA' => 'trans_unskill_ma',
'TransUnskillMC' => 'trans_unskill_mc',
'TransUnskillMI' => 'trans_unskill_mi',
'TransUnskillMW' => 'trans_unskill_mw',
'TransUnskillMN' => 'trans_unskill_mf',
'TransUnskillFA' => 'trans_unskill_fa',
'TransUnskillFC' => 'trans_unskill_fc',
'TransUnskillFI' => 'trans_unskill_fi',
'TransUnskillFW' => 'trans_unskill_fw',
'TransUnskillFN' => 'trans_unskill_ff',
'TransTempMA' => 'trans_temp_ma',
'TransTempMC' => 'trans_temp_mc',
'TransTempMI' => 'trans_temp_mi',
'TransTempMW' => 'trans_temp_mw',
'TransTempMN' => 'trans_temp_mf',
'TransTempFA' => 'trans_temp_fa',
'TransTempFC' => 'trans_temp_fc',
'TransTempFI' => 'trans_temp_fi',
'TransTempFW' => 'trans_temp_fw',
'TransTempFN' => 'trans_temp_ff',
'BBBEELevel' => 'bbbee_level',
'ManualCaptured' => 'manual_captured',
];
foreach ($members as $member) {
$memberId = 0;
if (isset($member['id']) && intval($member['id']) > 0) {
$memberId = intval($member['id']);
} elseif (isset($member['FirmID']) && intval($member['FirmID']) > 0) {
$memberId = intval($member['FirmID']);
$member['id'] = $memberId;
} elseif (isset($member['Prev_FirmID']) && intval($member['Prev_FirmID']) > 0) {
$memberId = intval($member['Prev_FirmID']);
$member['id'] = $memberId;
}
if (!isset($member['firm_name']) && isset($member['FirmName'])) {
$member['firm_name'] = $member['FirmName'];
}
if (!isset($member['declaration_received']) && isset($member['DeclarationReceived'])) {
$member['declaration_received'] = $member['DeclarationReceived'];
}
if (!isset($member['smme']) && isset($member['SMME'])) {
$member['smme'] = $member['SMME'];
}
// $statistics['member_rows'][] = $member;
// var_dump(array_keys($member));
// exit;
// echo $member['TransProfMA'] . '<br />';
//Transform fields
foreach ($fieldTransformed as $old => $new) {
if (!isset($member[$new]) && isset($member[$old])) {
$member[$new] = $member[$old];
}
}
//Black Owned
if (!isset($member['black_owned']) || is_null($member['black_owned']) || strlen($member['black_owned']) <= 0) {
$member['black_owned'] = 'Less than 10%';
}
//Black Women Owned
if (!isset($member['black_women_owned']) || is_null($member['black_women_owned']) || strlen($member['black_women_owned']) <= 0) {
$member['black_women_owned'] = 'Less than 10%';
}
//Women Owned
if (!isset($member['women_owned']) || is_null($member['women_owned']) || strlen($member['women_owned']) <= 0) {
$member['women_owned'] = 'Less than 10%';
}
// echo $member['black_women_owned'] . '<br />';
//Total staff
if (!isset($member['total_staff'])) {
$member['total_staff'] = 0;
}
//Turnover Categories
if (!isset($member['three_years_average_turnover'])) {
$member['three_years_average_turnover'] = 0;
}
if (!isset($member['smme']) || strlen($member['smme']) <= 0) {
$member['smme'] = 'EME1';
}
if ((!isset($member['black_women_owned']) || strlen($member['black_women_owned']) <= 0)
&& isset($member['black_women_owned_val']) && strlen($member['black_women_owned_val']) > 0
) {
$member['black_women_owned'] = $member['black_women_owned_val'];
}
//Transform fields
foreach ($fieldTransformed as $old => $new) {
if (!isset($member[$new])) {
$member[$new] = 0;
}
}
if (in_array($member['smme'], ['EME', 'E', 's', 'u'])) {
$member['smme'] = 'EME1';
} elseif (in_array($member['smme'], ['QSE', 'Q', 'm'])) {
$member['smme'] = 'QSE1';
} elseif (in_array($member['smme'], ['GEN', 'G', 'l'])) {
$member['smme'] = 'GEN1';
}
if ($member['three_years_average_turnover'] >= 100000000) {
$member['smme'] = 'GEN8';
} elseif ($member['three_years_average_turnover'] >= 90000000) {
$member['smme'] = 'GEN7';
} elseif ($member['three_years_average_turnover'] >= 80000000) {
$member['smme'] = 'GEN6';
} elseif ($member['three_years_average_turnover'] >= 70000000) {
$member['smme'] = 'GEN5';
} elseif ($member['three_years_average_turnover'] >= 60000000) {
$member['smme'] = 'GEN4';
} elseif ($member['three_years_average_turnover'] >= 50000000) {
$member['smme'] = 'GEN3';
} elseif ($member['three_years_average_turnover'] >= 35000000) {
$member['smme'] = 'GEN2';
} elseif ($member['three_years_average_turnover'] >= 25000000) {
$member['smme'] = 'GEN1';
} elseif ($member['three_years_average_turnover'] >= 20000000) {
$member['smme'] = 'QSE4';
} elseif ($member['three_years_average_turnover'] >= 15000000) {
$member['smme'] = 'QSE3';
} elseif ($member['three_years_average_turnover'] >= 10000000) {
$member['smme'] = 'QSE2';
} elseif ($member['three_years_average_turnover'] >= 6000000) {
$member['smme'] = 'QSE1';
} elseif ($member['three_years_average_turnover'] >= 3000000) {
$member['smme'] = 'EME2';
} elseif ($member['three_years_average_turnover'] > 0) {
$member['smme'] = 'EME1';
} elseif ($member['smme'] == '') {
$member['smme'] = 'NotSpecified';
}
if ($member['bbbee_level'] == 1) {
$statistics['bbbeeLevels']['Level1'] += 1;
} elseif ($member['bbbee_level'] == 2) {
$statistics['bbbeeLevels']['Level2'] += 1;
} elseif ($member['bbbee_level'] == 3) {
$statistics['bbbeeLevels']['Level3'] += 1;
} elseif ($member['bbbee_level'] == 4) {
$statistics['bbbeeLevels']['Level4'] += 1;
} elseif ($member['bbbee_level'] == 5) {
$statistics['bbbeeLevels']['Level5'] += 1;
} elseif ($member['bbbee_level'] == 6) {
$statistics['bbbeeLevels']['Level6'] += 1;
} elseif ($member['bbbee_level'] == 7) {
$statistics['bbbeeLevels']['Level7'] += 1;
} else {
$statistics['bbbeeLevels']['Level8'] += 1;
}
if (!isset($statistics['turnover']['black_owned'][$member['smme']])) {
$statistics['turnover']['black_owned'][$member['smme']] = [
'num' => 0,
'staff' => 0,
'turnover' => 0,
];
}
if (!isset($statistics['turnover']['not_black_owned'][$member['smme']])) {
$statistics['turnover']['not_black_owned'][$member['smme']] = [
'num' => 0,
'staff' => 0,
'turnover' => 0,
];
}
$member['black_owned'] = trim($member['black_owned']);
if (in_array($member['black_owned'], array(
'Less than 10%',
'<10%',
'Less than 10',
'N',
'No',
'Less than 10',
'0'
))) {
$statistics['black_owned']['10']['num']++;
$statistics['black_owned']['10']['turnover'] += $member['three_years_average_turnover'];
$statistics['black_owned']['51']['num']++;
$statistics['black_owned']['51']['turnover'] += $member['three_years_average_turnover'];
$statistics['turnover']['not_black_owned'][$member['smme']]['num'] += 1;
$statistics['turnover']['not_black_owned'][$member['smme']]['staff'] += $member['total_staff'];
$statistics['total_not_black_owned']['num']++;
$statistics['total_not_black_owned']['turnover'] += $member['three_years_average_turnover'];
} elseif (in_array($member['black_owned'], array(
'Equal to or greater than 10 and less than 25%',
'≥10%<25%',
'L',
'Less than 30',
'Equal to or greater than 10 and less than 25'
))) {
$statistics['black_owned']['1025']['num']++;
$statistics['black_owned']['1025']['turnover'] += $member['three_years_average_turnover'];
$statistics['black_owned']['51']['num']++;
$statistics['black_owned']['51']['turnover'] += $member['three_years_average_turnover'];
$statistics['turnover']['not_black_owned'][$member['smme']]['num'] += 1;
$statistics['turnover']['not_black_owned'][$member['smme']]['staff'] += $member['total_staff'];
$statistics['total_not_black_owned']['num']++;
$statistics['total_not_black_owned']['turnover'] += $member['three_years_average_turnover'];
} elseif (in_array($member['black_owned'], array(
'Equal to or greater than 25 and less than 51%',
'≥25%<51%',
'Equal to or greater than 25 and less than 51',
'Equal to or greater than 30 and less than 51'
))) {
$statistics['black_owned']['2550']['num']++;
$statistics['black_owned']['2550']['turnover'] += $member['three_years_average_turnover'];
$statistics['black_owned']['51']['num']++;
$statistics['black_owned']['51']['turnover'] += $member['three_years_average_turnover'];
$statistics['turnover']['not_black_owned'][$member['smme']]['num'] += 1;
$statistics['turnover']['not_black_owned'][$member['smme']]['staff'] += $member['total_staff'];
$statistics['total_not_black_owned']['num']++;
$statistics['total_not_black_owned']['turnover'] += $member['three_years_average_turnover'];
} elseif (in_array($member['black_owned'], array(
'Equal to or greater than 51 and less than 100%',
'≥51%<100%',
'E',
'Equal to or greater than 51 and less than 100'
))) {
$statistics['black_owned']['5199']['num']++;
$statistics['black_owned']['5199']['turnover'] += $member['three_years_average_turnover'];
$statistics['black_owned']['51100']['num']++;
$statistics['black_owned']['51100']['turnover'] += $member['three_years_average_turnover'];
$statistics['turnover']['black_owned'][$member['smme']]['num'] += 1;
$statistics['turnover']['black_owned'][$member['smme']]['staff'] += $member['total_staff'];
$statistics['total_black_owned']['num']++;
$statistics['total_black_owned']['turnover'] += $member['three_years_average_turnover'];
$statistics['staff']['black_owned_total'] += $member['total_staff'];
} elseif (in_array($member['black_owned'], array('100%', 'B', 'Equal to 100', 'Black Owned', '1'))) {
$statistics['black_owned']['100']['num']++;
$statistics['black_owned']['100']['turnover'] += $member['three_years_average_turnover'];
$statistics['black_owned']['51100']['num']++;
$statistics['black_owned']['51100']['turnover'] += $member['three_years_average_turnover'];
$statistics['turnover']['black_owned'][$member['smme']]['num'] += 1;
$statistics['turnover']['black_owned'][$member['smme']]['staff'] += $member['total_staff'];
$statistics['total_black_owned']['num']++;
$statistics['total_black_owned']['turnover'] += $member['three_years_average_turnover'];
$statistics['staff']['black_owned_total'] += $member['total_staff'];
}
$member['black_women_owned'] = trim($member['black_women_owned']);
if (in_array($member['black_women_owned'], array('Less than 10%'))) {
$statistics['black_women_owned']['10']['num']++;
$statistics['black_women_owned']['10']['turnover'] += $member['three_years_average_turnover'];
$statistics['black_women_owned']['30']['num']++;
$statistics['black_women_owned']['30']['turnover'] += $member['three_years_average_turnover'];
} elseif (in_array(
$member['black_women_owned'],
array('Less than 30', 'Less than 30%', '<30', '<30%', 'Equal to or greater than 10 and less than 30%')
)) {
$statistics['black_women_owned']['30']['num']++;
$statistics['black_women_owned']['30']['turnover'] += $member['three_years_average_turnover'];
} elseif (in_array($member['black_women_owned'], array(
'Equal to or greater than 30 and less than 51%',
'≥30%<51%',
'Equal to or greater than 30 and less than 51'
))) {
$statistics['black_women_owned']['3050']['num']++;
$statistics['black_women_owned']['3050']['turnover'] += $member['three_years_average_turnover'];
$statistics['black_women_owned']['31100']['num']++;
$statistics['black_women_owned']['31100']['turnover'] += $member['three_years_average_turnover'];
} elseif (in_array($member['black_women_owned'], array(
'Equal to or greater than 51 and less than 100%',
'≥51%<100%',
'Equal to or greater than 51 and less than 100'
))) {
$statistics['black_women_owned']['5199']['num']++;
$statistics['black_women_owned']['5199']['turnover'] += $member['three_years_average_turnover'];
$statistics['black_women_owned']['31100']['num']++;
$statistics['black_women_owned']['31100']['turnover'] += $member['three_years_average_turnover'];
} elseif (in_array($member['black_women_owned'], array('100%', 'Equal to 100'))) {
$statistics['black_women_owned']['100']['num']++;
$statistics['black_women_owned']['100']['turnover'] += $member['three_years_average_turnover'];
$statistics['black_women_owned']['31100']['num']++;
$statistics['black_women_owned']['31100']['turnover'] += $member['three_years_average_turnover'];
}
$member['women_owned'] = trim($member['women_owned']);
if (in_array($member['women_owned'], array('Less than 10%'))) {
$statistics['women_owned']['10']['num']++;
$statistics['women_owned']['10']['turnover'] += $member['three_years_average_turnover'];
$statistics['women_owned']['30']['num']++;
$statistics['women_owned']['30']['turnover'] += $member['three_years_average_turnover'];
} elseif (in_array(
$member['women_owned'],
array('Less than 30', 'Less than 30%', '<30', '<30%', 'Equal to or greater than 10 and less than 30%')
)) {
$statistics['women_owned']['30']['num']++;
$statistics['women_owned']['30']['turnover'] += $member['three_years_average_turnover'];
} elseif (in_array($member['women_owned'], array(
'Equal to or greater than 30 and less than 51%',
'≥30%<51%',
'Equal to or greater than 30 and less than 51'
))) {
$statistics['women_owned']['3050']['num']++;
$statistics['women_owned']['3050']['turnover'] += $member['three_years_average_turnover'];
$statistics['women_owned']['31100']['num']++;
$statistics['women_owned']['31100']['turnover'] += $member['three_years_average_turnover'];
} elseif (in_array($member['women_owned'], array(
'Equal to or greater than 51 and less than 100%',
'≥51%<100%',
'Equal to or greater than 51 and less than 100'
))) {
$statistics['women_owned']['5199']['num']++;
$statistics['women_owned']['5199']['turnover'] += $member['three_years_average_turnover'];
$statistics['women_owned']['31100']['num']++;
$statistics['women_owned']['31100']['turnover'] += $member['three_years_average_turnover'];
} elseif (in_array($member['women_owned'], array('100%', 'Equal to 100'))) {
$statistics['women_owned']['100']['num']++;
$statistics['women_owned']['100']['turnover'] += $member['three_years_average_turnover'];
$statistics['women_owned']['31100']['num']++;
$statistics['women_owned']['31100']['turnover'] += $member['three_years_average_turnover'];
}
$statistics['total']['num']++;
$statistics['total']['turnover'] += $member['three_years_average_turnover'];
if (isset($member['manual_captured']) && $member['manual_captured'] == 1) {
$statistics['total']['offline']++;
} else {
$statistics['total']['online']++;
}
if (!isset($statistics['turnover']['overall'][$member['smme']])) {
$statistics['turnover']['overall'][$member['smme']] = [
'num' => 0,
'staff' => 0,
'turnover' => 0,
];
}
$statistics['turnover']['overall'][$member['smme']]['staff'] += $member['total_staff'];
$statistics['turnover']['overall'][$member['smme']]['num'] += 1;
if (!isset($statistics['turnover']['overall'][$member['smme']]['transformation'])) {
$statistics['turnover']['overall'][$member['smme']]['transformation'] = [
'tm' => [
'ma' => 0,
'mc' => 0,
'mi' => 0,
'mw' => 0,
'mf' => 0,
'fa' => 0,
'fc' => 0,
'fi' => 0,
'fw' => 0,
'ff' => 0,
],
'sm' => [
'ma' => 0,
'mc' => 0,
'mi' => 0,
'mw' => 0,
'mf' => 0,
'fa' => 0,
'fc' => 0,
'fi' => 0,
'fw' => 0,
'ff' => 0,
],
'pro' => [
'ma' => 0,
'mc' => 0,
'mi' => 0,
'mw' => 0,
'mf' => 0,
'fa' => 0,
'fc' => 0,
'fi' => 0,
'fw' => 0,
'ff' => 0,
],
'skilled' => [
'ma' => 0,
'mc' => 0,
'mi' => 0,
'mw' => 0,
'mf' => 0,
'fa' => 0,
'fc' => 0,
'fi' => 0,
'fw' => 0,
'ff' => 0,
],
'semi' => [
'ma' => 0,
'mc' => 0,
'mi' => 0,
'mw' => 0,
'mf' => 0,
'fa' => 0,
'fc' => 0,
'fi' => 0,
'fw' => 0,
'ff' => 0,
],
'unskill' => [
'ma' => 0,
'mc' => 0,
'mi' => 0,
'mw' => 0,
'mf' => 0,
'fa' => 0,
'fc' => 0,
'fi' => 0,
'fw' => 0,
'ff' => 0,
],
'temp' => [
'ma' => 0,
'mc' => 0,
'mi' => 0,
'mw' => 0,
'mf' => 0,
'fa' => 0,
'fc' => 0,
'fi' => 0,
'fw' => 0,
'ff' => 0,
],
];
}
// Top Management
$statistics['turnover']['overall'][$member['smme']]['transformation']['tm']['ma'] += $member['trans_top_ma'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['tm']['mc'] += $member['trans_top_mc'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['tm']['mi'] += $member['trans_top_mi'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['tm']['mw'] += $member['trans_top_mw'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['tm']['mf'] += $member['trans_top_mf'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['tm']['fa'] += $member['trans_top_fa'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['tm']['fc'] += $member['trans_top_fc'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['tm']['fi'] += $member['trans_top_fi'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['tm']['fw'] += $member['trans_top_fw'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['tm']['ff'] += $member['trans_top_ff'];
// Senior Management
$statistics['turnover']['overall'][$member['smme']]['transformation']['sm']['ma'] += $member['trans_senior_ma'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['sm']['mc'] += $member['trans_senior_mc'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['sm']['mi'] += $member['trans_senior_mi'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['sm']['mw'] += $member['trans_senior_mw'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['sm']['mf'] += $member['trans_senior_mf'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['sm']['fa'] += $member['trans_senior_fa'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['sm']['fc'] += $member['trans_senior_fc'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['sm']['fi'] += $member['trans_senior_fi'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['sm']['fw'] += $member['trans_senior_fw'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['sm']['ff'] += $member['trans_senior_ff'];
// Professional
$statistics['turnover']['overall'][$member['smme']]['transformation']['pro']['ma'] += $member['trans_prof_ma'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['pro']['mc'] += $member['trans_prof_mc'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['pro']['mi'] += $member['trans_prof_mi'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['pro']['mw'] += $member['trans_prof_mw'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['pro']['mf'] += $member['trans_prof_mf'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['pro']['fa'] += $member['trans_prof_fa'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['pro']['fc'] += $member['trans_prof_fc'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['pro']['fi'] += $member['trans_prof_fi'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['pro']['fw'] += $member['trans_prof_fw'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['pro']['ff'] += $member['trans_prof_ff'];
// Skilled
$statistics['turnover']['overall'][$member['smme']]['transformation']['skilled']['ma'] += $member['trans_skilled_ma'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['skilled']['mc'] += $member['trans_skilled_mc'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['skilled']['mi'] += $member['trans_skilled_mi'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['skilled']['mw'] += $member['trans_skilled_mw'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['skilled']['mf'] += $member['trans_skilled_mf'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['skilled']['fa'] += $member['trans_skilled_fa'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['skilled']['fc'] += $member['trans_skilled_fc'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['skilled']['fi'] += $member['trans_skilled_fi'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['skilled']['fw'] += $member['trans_skilled_fw'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['skilled']['ff'] += $member['trans_skilled_ff'];
// Semi-Skilled
$statistics['turnover']['overall'][$member['smme']]['transformation']['semi']['ma'] += $member['trans_semi_ma'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['semi']['mc'] += $member['trans_semi_mc'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['semi']['mi'] += $member['trans_semi_mi'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['semi']['mw'] += $member['trans_semi_mw'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['semi']['mf'] += $member['trans_semi_mf'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['semi']['fa'] += $member['trans_semi_fa'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['semi']['fc'] += $member['trans_semi_fc'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['semi']['fi'] += $member['trans_semi_fi'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['semi']['fw'] += $member['trans_semi_fw'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['semi']['ff'] += $member['trans_semi_ff'];
// Unskilled
$statistics['turnover']['overall'][$member['smme']]['transformation']['unskill']['ma'] += $member['trans_unskill_ma'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['unskill']['mc'] += $member['trans_unskill_mc'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['unskill']['mi'] += $member['trans_unskill_mi'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['unskill']['mw'] += $member['trans_unskill_mw'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['unskill']['mf'] += $member['trans_unskill_mf'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['unskill']['fa'] += $member['trans_unskill_fa'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['unskill']['fc'] += $member['trans_unskill_fc'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['unskill']['fi'] += $member['trans_unskill_fi'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['unskill']['fw'] += $member['trans_unskill_fw'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['unskill']['ff'] += $member['trans_unskill_ff'];
// Temp
$statistics['turnover']['overall'][$member['smme']]['transformation']['temp']['ma'] += $member['trans_temp_ma'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['temp']['mc'] += $member['trans_temp_mc'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['temp']['mi'] += $member['trans_temp_mi'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['temp']['mw'] += $member['trans_temp_mw'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['temp']['mf'] += $member['trans_temp_mf'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['temp']['fa'] += $member['trans_temp_fa'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['temp']['fc'] += $member['trans_temp_fc'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['temp']['fi'] += $member['trans_temp_fi'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['temp']['fw'] += $member['trans_temp_fw'];
$statistics['turnover']['overall'][$member['smme']]['transformation']['temp']['ff'] += $member['trans_temp_ff'];
//Transformation
// Top Management
$statistics['staff']['tm']['ma'] += $member['trans_top_ma'];
$statistics['staff']['tm']['mc'] += $member['trans_top_mc'];
$statistics['staff']['tm']['mi'] += $member['trans_top_mi'];
$statistics['staff']['tm']['mw'] += $member['trans_top_mw'];
$statistics['staff']['tm']['mf'] += $member['trans_top_mf'];
$statistics['staff']['tm']['fa'] += $member['trans_top_fa'];
$statistics['staff']['tm']['fc'] += $member['trans_top_fc'];
$statistics['staff']['tm']['fi'] += $member['trans_top_fi'];
$statistics['staff']['tm']['fw'] += $member['trans_top_fw'];
$statistics['staff']['tm']['ff'] += $member['trans_top_ff'];
$statistics['staff']['tm']['male'] += $member['trans_top_ma'] + $member['trans_top_mc'] + $member['trans_top_mi'] + $member['trans_top_mw'] + $member['trans_top_mf'];
$statistics['staff']['tm']['female'] += $member['trans_top_fa'] + $member['trans_top_fc'] + $member['trans_top_fi'] + $member['trans_top_fw'] + $member['trans_top_ff'];
// Senior Management
$statistics['staff']['sm']['ma'] += $member['trans_senior_ma'];
$statistics['staff']['sm']['mc'] += $member['trans_senior_mc'];
$statistics['staff']['sm']['mi'] += $member['trans_senior_mi'];
$statistics['staff']['sm']['mw'] += $member['trans_senior_mw'];
$statistics['staff']['sm']['mf'] += $member['trans_senior_mf'];
$statistics['staff']['sm']['fa'] += $member['trans_senior_fa'];
$statistics['staff']['sm']['fc'] += $member['trans_senior_fc'];
$statistics['staff']['sm']['fi'] += $member['trans_senior_fi'];
$statistics['staff']['sm']['fw'] += $member['trans_senior_fw'];
$statistics['staff']['sm']['ff'] += $member['trans_senior_ff'];
$statistics['staff']['sm']['male'] += $member['trans_senior_ma'] + $member['trans_senior_mc'] + $member['trans_senior_mi'] + $member['trans_senior_mw'] + $member['trans_senior_mf'];
$statistics['staff']['sm']['female'] += $member['trans_senior_fa'] + $member['trans_senior_fc'] + $member['trans_senior_fi'] + $member['trans_senior_fw'] + $member['trans_senior_ff'];
// Professional
$statistics['staff']['pro']['ma'] += $member['trans_prof_ma'];
$statistics['staff']['pro']['mc'] += $member['trans_prof_mc'];
$statistics['staff']['pro']['mi'] += $member['trans_prof_mi'];
$statistics['staff']['pro']['mw'] += $member['trans_prof_mw'];
$statistics['staff']['pro']['mf'] += $member['trans_prof_mf'];
$statistics['staff']['pro']['fa'] += $member['trans_prof_fa'];
$statistics['staff']['pro']['fc'] += $member['trans_prof_fc'];
$statistics['staff']['pro']['fi'] += $member['trans_prof_fi'];
$statistics['staff']['pro']['fw'] += $member['trans_prof_fw'];
$statistics['staff']['pro']['ff'] += $member['trans_prof_ff'];
$statistics['staff']['pro']['male'] += $member['trans_prof_ma'] + $member['trans_prof_mc'] + $member['trans_prof_mi'] + $member['trans_prof_mw'] + $member['trans_prof_mf'];
$statistics['staff']['pro']['female'] += $member['trans_prof_fa'] + $member['trans_prof_fc'] + $member['trans_prof_fi'] + $member['trans_prof_fw'] + $member['trans_prof_ff'];
// Skilled
$statistics['staff']['skilled']['ma'] += $member['trans_skilled_ma'];
$statistics['staff']['skilled']['mc'] += $member['trans_skilled_mc'];
$statistics['staff']['skilled']['mi'] += $member['trans_skilled_mi'];
$statistics['staff']['skilled']['mw'] += $member['trans_skilled_mw'];
$statistics['staff']['skilled']['mf'] += $member['trans_skilled_mf'];
$statistics['staff']['skilled']['fa'] += $member['trans_skilled_fa'];
$statistics['staff']['skilled']['fc'] += $member['trans_skilled_fc'];
$statistics['staff']['skilled']['fi'] += $member['trans_skilled_fi'];
$statistics['staff']['skilled']['fw'] += $member['trans_skilled_fw'];
$statistics['staff']['skilled']['ff'] += $member['trans_skilled_ff'];
$statistics['staff']['skilled']['male'] += $member['trans_skilled_ma'] + $member['trans_skilled_mc'] + $member['trans_skilled_mi'] + $member['trans_skilled_mw'] + $member['trans_skilled_mf'];
$statistics['staff']['skilled']['female'] += $member['trans_skilled_fa'] + $member['trans_skilled_fc'] + $member['trans_skilled_fi'] + $member['trans_skilled_fw'] + $member['trans_skilled_ff'];
// Semi-Skilled
$statistics['staff']['semi']['ma'] += $member['trans_semi_ma'];
$statistics['staff']['semi']['mc'] += $member['trans_semi_mc'];
$statistics['staff']['semi']['mi'] += $member['trans_semi_mi'];
$statistics['staff']['semi']['mw'] += $member['trans_semi_mw'];
$statistics['staff']['semi']['mf'] += $member['trans_semi_mf'];
$statistics['staff']['semi']['fa'] += $member['trans_semi_fa'];
$statistics['staff']['semi']['fc'] += $member['trans_semi_fc'];
$statistics['staff']['semi']['fi'] += $member['trans_semi_fi'];
$statistics['staff']['semi']['fw'] += $member['trans_semi_fw'];
$statistics['staff']['semi']['ff'] += $member['trans_semi_ff'];
$statistics['staff']['semi']['male'] += $member['trans_semi_ma'] + $member['trans_semi_mc'] + $member['trans_semi_mi'] + $member['trans_semi_mw'] + $member['trans_semi_mf'];
$statistics['staff']['semi']['female'] += $member['trans_semi_fa'] + $member['trans_semi_fc'] + $member['trans_semi_fi'] + $member['trans_semi_fw'] + $member['trans_semi_ff'];
// Unskilled
$statistics['staff']['unskill']['ma'] += $member['trans_unskill_ma'];
$statistics['staff']['unskill']['mc'] += $member['trans_unskill_mc'];
$statistics['staff']['unskill']['mi'] += $member['trans_unskill_mi'];
$statistics['staff']['unskill']['mw'] += $member['trans_unskill_mw'];
$statistics['staff']['unskill']['mf'] += $member['trans_unskill_mf'];
$statistics['staff']['unskill']['fa'] += $member['trans_unskill_fa'];
$statistics['staff']['unskill']['fc'] += $member['trans_unskill_fc'];
$statistics['staff']['unskill']['fi'] += $member['trans_unskill_fi'];
$statistics['staff']['unskill']['fw'] += $member['trans_unskill_fw'];
$statistics['staff']['unskill']['ff'] += $member['trans_unskill_ff'];
$statistics['staff']['unskill']['male'] += $member['trans_unskill_ma'] + $member['trans_unskill_mc'] + $member['trans_unskill_mi'] + $member['trans_unskill_mw'] + $member['trans_unskill_mf'];
$statistics['staff']['unskill']['female'] += $member['trans_unskill_fa'] + $member['trans_unskill_fc'] + $member['trans_unskill_fi'] + $member['trans_unskill_fw'] + $member['trans_unskill_ff'];
// Temp
$statistics['staff']['temp']['ma'] += $member['trans_temp_ma'];
$statistics['staff']['temp']['mc'] += $member['trans_temp_mc'];
$statistics['staff']['temp']['mi'] += $member['trans_temp_mi'];
$statistics['staff']['temp']['mw'] += $member['trans_temp_mw'];
$statistics['staff']['temp']['mf'] += $member['trans_temp_mf'];
$statistics['staff']['temp']['fa'] += $member['trans_temp_fa'];
$statistics['staff']['temp']['fc'] += $member['trans_temp_fc'];
$statistics['staff']['temp']['fi'] += $member['trans_temp_fi'];
$statistics['staff']['temp']['fw'] += $member['trans_temp_fw'];
$statistics['staff']['temp']['ff'] += $member['trans_temp_ff'];
$statistics['staff']['temp']['male'] += $member['trans_temp_ma'] + $member['trans_temp_mc'] + $member['trans_temp_mi'] + $member['trans_temp_mw'] + $member['trans_temp_mf'];
$statistics['staff']['temp']['female'] += $member['trans_temp_fa'] + $member['trans_temp_fc'] + $member['trans_temp_fi'] + $member['trans_temp_fw'] + $member['trans_temp_ff'];
// Totals
$statistics['staff']['totals']['ma'] += $member['trans_top_ma'] + $member['trans_senior_ma'] + $member['trans_prof_ma'] + $member['trans_skilled_ma'] + $member['trans_semi_ma'] + $member['trans_unskill_ma'] + $member['trans_temp_ma'];
$statistics['staff']['totals']['mc'] += $member['trans_top_mc'] + $member['trans_senior_mc'] + $member['trans_prof_mc'] + $member['trans_skilled_mc'] + $member['trans_semi_mc'] + $member['trans_unskill_mc'] + $member['trans_temp_mc'];
$statistics['staff']['totals']['mi'] += $member['trans_top_mi'] + $member['trans_senior_mi'] + $member['trans_prof_mi'] + $member['trans_skilled_mi'] + $member['trans_semi_mi'] + $member['trans_unskill_mi'] + $member['trans_temp_mi'];
$statistics['staff']['totals']['mw'] += $member['trans_top_mw'] + $member['trans_senior_mw'] + $member['trans_prof_mw'] + $member['trans_skilled_mw'] + $member['trans_semi_mw'] + $member['trans_unskill_mw'] + $member['trans_temp_mw'];
$statistics['staff']['totals']['mf'] += $member['trans_top_mf'] + $member['trans_senior_mf'] + $member['trans_prof_mf'] + $member['trans_skilled_mf'] + $member['trans_semi_mf'] + $member['trans_unskill_mf'] + $member['trans_temp_mf'];
$statistics['staff']['totals']['fa'] += $member['trans_top_fa'] + $member['trans_senior_fa'] + $member['trans_prof_fa'] + $member['trans_skilled_fa'] + $member['trans_semi_fa'] + $member['trans_unskill_fa'] + $member['trans_temp_fa'];
$statistics['staff']['totals']['fc'] += $member['trans_top_fc'] + $member['trans_senior_fc'] + $member['trans_prof_fc'] + $member['trans_skilled_fc'] + $member['trans_semi_fc'] + $member['trans_unskill_fc'] + $member['trans_temp_fc'];
$statistics['staff']['totals']['fi'] += $member['trans_top_fi'] + $member['trans_senior_fi'] + $member['trans_prof_fi'] + $member['trans_skilled_fi'] + $member['trans_semi_fi'] + $member['trans_unskill_fi'] + $member['trans_temp_fi'];
$statistics['staff']['totals']['fw'] += $member['trans_top_fw'] + $member['trans_senior_fw'] + $member['trans_prof_fw'] + $member['trans_skilled_fw'] + $member['trans_semi_fw'] + $member['trans_unskill_fw'] + $member['trans_temp_fw'];
$statistics['staff']['totals']['ff'] += $member['trans_top_ff'] + $member['trans_senior_ff'] + $member['trans_prof_ff'] + $member['trans_skilled_ff'] + $member['trans_semi_ff'] + $member['trans_unskill_ff'] + $member['trans_temp_ff'];
$totalMale = $member['trans_top_ma'] + $member['trans_senior_ma'] + $member['trans_prof_ma'] + $member['trans_skilled_ma'] + $member['trans_semi_ma'] + $member['trans_unskill_ma'] + $member['trans_temp_ma'] +
$member['trans_top_mc'] + $member['trans_senior_mc'] + $member['trans_prof_mc'] + $member['trans_skilled_mc'] + $member['trans_semi_mc'] + $member['trans_unskill_mc'] + $member['trans_temp_mc'] +
$member['trans_top_mi'] + $member['trans_senior_mi'] + $member['trans_prof_mi'] + $member['trans_skilled_mi'] + $member['trans_semi_mi'] + $member['trans_unskill_mi'] + $member['trans_temp_mi'] +
$member['trans_top_mw'] + $member['trans_senior_mw'] + $member['trans_prof_mw'] + $member['trans_skilled_mw'] + $member['trans_semi_mw'] + $member['trans_unskill_mw'] + $member['trans_temp_mw'] +
$member['trans_top_mf'] + $member['trans_senior_mf'] + $member['trans_prof_mf'] + $member['trans_skilled_mf'] + $member['trans_semi_mf'] + $member['trans_unskill_mf'] + $member['trans_temp_mf'];
$totalFemale = $member['trans_top_fa'] + $member['trans_senior_fa'] + $member['trans_prof_fa'] + $member['trans_skilled_fa'] + $member['trans_semi_fa'] + $member['trans_unskill_fa'] + $member['trans_temp_fa'] +
$member['trans_top_fc'] + $member['trans_senior_fc'] + $member['trans_prof_fc'] + $member['trans_skilled_fc'] + $member['trans_semi_fc'] + $member['trans_unskill_fc'] + $member['trans_temp_fc'] +
$member['trans_top_fi'] + $member['trans_senior_fi'] + $member['trans_prof_fi'] + $member['trans_skilled_fi'] + $member['trans_semi_fi'] + $member['trans_unskill_fi'] + $member['trans_temp_fi'] +
$member['trans_top_fw'] + $member['trans_senior_fw'] + $member['trans_prof_fw'] + $member['trans_skilled_fw'] + $member['trans_semi_fw'] + $member['trans_unskill_fw'] + $member['trans_temp_fw'] +
$member['trans_top_ff'] + $member['trans_senior_ff'] + $member['trans_prof_ff'] + $member['trans_skilled_ff'] + $member['trans_semi_ff'] + $member['trans_unskill_ff'] + $member['trans_temp_ff'];
$statistics['staff']['male_total'] += $totalMale;
$statistics['staff']['female_total'] += $totalFemale;
$statistics['staff']['total'] += $member['total_staff'];
if ($memberId > 0 && !isset($statistics['member_rows'][$memberId])) {
$statistics['member_rows'][$memberId] = $member;
}
if ($memberId > 0 && $member['total_staff'] != $totalMale + $totalFemale) {
$statistics['staff_levels_to_check'][$memberId] = $member;
$statistics['staff_levels_to_check'][$memberId]['total_female'] = $totalFemale;
$statistics['staff_levels_to_check'][$memberId]['total_male'] = $totalMale;
$statistics['staff_levels_to_check'][$memberId]['total_staff'] = $member['total_staff'];
// echo $member['id'] . ' - ' . $member['firm_name'] . ' - ' . $member['total_staff'] . ' : ' . $totalMale . ' : ' . $totalFemale . '<br />';
}
if (isset($member['ADecID']) && $member['ADecID'] > 0) {
$statistics['total_captured'] += 1;
}
// echo $member['TransProfMA'] . ' : ' . $member['trans_prof_ma'] . '<br />';
} //foreach member
$statistics['black_owned_turnover_data'] = [
[
'label' => 'Black Owned',
'data' => [
$statistics['turnover']['black_owned']['EME1']['num'],
$statistics['turnover']['black_owned']['EME2']['num'],
$statistics['turnover']['black_owned']['QSE1']['num'],
$statistics['turnover']['black_owned']['QSE2']['num'],
$statistics['turnover']['black_owned']['QSE3']['num'],
$statistics['turnover']['black_owned']['QSE4']['num'],
$statistics['turnover']['black_owned']['GEN1']['num'],
$statistics['turnover']['black_owned']['GEN2']['num'],
$statistics['turnover']['black_owned']['GEN3']['num'],
$statistics['turnover']['black_owned']['GEN4']['num'],
$statistics['turnover']['black_owned']['GEN5']['num'],
$statistics['turnover']['black_owned']['GEN6']['num'],
$statistics['turnover']['black_owned']['GEN7']['num'],
$statistics['turnover']['black_owned']['GEN8']['num'],
]
],
[
'label' => 'Not Black Owned',
'data' => [
$statistics['turnover']['not_black_owned']['EME1']['num'],
$statistics['turnover']['not_black_owned']['EME2']['num'],
$statistics['turnover']['not_black_owned']['QSE1']['num'],
$statistics['turnover']['not_black_owned']['QSE2']['num'],
$statistics['turnover']['not_black_owned']['QSE3']['num'],
$statistics['turnover']['not_black_owned']['QSE4']['num'],
$statistics['turnover']['not_black_owned']['GEN1']['num'],
$statistics['turnover']['not_black_owned']['GEN2']['num'],
$statistics['turnover']['not_black_owned']['GEN3']['num'],
$statistics['turnover']['not_black_owned']['GEN4']['num'],
$statistics['turnover']['not_black_owned']['GEN5']['num'],
$statistics['turnover']['not_black_owned']['GEN6']['num'],
$statistics['turnover']['not_black_owned']['GEN7']['num'],
$statistics['turnover']['not_black_owned']['GEN8']['num'],
]
]
];
$statistics['black_owned_staff_data'] = [
[
'label' => 'Black Owned',
'data' => [
$statistics['turnover']['black_owned']['EME1']['staff'],
$statistics['turnover']['black_owned']['EME2']['staff'],
$statistics['turnover']['black_owned']['QSE1']['staff'],
$statistics['turnover']['black_owned']['QSE2']['staff'],
$statistics['turnover']['black_owned']['QSE3']['staff'],
$statistics['turnover']['black_owned']['QSE4']['staff'],
$statistics['turnover']['black_owned']['GEN1']['staff'],
$statistics['turnover']['black_owned']['GEN2']['staff'],
$statistics['turnover']['black_owned']['GEN3']['staff'],
$statistics['turnover']['black_owned']['GEN4']['staff'],
$statistics['turnover']['black_owned']['GEN5']['staff'],
$statistics['turnover']['black_owned']['GEN6']['staff'],
$statistics['turnover']['black_owned']['GEN7']['staff'],
$statistics['turnover']['black_owned']['GEN8']['staff'],
]
],
[
'label' => 'Not Black Owned',
'data' => [
$statistics['turnover']['not_black_owned']['EME1']['staff'],
$statistics['turnover']['not_black_owned']['EME2']['staff'],
$statistics['turnover']['not_black_owned']['QSE1']['staff'],
$statistics['turnover']['not_black_owned']['QSE2']['staff'],
$statistics['turnover']['not_black_owned']['QSE3']['staff'],
$statistics['turnover']['not_black_owned']['QSE4']['staff'],
$statistics['turnover']['not_black_owned']['GEN1']['staff'],
$statistics['turnover']['not_black_owned']['GEN2']['staff'],
$statistics['turnover']['not_black_owned']['GEN3']['staff'],
$statistics['turnover']['not_black_owned']['GEN4']['staff'],
$statistics['turnover']['not_black_owned']['GEN5']['staff'],
$statistics['turnover']['not_black_owned']['GEN6']['staff'],
$statistics['turnover']['not_black_owned']['GEN7']['staff'],
$statistics['turnover']['not_black_owned']['GEN8']['staff'],
]
]
];
$statistics['bbbee_levels_data'] = [
[
'label' => 'Member Firms',
'data' => [
$statistics['bbbeeLevels']['Level1'],
$statistics['bbbeeLevels']['Level2'],
$statistics['bbbeeLevels']['Level3'],
$statistics['bbbeeLevels']['Level4'],
$statistics['bbbeeLevels']['Level5'],
$statistics['bbbeeLevels']['Level6'],
$statistics['bbbeeLevels']['Level7'],
$statistics['bbbeeLevels']['Level8'],
]
]
];
$staffLevels = ['tm', 'sm', 'pro', 'skilled', 'semi', 'unskill', 'temp'];
foreach ($staffLevels as $staffLevel) {
$statistics['staff_to_cat_data_' . $staffLevel] = [
'labels' => [
'Male - African',
'Male - Coloured',
'Male - Indian',
'Male - White',
'Male - Foreign',
'Female - African',
'Female - Coloured',
'Female - Indian',
'Female - White',
'Female - Foreign',
],
'datasets' => []
];
foreach ($turnOverCategoriesArray as $toLevel => $countStaff) {
$statistics['staff_to_cat_data_' . $staffLevel]['datasets'][] = [
'label' => $toLevel,
'data' => [
$statistics['turnover']['overall'][$toLevel]['transformation'][$staffLevel]['ma'],
$statistics['turnover']['overall'][$toLevel]['transformation'][$staffLevel]['mc'],
$statistics['turnover']['overall'][$toLevel]['transformation'][$staffLevel]['mi'],
$statistics['turnover']['overall'][$toLevel]['transformation'][$staffLevel]['mw'],
$statistics['turnover']['overall'][$toLevel]['transformation'][$staffLevel]['mf'],
$statistics['turnover']['overall'][$toLevel]['transformation'][$staffLevel]['fa'],
$statistics['turnover']['overall'][$toLevel]['transformation'][$staffLevel]['fc'],
$statistics['turnover']['overall'][$toLevel]['transformation'][$staffLevel]['fi'],
$statistics['turnover']['overall'][$toLevel]['transformation'][$staffLevel]['fw'],
$statistics['turnover']['overall'][$toLevel]['transformation'][$staffLevel]['ff'],
],
'stack' => $toLevel,
];
}
}
return $statistics;
}
/**
* Save a Member Firm
*
* @return array
*/
public function getTransformationStatistics()
{
$return = [];
$transformationManager = $this->getContainer()->get('member_firm_transformation.manager');
$return['members']['member_list'] = $this->em->getRepository(MemberFirm::class)->getList();
foreach ($return['members']['member_list'] as $key => $member) {
$memberFirm = $this->find($member['id']);
if (is_object($memberFirm)) {
// echo $memberFirm->getId() . '<br />';
$memberTransform = $transformationManager->findOneByArray(array('member_firm' => $memberFirm));
// var_dump(array_keys($memberTransform));
// exit;
if (is_array($memberTransform) && count($memberTransform) > 0) {
$return['members']['member_list'][$key] = array_merge($return['members']['member_list'][$key], $memberTransform[0]);
}
}
}
// echo count($return['members']['member_list']) . '<br />';
$return['members']['statistics'] = $this->processStats($return['members']['member_list']);
$return = $this->getContainer()->get('adec_member_firm.manager')->getLists($return);
return $return;
}
}