Added PreorderStatusflag to Preorder/Index

This commit is contained in:
Frank Schubert
2024-07-29 14:44:08 +02:00
parent 44483cdaca
commit 4abaa50f56
7 changed files with 196 additions and 9 deletions

View File

@@ -630,6 +630,51 @@
return false;
}
}
$("input.preorder-statusflag").change((e) => {
var elem = e.target;
var preorder_id = $(elem).data("preorder_id");
var flag_id = $(elem).data("flag_id");
var value = $(elem).prop("checked") ? 1 : 0;
$.ajax({
url: "<?=self::getUrl("Preorder", "api")?>",
type: "POST",
data: {
do: "setStatusFlag",
preorder_id: preorder_id,
flag_id: flag_id,
value: value
},
dataType: "json",
context: {
elem: elem,
preorder_id: preorder_id,
flag_id: flag_id,
},
success: function (success) {
var textelem = $("#preorder-" + this.preorder_id + "-statusflag-" + this.flag_id + "-text");
if(success.status != "OK") {
notify("error","Fehler beim Speichern des Statusflags");
$(this.elem).prop("checked", !$(this.elem).prop("checked"));
} else {
textelem.removeClass("text-danger").addClass("text-success");
setTimeout(function() {
textelem.removeClass("text-success");
textelem.removeClass("text-success")
}, 2000, textelem);
}
},
error: function () {
notify("error","Fehler beim Speichern des Statusflags");
$(this.elem).prop("checked", !$(this.elem).prop("checked"));
}
});
});
// navigation
var preorder_id;

View File

@@ -5,13 +5,15 @@
<div class="row justify-content-center mt-2">
<div class="col-12">
<ul class="nav nav-tabs order-tab">
<li class="nav-item"><a class="nav-link active" href="#preorder-detail-<?=$preorder->id?>-detail" data-toggle="tab" aria-expanded="false">Details</a></li>
<li class="nav-item"><a class="nav-link active" href="#preorder-detail-<?=$preorder->id?>-detail" data-toggle="tab" aria-expanded="false">Bestellung</a></li>
<li class="nav-item"><a class="nav-link" href="#preorder-detail-<?=$preorder->id?>-flags" data-toggle="tab" aria-expanded="false">Status</a></li>
<li class="nav-item"><a class="nav-link" href="#preorder-detail-<?=$preorder->id?>-address" data-toggle="tab" aria-expanded="false">Adressdetails</a></li>
<li class="nav-item"><a class="nav-link" href="#preorder-detail-<?=$preorder->id?>-rimo" data-toggle="tab" aria-expanded="false">RIMO</a></li>
<?php if($me->is("Admin") && $preorder->adb_hausnummer->borderpoint_lat && $preorder->adb_hausnummer->borderpoint_long): ?>
<li class="nav-item"><a class="nav-link" href="#preorder-detail-<?=$preorder->id?>-map" data-toggle="tab" aria-expanded="false" onclick="loadBorderpointMap(<?=$preorder->id?>)">Übergabepunkt</a></li>
<?php endif; ?>
<li class="nav-item"><a class="nav-link" href="#preorder-detail-<?=$preorder->id?>-history" data-toggle="tab" aria-expanded="false">History</a></li>
<li class="nav-item"><a class="nav-link" href="#preorder-detail-<?=$preorder->id?>-history" data-toggle="tab" aria-expanded="false">History</a></li>
</ul>
</div>
@@ -466,6 +468,51 @@
</div>
</div>
<div id="preorder-detail-<?=$preorder->id?>-flags" class="tab-pane">
<div class="row justify-content-center">
<div class="col-12">
<div class="card">
<div class="card-body">
<div class="card-header bg-info text-white pl-2 pr-2 pt-1 pb-1">Status</div>
<div class="row">
<div class="col-6">
<h3>Bestellstatus</h3>
<table class="table table-sm table-striped">
<tr>
<th>Status Code</th>
<td class="text-monospace"><?=$preorder->status->code?></td>
</tr><tr>
<th>Status Text</th>
<td class="text-monospace"><?=$preorder->status->name?></td>
</tr>
</table>
</div>
<div class="col-6">
<h3>Statusflags</h3>
<table class="table table-sm table-striped">
<?php foreach(PreorderStatusflagModel::getAll() as $flag): ?>
<tr>
<th class="text-right">
<input type="checkbox" class="form-control preorder-statusflag"
id="preorder-<?=$preorder->id?>-statusflag-<?=$flag->id?>"
data-preorder_id="<?=$preorder->id?>"
data-flag_id="<?=$flag->id?>"
<?=(array_key_exists($flag->id, $preorder->statusflags) && $preorder->statusflags[$flag->id]->value && $preorder->statusflags[$flag->id]->value->value) ? "checked='checked'" : ""?>
/>
</th>
<td class="text-monospace align-middle" id="preorder-<?=$preorder->id?>-statusflag-<?=$flag->id?>-text"><?=$preorder->statusflags[$flag->id]->code?> - <?=$preorder->statusflags[$flag->id]->name?></td>
</tr>
<?php endforeach; ?>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="preorder-detail-<?=$preorder->id?>-history" class="tab-pane">
<div class="row justify-content-center">
<div class="col-12">

View File

