[Enhancement] AddressModel: Added 'id' parameter to getSqlFilter method

[Enhancement] PreorderModel: Added 'returnArray' parameter to reduce overhead

[Refactor] DashboardController: Reworked getPartnerOrdersByStatus method
This commit is contained in:
Luca Haid
2024-03-05 11:27:09 +01:00
parent 39f0940d42
commit 391f59ba7c
3 changed files with 219 additions and 180 deletions

View File

@@ -250,30 +250,57 @@ class DashboardController extends mfBaseController {
return $orders;
//var_dump($orders);exit;
}
private function getPartnerOrdersByStatus($preordercampaign_id = [], $gemeinde_id = false) {
$orders = [];
if($gemeinde_id) {
if ($gemeinde_id) {
$preorders = PreorderModel::searchActive(["preordercampaign_id" => $preordercampaign_id, "gemeinde_id" => $gemeinde_id]);
} else {
$preorders = PreorderModel::searchActive(["preordercampaign_id" => $preordercampaign_id]);
$preorders = PreorderModel::searchActive(["preordercampaign_id" => $preordercampaign_id], false, false, true);
}
foreach($preorders as $preorder) {
$name = $preorder->partner->getCompanyOrName();
if(!$name) $name = "Kein Partner";
if(!array_key_exists($name, $orders)) {
$preorderStatus = PreorderstatusModel::getAll();
$preorderStatus = array_column($preorderStatus, null, 'id');
$partners = [];
// log add partnerids from preorders
$parnerIDs = [];
foreach ($preorders as $preorder) {
if (!in_array($preorder->partner_id, $parnerIDs))
$parnerIDs[] = $preorder->partner_id;
}
foreach ($preorders as $preorder) {
$partnerId = $preorder->partner_id;
if (!array_key_exists($partnerId, $partners) && $partnerId !== null) {
$partner = AddressModel::getFirst(["id" => $partnerId]);
$partners[$partnerId] = $partner->getCompanyOrName();
$name = $partners[$partnerId];
} else if ($partnerId === null) {
$name = "Kein Partner";
} else {
$name = $partners[$partnerId];
}
if (!array_key_exists($name, $orders)) {
$orders[$name] = [];
$orders[$name]["total"] = 0;
}
if(!array_key_exists($preorder->status->id, $orders[$name])) {
$orders[$name][$preorder->status->id] = 0;
$status_id = $preorder->status_id;
$status_code = $preorderStatus[$status_id]->code;
if (!array_key_exists($preorder->status_id, $orders[$name])) {
$orders[$name][$preorder->status_id] = 0;
}
$orders[$name][$preorder->status->id]++;
$orders[$name][$preorder->status_id]++;
$orders[$name]["total"]++;
}
//var_dump($orders);exit;
return $orders;
}