File: D:/HostingSpaces/MdnDirecteur/hours.komma.cloud/app/Komma/Companies/CompanyService.php
<?php
namespace App\Komma\Companies;
use App\Komma\Projects\ProjectService;
class CompanyService
{
private $companyRepository;
private $projectService;
public function __construct(CompanyRepository $companyRepository, ProjectService $projectService)
{
$this->companyRepository = $companyRepository;
$this->projectService = $projectService;
}
/**
* @param $action
* @param $search
* @return mixed
*/
public function action($action, $search)
{
//total objects per page
$paginate = 8;
// Load companies with all relations
$companies = $this->companyRepository->allCompanies($search);
// Get all companies
if ($action == "all") {
return $companies->withTrashed()->paginate($paginate);
} // Get all deleted companies
elseif ($action == "deleted") {
return $companies->onlyTrashed()->paginate($paginate);
} // Get all companies
else {
return $companies->paginate($paginate);
}
}
/**
* @param $company
* @param $budgets
* @return number
*/
public function getCompanyInformation($company, $budgets)
{
//make empty arrays
$volume = [];
$meanHourlyRate = [];
//make empty counter
$i = 1;
//if company has projects
if (count($company->Projects)) {
//create integer
$i = 0;
//loop trough projects
foreach ($company->Projects as $index => $project) {
//put volume (omzet) of project in array
$volume[] = intval($budgets[$index]->projectHours['totalHours']) * $project->hourly_rate;
//put mean hourly rate in array
$meanHourlyRate[] = $project->hourly_rate;
$i++;
}
}
//sum all arrays
$volume = array_sum($volume);
$meanHourlyRate = array_sum($meanHourlyRate) / $i;
//return
return compact('meanHourlyRate', 'volume');
}
/**
* @return array
*/
public function getCountCompanies()
{
//get all projects
$companies = $this->companyRepository->allCompanies('');
//count all projects
$countAll = $companies->withTrashed()->count();
//count all deleted projects
$countDeleted = $companies->onlyTrashed()->count();
//count all active projects
$countActive = $countAll-$countDeleted;
return compact('countAll', 'countActive', 'countDeleted');
}
}