WIP ConstructionConsent & update-statusflags script

This commit is contained in:
Frank Schubert
2024-12-18 19:49:18 +01:00
parent 0e6489ce20
commit 9c73bf4faf
7 changed files with 264 additions and 21 deletions

View File

@@ -80,6 +80,77 @@
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="kg">KG</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="kg" id="kg" value="<?=$item->kg?>" />
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="gst">GST</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="gst" id="gst" value="<?=$item->gst?>" />
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="gstnr">GSTNR</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="gstnr" id="gstnr" value="<?=$item->gstnr?>" />
</div>
</div>
<hr />
<h4>Nutzung</h4>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="usage_length">Länge auf Grundstück</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="usage_length" id="usage_length" value="<?=$item->usage_length?>" />
</div>
</div>
<div class="form-group row mt-3">
<div class="col-lg-2"></div>
<div class="col-lg-10">
<label>
<input type="checkbox" name="usage_pipe_on_plot" id="usage_pipe_on_plot" value="1" />
Verlegung von Rohren und Lichtwellenleitern am Grundstück
</label>
</div>
</div>
<div class="form-group row">
<div class="col-lg-2"></div>
<div class="col-lg-10">
<label>
<input type="checkbox" name="usage_pipe_in_building" id="usage_pipe_in_building" value="1" />
Verlegung von Rohren und Lichtwellenleitern in den darauf befindlichen Gebäuden
</label>
</div>
</div>
<div class="form-group row">
<div class="col-lg-2"></div>
<div class="col-lg-10">
<label>
<input type="checkbox" name="usage_manhole" id="usage_manhole" value="1" />
Errichtung eines Schachtes/einer Kabelmontagegrube und/oder eines LWL-Verteilschrankes/einer LWL-Abschlussbox
</label>
</div>
</div>
<div class="form-group row">
<div class="col-lg-2"></div>
<div class="col-lg-10">
<label>
<input type="checkbox" name="usage_owner" id="usage_owner" value="1" />
Die Nutzung der Liegenschaft seitens BB dient der Eigenversorgung der GE und/oder dessen Nutzer(in) und wird dieser entgeltlos zugestimmt
</label>
</div>
</div>
<div class="form-group row mt-3">
<label class="col-lg-2 col-form-label" for="note">Interne Notiz</label>

View File

@@ -36,8 +36,8 @@ $pagination_entity_name = "Zustimmungserklärungen";
<label class="form-label" for="filter_project_id">Projekt</label>
<select name="filter[project_id]" id="filter_project_id" class="form-control">
<option></option>
<?php foreach(ConstructionConsentNetwork::getAll() as $ccn): ?>
<option value="<?=$ccn->id?>" <?=(is_array($filter) && array_key_exists("project_id", $filter) && $ccn->id == $filter["project_id"]) ? "selected='selected'" : ""?>><?=$ccn->adb_netzgebiet->name?></option>
<?php foreach(ConstructionConsentProject::getAll() as $project): ?>
<option value="<?=$project->id?>" <?=(is_array($filter) && array_key_exists("project_id", $filter) && $project->id == $filter["project_id"]) ? "selected='selected'" : ""?>><?=$project->name?></option>
<?php endforeach; ?>
</select>
</div>
@@ -70,17 +70,6 @@ $pagination_entity_name = "Zustimmungserklärungen";
</div>
</div>
<?php if($me->is("Admin")): ?>
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-12">
<a href="<?=self::getUrl("ConstructionConsentProject")?>" class="btn btn-success">Projekte bearbeiten</a>
</div>
</div>
</div>
</div>
<?php endif; ?>
<div class="card">
<div class="card-body mb-3">

View File

@@ -85,7 +85,7 @@ $pagination_entity_name = "Zustimmungserklärungsprojekte";
</tr>
<?php foreach($projects as $project): ?>
<tr>
<td><?=$project->name?></td>
<td><a href="<?=self::getUrl("ConstructionConsent", "", ["filter" => ["project_id" => $project->id]])?>"><?=$project->name?></a></td>
<td>
<?php if(is_array($project->networks) && count($project->networks)): ?>
<ul>

View File

