WIP Preorder readonly user (meridiam)

This commit is contained in:
Frank Schubert
2024-10-10 14:17:11 +02:00
parent 729ae61812
commit 396e26c0a1
7 changed files with 102 additions and 19 deletions

View File

@@ -147,6 +147,14 @@
<small>Beschränkt Benutzer auf Netzgebiete. Überschreibt Netzgebiete der Firma. Wenn leer werden Netzgebiete der Firma angezeigt</small>
</div>
<div class="form-group" id="preorderreadonly-container">
<label for="preorderreadonly">Preorder Readonly:</label>
<select name="preorderreadonly" id="preorderreadonly" class="form-control">
<option value="false" <?=(isset($user) && !$user->is("preorderreadonly")) ? "selected='selected'" : ""?>>Read/Write</option>
<option value="true" <?=(isset($user) && $user->is("preorderreadonly")) ? "selected='selected'" : ""?>>Readonly</option>
</select>
</div>
<hr />
<h4 class="card-title mb-3">Modulberechtigungen</h4>

View File

@@ -117,12 +117,6 @@ $pagination_entity_name = "Benutzer";
style="text-align: left; letter-spacing: 4px; font-size: 1.1em;">
<a href="<?= self::getUrl("User", "edit", ['id' => $user->id]) ?>"
title="User bearbeiten"><i class="far fa-edit"></i></a>
<?php if ($user->id > 1): ?>
<a href="<?= self::getUrl("User", "delete", ['id' => $user->id]) ?>"
class="text-danger" title="User löschen"
onclick="if(!confirm('Benutzer wirklich löschen?')) return false;"><i
class="fas fa-trash"></i></a>
<?php endif; ?>
</td>
</tr>
<?php endforeach; ?>

View File

