Preorder statistics update

This commit is contained in:
Frank Schubert
2024-01-22 10:26:48 +01:00
parent a90de85ddf
commit 3ab04b7a20
4 changed files with 67 additions and 39 deletions

View File

@@ -144,7 +144,7 @@
</div>
<div class="float-right">
<a class="btn btn-primary mb-2" href="<?=self::getUrl("AddressDB", "add")?>"><i class="fas fa-plus"></i> Neue Adresse anlegen</a>
<a class="btn btn-outline-violett mb-2" href="#" onclick="return false;"><i class="fas fa-marker"></i> Bulk update</a>
<!--a class="btn btn-outline-violett mb-2" href="#" onclick="return false;"><i class="fas fa-marker"></i> Bulk update</a-->
</div>

View File

@@ -69,18 +69,43 @@ $chartColors = [
<h4 class="card-title">Akquise Statistiken</h4>
</div>
<div class="card-body">
<div class="row mb-2">
<div class="row">
<div class="col">
<label for="campaign_id">Kampagne:</label>
<select name="campaign_id" id="campaign_id" class="form-control">
<option value="0">Alle</option>
<?php foreach($campaigns as $c): ?>
<option value="<?=$c->id?>" <?=($c->id == $campaign_id) ? 'selected="selected"' : ""?>><?=$c->name?></option>
<?php endforeach; ?>
</select>
<div class="card">
<div class="card-body">
<?php if($me->is("Admin")): ?>
<h5 class="mt-3">Netzinhaber:</h5>
<div class="row mb-2">
<div class="col-3 pb-1">
<a href="<?=self::getUrl("Dashboard")?>" class="form-control btn btn-rounded <?=(!$netowner_id) ? "btn-primary" : "btn-outline-primary"?>">Alle</a>
</div>
<?php foreach(AddressModel::search(["addresstype" => ["netowner"]]) as $netowner): ?>
<div class="col-3 pb-1">
<?php if($netowner_id == $netowner->id): ?>
<a href="<?=self::getUrl("Dashboard")?>" class="form-control btn btn-rounded btn-primary"><?=$netowner->getCompanyOrName()?></a>
<?php else: ?>
<a href="<?=self::getUrl("Dashboard", "", ["netowner_id" => $netowner->id])?>" class="form-control btn btn-rounded btn-outline-primary"><?=$netowner->getCompanyOrName()?></a>
<?php endif; ?>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
<label for="campaign_id">Kampagne:</label>
<select name="campaign_id" id="campaign_id" class="form-control">
<option value="0">Alle</option>
<?php foreach($campaigns as $c): ?>
<option value="<?=$c->id?>" <?=($c->id == $campaign_id) ? 'selected="selected"' : ""?>><?=$c->name?></option>
<?php endforeach; ?>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xl-3 col-lg-6">
<div class="card">

View File

@@ -39,50 +39,51 @@ class DashboardController extends mfBaseController {
$campaign_ids = [$campaign_ids];
}
$netowner_id = intval($r->netowner_id);
$this->layout()->set("netowner_id", $netowner_id);
if($this->me->is("Admin")) {
$campaigns = PreordercampaignModel::getAll();
if($netowner_id) {
$campaigns = PreordercampaignModel::search(["owner_id" => $netowner_id]);
} else {
$campaigns = PreordercampaignModel::getAll();
}
if(!$campaign_ids) {
foreach(PreordercampaignModel::getAll() as $campaign) {
$campaign_filter = [];
if($netowner_id) {
$campaign_filter['owner_id'] = $netowner_id;
}
foreach(PreordercampaignModel::search($campaign_filter) as $campaign) {
$campaign_ids[] = $campaign->id;
}
}
$max_connections = $this->getTotalHomes($campaign_ids);
$count_orders = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0]);
$weekly_orders = $this->getWeeklyOrders($campaign_ids);
$status_connected_single = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0, "status_code" => 244]);
$status_connected_multi = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0, "status_code" => 245]);
$status_connected = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0, "status_code" => 500]);
$partner_orders = $this->getPartnerOrderCount($campaign_ids);
$partner_orders_by_status = $this->getPartnerOrdersByStatus($campaign_ids);
} else {
$campaigns = PreordercampaignModel::search(["owner_id" => $this->me->address_id]);
$campaign_filter = ["preordercampaign_id" => $campaign_ids];
if(!$campaign_ids) {
foreach(PreordercampaignModel::search(["owner_id" => $this->me->address_id]) as $campaign) {
$campaign_ids[] = $campaign->id;
}
}
$max_connections = $this->getTotalHomes($campaign_ids);
$count_orders = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0]);
$weekly_orders = $this->getWeeklyOrders($campaign_ids);
$status_connected_single = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0, "status_code" => 244]);
$status_connected_multi = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0, "status_code" => 245]);
$status_connected = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0, "status_code" => 500]);
$partner_orders = $this->getPartnerOrderCount($campaign_ids);
$partner_orders_by_status = $this->getPartnerOrdersByStatus($campaign_ids);
}
if(!$campaign_ids) {
$campaign_ids = [0];
}
$max_connections = $this->getTotalHomes($campaign_ids);
$count_orders = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0]);
$weekly_orders = $this->getWeeklyOrders($campaign_ids);
$status_connected_single = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0, "status_code" => 244]);
$status_connected_multi = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0, "status_code" => 245]);
$status_connected = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0, "status_code" => 500]);
$partner_orders = $this->getPartnerOrderCount($campaign_ids);
$partner_orders_by_status = $this->getPartnerOrdersByStatus($campaign_ids);
$total_orders = $partner_orders["total"];
unset($partner_orders["total"]);

View File

@@ -2,7 +2,7 @@
class Preorder extends mfBaseModel {
protected $forcestr = ['street','company','zip','phone','email','note'];
private $in_after_save = false;
private $in_after_save = 0;
private $status;
private $campaign;
@@ -38,7 +38,7 @@ class Preorder extends mfBaseModel {
// prevent potential infinite loop
if($this->in_after_save) return true;
$this->in_after_save = true;
$this->in_after_save++;
// update preorder OAID if it's different from the unit OAID
// but only if the unit OAID is of the same origin as the campaign
$old_oaid = $this->oaid;
@@ -52,6 +52,8 @@ class Preorder extends mfBaseModel {
$this->cascadeStatus();
// Cascade status changes down all active preorders with the same hausnummer
$this->cascadeStatusToPreorders();
$this->in_after_save--;
}
/*