Added PreorderStatusflag to Preorder/Index
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 = [];
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user