@@ -46,6 +46,7 @@ class PreorderApicontroller extends mfBaseApicontroller {
$this->addRoute("/preorder", "submitPreorder", "POST");
$this->addRoute("/preorder/open", "getOpenPreorders", "GET");
$this->addRoute("/preorder/all", "getAllPreorders", "GET");
$this->addRoute("/preorder/customerInstallationFeedback", [$modules["Cif"], "getCifData"], "GET");
$this->addRoute("/preorder/customerInstallationFeedback", [$modules["Cif"], "userSetCif"], "POST");
$this->addRoute("/preorder/fullexport", "exportPreorders", "GET");
@@ -191,7 +192,10 @@ class PreorderApicontroller extends mfBaseApicontroller {
}*/
$preorder_search = [];
$preorder_search['partner_id'] = $this->me->address_id;
if(!$this->me->preorderaddressreporting) {
$preorder_search['partner_id'] = $this->me->address_id;
}
if($update_ts) {
$preorder_search['add-where'] = "AND tt_preorder.`edit` > $update_ts";
} else {
@@ -204,11 +208,41 @@ class PreorderApicontroller extends mfBaseApicontroller {
foreach(PreorderModel::searchActive($preorder_search) as $preorder) {
$return[] = $preorder->getApiArray();
}
$this->requestLog->debug(print_r($return, true));
return mfResponse::Ok(["preorders" => $return]);
}
protected function getAllPreorders() {
// nicht auf cluster einschränken, sondern auf partner_id
/*
$preorder_search = [];
if(count($this->filter_salescluster_ids)) {
$preorder_search['netzgebiet_id'] = $this->filter_salescluster_ids;
}*/
$preorder_search = [];
if($this->me->preorderaddressreporting) {
} else {
// providers see their own orders
$preorder_search['partner_id'] = $this->me->address_id;
}
// if no timestamp, return only open orders (500 == finished)
$preorder_search['<status_code'] = 500;
$return = [];
foreach(PreorderModel::searchActive($preorder_search) as $preorder) {
$return[] = $preorder->getApiArray();
}
$this->requestLog->debug(print_r($return, true));
return mfResponse::Ok(["preorders" => $return]);
}
protected function getPreorder($code) {
$code = trim($code);
if(!$code) {

View File

@@ -988,7 +988,7 @@ class PreordercampaignController extends mfBaseController {
if($oaid->adb_wohneinheit_id != $wohneinheit->id) {
$rimo = new OpenAccessId_Helper_Rimo($oaid->oaid);
//$rimo = new OpenAccessId_Helper_Rimo($oaid->oaid);
$unit_ftu_data = $wohneinheit->ftu_data;
//var_dump($unit_ftu_data);
@@ -999,8 +999,8 @@ class PreordercampaignController extends mfBaseController {
$oaid_ftu = $oaid->getExportData("rimo");
//var_dump($oaid_ftu);
if($oaid_ftu->ftu_id) {
$rimo->unassignOaid($oaid_ftu->ftu_id);
$rimo->assignOaid($unit_ftu_data["id"]);
Rimoapi::unassignOaid($oaid->oaid, $oaid_ftu->ftu_id);
Rimoapi::assignOaid($oaid->oaid, $unit_ftu_data["id"]);
$oaid->updateExportData("rimo", "ftu_id", $unit_ftu_data["id"]);
$oaid->updateExportData("rimo", "ftu_name", $unit_ftu_data["name"]);

View File

@@ -80,7 +80,7 @@ class UserController extends mfBaseController
$this->layout()->set("addresses", $addresses);
}
protected function generateApikey($request)
protected function generateApikeyAction($request)
{
if (!$this->isAdmin()) {
$this->redirect("Dashboard");
@@ -220,6 +220,17 @@ class UserController extends mfBaseController
$user->permissions->preorderlogistics = "false";
}
if ($r->preorderaddressreporting == "true") {
$user->permissions->preorderaddressreporting = "true";
} else {
$user->permissions->preorderaddressreporting = "false";
}
if ($r->preorderreadonly == "true") {
$user->permissions->preorderreadonly = "true";
} else {
$user->permissions->preorderreadonly = "false";
}
// set can permissions
$user->permissions->canBuilding = "false";
@@ -272,8 +283,6 @@ class UserController extends mfBaseController
$enum->delete();
}
}
$this->layout()->setFlash("Benutzer gespeichert.", "success");
@@ -282,8 +291,11 @@ class UserController extends mfBaseController
protected function deleteAction($request)
{
$this->layout()->setFlash("nope");
$this->redirect("User");
if (!$this->isAdmin()) {
$this->redirect("Bridge");
$this->redirect("Dashboard");
}
$id = $request['id'];

View File

@@ -7,6 +7,7 @@ class WorkerPermission extends mfBaseModel {
public $isPreorderfront = false;
public $isPreorderaddressreporting = false;
public $isPreorderlogistics = false;
public $isPreorderreadonly = false;
public function loadByUserId($userid) {
$res = $this->db->select($this->table,"*","worker_id=$userid");
@@ -41,6 +42,9 @@ class WorkerPermission extends mfBaseModel {
if($this->preorderlogistics == 'true') {
$this->isPreorderlogistics = true;
}
if($this->preorderreadonly == 'true') {
$this->isPreorderreadonly = true;
}
}
}

View File

@@ -0,0 +1,31 @@
<?php
declare(strict_types=1);
use Phinx\Migration\AbstractMigration;
final class AddPreorderReadonlyPermission extends AbstractMigration
{
public function up(): void
{
if($this->getEnvironment() == "thetool") {
$table = $this->table ("WorkerPermission");
$table->addColumn("preorderreadonly", "enum", ["null" => false, "values" => 'false,true', "default" => "false", "after" => "preorderlogistics"]);
$table->update();
}
if($this->getEnvironment() == "addressdb") {
}
}
public function down(): void
{
if($this->getEnvironment() == "thetool") {
$this->table ("WorkerPermission")->removeColumn("preorderreadonly");
}
if($this->getEnvironment() == "addressdb") {
}
}
}