@@ -5,6 +5,7 @@ class Preorder extends mfBaseModel {
private $in_after_save = 0;
private $status;
private $statusflags;
private $campaign;
private $partner;
private $discounts;
@@ -658,6 +659,18 @@ class Preorder extends mfBaseModel {
}
return $this->status;
}
if($name == "statusflags") {
$flags = [];
foreach(PreorderStatusflagModel::getAll() as $flag) {
$flag->preorder_id = $this->id;
$flags[$flag->id] = $flag;
}
if(count($flags)) {
$this->statusflags = $flags;
}
return $this->statusflags;
}
if($name == "partner") {
$this->partner = mfValuecache::singleton()->get("mfObjectmodel-Address-".$this->partner_id);

View File

@@ -914,6 +914,9 @@ class PreorderController extends mfBaseController {
case "savePatchposition":
$return = $this->savePatchpositionApi();
break;
case "setStatusFlag":
$return = $this->setStatusFlagAction();
break;
default:
$return = false;
}
@@ -926,7 +929,38 @@ class PreorderController extends mfBaseController {
$data['result'] = $return;
$this->returnJson($data);
}
private function setStatusFlagAction() {
$preorder_id = $this->request->preorder_id;
$flag_id = $this->request->flag_id;
$value = $this->request->value;
if(!$preorder_id || !$flag_id) {
return false;
}
$flag = new PreorderStatusflag($flag_id);
if(!$flag->id) {
return false;
}
$flagvalue = PreorderStatusflagValueModel::getFirst(["preorder_id" => $preorder_id, "flag_id" => $flag_id]);
if(!$flagvalue) {
$flagvalue = PreorderStatusflagValueModel::create([
"preorder_id" => $preorder_id,
"flag_id" => $flag_id
]);
}
$flagvalue->value = ($value) ? 1 : 0;
if(!$flagvalue->save()) {
return false;
}
return ["message" => "Statusflag saved successfully"];
}
private function getFilteredPreordersApi() {
$preorders = [];
$filter = [];

View File

@@ -1,5 +1,52 @@
<?php
class PreorderStatusflag extends mfBaseModel {
private $value;
public $preorder_id;
public function getProperty($name) {
if($this->$name == null) {
if($name == "value") {
if(!$this->preorder_id) return null;
$value = PreorderStatusflagValueModel::getFirst(["preorder_id" => $this->preorder_id, "flag_id" => $this->id]);
$this->value = $value;
return $this->value;
}
if($name == "creator") {
$user = mfValuecache::singleton()->get("Worker-id-".$this->create_by);
if($user) {
$this->creator = $user;
return $this->creator;
}
$this->creator = new User($this->create_by);
if($this->creator->id) {
mfValuecache::singleton()->set("Worker-id-".$this->create_by, $this->creator);
}
return $this->creator;
}
if($name == "editor") {
$this->editor = new User($this->edit_by);
return $this->editor;
}
$classname = ucfirst($name);
$idfield = $name."_id";
$this->$name = mfValuecache::singleton()->get("mfObjectmodel-$name-".$this->$idfield);
if(!$this->$name) {
$this->$name = new $classname($this->$idfield);
}
if($this->$name->id) {
mfValuecache::singleton()->set("mfObjectmodel-$name-".$this->$name->id, $this->$name);
return $this->$name;
} else {
return null;
}
}
return $this->$name;
}
}

View File

@@ -5,8 +5,6 @@ class PreorderStatusflagValueModel {
public $preorder_id;
public $flag_id;
public $value;
public $old_value;
public $new_value;
public $create_by;
public $edit_by;
public $create;
@@ -42,7 +40,8 @@ class PreorderStatusflagValueModel {
$db = FronkDB::singleton();
$where = self::getSqlFilter($filter);
$res = $db->select("PreorderStatusflagValue", "*", "$where ORDER BY statusflag_id LIMIT 1");
$res = $db->select("PreorderStatusflagValue", "*", "$where ORDER BY flag_id LIMIT 1");
if ($db->num_rows($res)) {
$data = $db->fetch_object($res);
$item = new PreorderStatusflagValue($data);
@@ -60,7 +59,7 @@ class PreorderStatusflagValueModel {
$db = FronkDB::singleton();
$res = $db->select("PreorderStatusflagValue", "*", "1=1 ORDER BY statusflag_id");
$res = $db->select("PreorderStatusflagValue", "*", "1=1 ORDER BY flag_id");
if ($db->num_rows($res)) {
while ($data = $db->fetch_object($res)) {
$items[] = new PreorderStatusflagValue($data);
@@ -92,7 +91,7 @@ class PreorderStatusflagValueModel {
$where = self::getSqlFilter($filter);
$sql = "SELECT * FROM PreorderStatusflagValue
WHERE $where
ORDER BY statusflag_id";
ORDER BY flag_id";
mfLoghandler::singleton()->debug($sql);
if (is_array($limit) && count($limit)) {
@@ -116,7 +115,6 @@ class PreorderStatusflagValueModel {
$where = "1=1 ";
if (array_key_exists("preorder_id", $filter)) {
$preorder_id = $filter['preorder_id'];
if (is_numeric($preorder_id)) {

View File

@@ -58,12 +58,15 @@ final class CreatePreorderstatusFlag extends AbstractMigration
])->save();
$psfv = $this->table("PreorderStatusflagValue");
$psfv->addColumn("preorder_id", "integer", ["null" => false]);
$psfv->addColumn("flag_id", "integer", ["null" => false]);
$psfv->addColumn("value", "integer", ["null" => false]);
$psfv->addColumn("create_by", "integer", ["null" => false]);
$psfv->addColumn("edit_by", "integer", ["null" => false]);
$psfv->addColumn("create", "integer", ["null" => false]);
$psfv->addColumn("edit", "integer", ["null" => false]);
$psfv->addIndex("preorder_id");
$psfv->addIndex(["preorder_id", "flag_id"]);
$psfv->save();
}