@@ -18,21 +18,44 @@ class ConstructionConsentController extends mfBaseController {
protected function indexAction() : void {
$this->layout()->setTemplate("ConstructionConsent/Index");
if ($this->request->resetFilter) {
if($this->request->resetFilter) {
unset($_SESSION[MFAPPNAME . '-ConstructionConsent-filter']);
$this->redirect("ConstructionConsent");
foreach($_SESSION as $key => $s) {
if(preg_match('/^' . MFAPPNAME . '-ConstructionConsent-filter-project-\d+$/', $key)) {
unset($_SESSION[$key]);
}
}
}
$filter = [];
if (is_array($this->request->filter)) {
if(is_array($this->request->filter)) {
$filter = $this->request->filter;
$_SESSION[MFAPPNAME . '-ConstructionConsent-filter'] = $filter;
if(isset($this->request->filter["project_id"]) && $this->request->filter["project_id"]) {
$filter_p_id = $filter["project_id"];
if(count($this->request->filter) == 1 && isset($_SESSION[MFAPPNAME . '-ConstructionConsent-filter-project-' . $filter_p_id])) {
$filter = $_SESSION[MFAPPNAME . '-ConstructionConsent-filter-project-' . $filter_p_id];
} else {
$_SESSION[MFAPPNAME . '-ConstructionConsent-filter-project-' . $filter["project_id"]] = $filter;
}
} else {
$_SESSION[MFAPPNAME . '-ConstructionConsent-filter'] = $filter;
}
} else {
if (array_key_exists(MFAPPNAME . '-ConstructionConsent-filter', $_SESSION) && count($_SESSION[MFAPPNAME . '-ConstructionConsent-filter'])) {
if(array_key_exists(MFAPPNAME . '-ConstructionConsent-filter', $_SESSION) && count($_SESSION[MFAPPNAME . '-ConstructionConsent-filter'])) {
$filter = $_SESSION[MFAPPNAME . '-ConstructionConsent-filter'];
if(isset($filter['project_id'])) {
$filter_p_id = $filter['project_id'];
if(isset($_SESSION[MFAPPNAME . '-ConstructionConsent-filter-project-' . $filter_p_id])) {
$filter = $_SESSION[MFAPPNAME . '-ConstructionConsent-filter-project-' . $filter_p_id];
}
}
}
}
//var_dump($_SESSION, $filter);exit;
$this->layout->set("filter", $filter);
$filter = $this->getPreparedFilter($filter);
@@ -88,6 +111,65 @@ class ConstructionConsentController extends mfBaseController {
$this->addAction();
}
protected function saveAction() {
$r = $this->request;
//var_dump($r->get());exit;
$id = $r->id;
if(is_numeric($id) && $id > 0) {
$mode = "edit";
$item = new ConstructionConsent($id);
if(!$item->id) {
$this->layout()->setFlash("Zustimmungserklärung nicht gefunden", "error");
$this->redirect("ConstructionConsent");
}
} else {
$id = false;
$mode = "add";
}
$data = [];
$data["constructionconsentproject_id"] = $r->constructionconsentproject_id;
$data["object_type"] = $r->object_type;
$data["name"] = $r->name;
$data["adb_street_id"] = $r->adb_street_id;
$data["ez"] = $r->ez;
$data["kg"] = $r->kg;
$data["gst"] = $r->gst;
$data["gstnr"] = $r->gstnr;
$data["usage_length"] = $r->usage_length;
$data["usage_pipe_on_plot"] = $r->usage_pipe_on_plot;
$data["usage_pipe_in_building"] = $r->usage_pipe_in_building;
$data["usage_manhole"] = $r->usage_manhole;
$data["usage_owner"] = $r->usage_owner;
if($mode == "add") {
$item = ConstructionConsent::create($data);
} else {
$item->update($data);
}
$this->layout()->set("item", $item);
$project = new ConstructionConsentProject($data["constructionconsentproject_id"]);
if(!$project->id) {
$this->layout()->setFlash("Projekt nicht gefunden", "error");
return $this->addAction();
}
if(!$data["object_type"] || !$data["adb_strasse_id"]) {
$this->layout()->setFlash("Bitte alle benötigten Felder ausfüllen", "error");
return $this->addAction();
}
if(!$item->save()) {
$this->layout()->setFlash("Fehler beim Speichern", "error");
return $this->addAction();
}
$this->layout()->setFlash("Zustimmungserklärung erfolgreich gespeichert", "success");
$this->redirect("ConstructionConsent");
}
protected function apiAction() {
if(!$this->me->is(["Admin","netowner"]) && !$this->me->can("Preorder")) {
$this->redirect("Dashboard");

View File

@@ -62,7 +62,7 @@ class Preorder extends mfBaseModel {
if($this->oaid != $old_oaid) {
$this->resetSaveNesting();
$this->save();
return true;
//return true;
}
//TODO: history start
@@ -464,7 +464,7 @@ class Preorder extends mfBaseModel {
}
$hflagval->value = $flag->value->value;
$hflagval->save();
$this->log->debug(__METHOD__.": Hausnummer flag ".$hflag->code." gespeichert");
$this->log->debug(__METHOD__.": Hausnummer flag ".$hflag->code." value '".$hflagval->value."' gespeichert");
}
// set wohneiheit flag

View File

@@ -23,6 +23,7 @@ class mfValuecache {
public function set($key, $value) {
$this->cache[$key] = $value;
return true;
}
public function getCache() {
@@ -31,6 +32,27 @@ class mfValuecache {
public function delete($key) {
unset($this->cache[$key]);
return true;
}
public function purge($beginning = "", $casesensitive = true) {
if(!$beginning) {
$this->cache = [];
return true;
}
foreach($this->cache as $key => $value) {
if(!$casesensitive) {
if(strpos(strtolower($key), strtolower($beginning)) === 0) {
unset($this->cache[$key]);
}
}
if(strpos($key, $beginning) === 0) {
unset($this->cache[$key]);
}
}
return true;
}
public function getMfObject($objectname, $id) {

View File

@@ -0,0 +1,79 @@
#!/usr/bin/php
<?php
//require 'vendor/autoload.php';
require("../../config/config.php");
define('FRONKDB_SQLDEBUG', false);
error_reporting(E_ALL & ~(E_NOTICE | E_STRICT | E_DEPRECATED));
require_once(LIBDIR . "/mvcfronk/mfRouter/mfRouter.php");
require_once(LIBDIR . "/mvcfronk/mfBase/mfBaseModel.php");
require_once(LIBDIR . "/mvcfronk/mfBase/mfBaseController.php");
$me = new User(1);
define("INTERNAL_USER_ID", $me->id);
define("INTERNAL_USER_USERNAME", $me->username);
define("MFBASE_BYPASS_LOGIN", true);
$log = mfLoghandler::singleton();
$f = 0;
$u = 0;
$status_codes = [300, 350, 351, 500];
$preorders = PreorderModel::searchActive(["status_code" => $status_codes]);
//$preorders = [new Preorder(1138)];
foreach($preorders as $preorder) {
if(!in_array($preorder->status->code, $status_codes)) continue;
$updated = false;
foreach(PreorderStatusflagModel::getAll() as $sflag) {
//$preorder = new Preorder($preorder->id);
if(!$sflag->id) {
var_dump($sflag);exit;
}
$sflag_val = PreorderStatusflagValueModel::getFirst(["preorder_id" => $preorder->id, "flag_id" => $sflag->id]);
if(!$sflag_val) {
$sflag_val = PreorderStatusflagValueModel::create([
"preorder_id" => $preorder->id,
"flag_id" => $sflag->id
]);
}
if($sflag_val->value != 1) {
$log->debug(__FILE__.": Setting flag ".$sflag->code." to 1 in Preorder ".$preorder->id);
$sflag_val->value = 1;
$sflag_val->save();
$updated = true;
$f++;
}
$hflag = ADBStatusflagModel::getFirst(["code" => $sflag->code]);
$hflag_val = ADBHausnummerStatusflagValueModel::getFirst(["hausnummer_id" => $preorder->adb_hausnummer_id, "flag_id" => $hflag->id]);
if(!$hflag_val) {
$hflag_val = ADBHausnummerStatusflagValueModel::create([
"hausnummer_id" => $preorder->adb_hausnummer_id,
"flag_id" => $hflag->id
]);
}
if($hflag_val->value != 1) {
$hflag_val->value = 1;
$log->debug(__FILE__.": Setting flag ".$hflag->code." to 1 in Hausnummer ".$preorder->adb_hausnummer_id);
$hflag_val->save();
}
mfValuecache::singleton()->purge("mfObjectmodel-Preorder", false);
mfValuecache::singleton()->purge("Preorder", false);
$log->debug("==========================================");
}
if($updated) {
$u++;
}
}
echo "Updated $f Flags for $u Preorders\n";