Can now save Network Roles

This commit is contained in:
Frank Schubert
2021-07-01 22:40:39 +02:00
parent fc9064ea91
commit dd8db7904d
8 changed files with 242 additions and 134 deletions
@@ -0,0 +1,103 @@
<?php
class NetworkAddressController extends mfBaseController {
protected function init() {
$this->needlogin=true;
$me = new User();
$me->loadMe();
$this->me = $me;
$this->layout()->set("me",$me);
/*
if(!$me->isAdmin()) {
$this->redirect("Dashboard");
}*/
}
protected function saveAction() {
$r = $this->request;
if(!is_array($r->roles)) {
$this->redirect("Network");
}
if(!$r->network_id) {
$this->redirect("Network");
}
$network_id = $r->network_id;
$network = new Network($network_id);
if(!$network->id) {
$this->layout()->setFlash("Netzgebiet nicht gefunden.", "error");
$this->redirect("Network");
}
foreach($r->roles as $address_id => $new_roles) {
$address = new Address($address_id);
if(!$address->id) {
$this->layout()->setFlash("Person/Firma nicht gefunden.", "error");
$this->redirect("Network");
}
foreach(TT_NETWORK_ROLES as $rolestring) {
if(in_array($rolestring, $new_roles)) {
// check if role exists
if(NetworkAddressModel::search(['network_id' => $network, 'address_id' => $address_id, 'addresstype' => [$rolestring]])) {
continue; // role exists
} else {
$na = NetworkAddressModel::create(['network_id' => $network_id, 'address_id' => $address_id, 'type' => $rolestring]);
$na->save();
}
// role does not exist, create it
} else {
// not in new_roles, delete (if exists)
$na = NetworkAddressModel::getFirst(['network_id' => $network, 'address_id' => $address_id, 'addresstype' => [$rolestring]]);
if($na) {
$na->delete();
}
}
}
}
$this->redirect("Network");
}
protected function createAction() {
//var_dump($this->request);
//var_dump($r->roles);exit;
$r = $this->request;
//var_dump($r->roles);exit;
if(!is_array($r->roles)) {
$this->redirect("Network");
}
if(!$r->network_id) {
$this->redirect("Network");
}
$network_id = $r->network_id;
$network = new Network($network_id);
if(!$network->id) {
$this->log->info("Netzgebiet nicht gefunden (".$network_id.")");
$this->layout()->setFlash("Netzgebiet nicht gefunden.", "error");
$this->redirect("Network");
}
if(!$r->address_id) {
$this->redirect("Network");
}
$address_id = $r->address_id;
$address = new Address($address_id);
if(!$address->id) {
$this->log->info("Person/Firma nicht gefunden (".$address_id.")");
$this->layout()->setFlash("Person/Firma nicht gefunden.", "error");
$this->redirect("Network");
}
foreach($r->roles as $type) {
$na = NetworkAddressModel::create(['network_id' => $network_id, 'address_id' => $address_id, 'type' => $type]);
$na->save();
}
$this->redirect("Network");
}
}
@@ -19,6 +19,16 @@ class NetworkAddressModel {
}
}
$me = new User();
$me->loadMe();
if($model->create_by === null) {
$model->create_by = $me->id;
}
if($model->edit_by === null) {
$model->edit_by = $me->id;
}
return $model;
}
@@ -85,7 +95,8 @@ class NetworkAddressModel {
private function getSqlFilter($filter) {
$where = "1=1 ";
$db = FronkDB::singleton();
//var_dump($filter);exit;
if(array_key_exists("network_id", $filter)) {
$network_id = $filter['network_id'];
@@ -101,6 +112,22 @@ class NetworkAddressModel {
}
}
if(is_array($filter['addresstype']) && count($filter['addresstype'])) {
$at = $filter['addresstype'];
$in = [];
foreach(TT_ROLES as $role) {
if(in_array($role, $at)) {
$in[] = "NetworkAddress.type = '$role'";
}
}
$or = "";
if(count($in)) {
$or = implode(" OR ", $in);
$where .= " AND ( $or )";
}
}
//var_dump($filter, $where);exit;
return $where;
}