diff --git a/Layout/default/Cpeprovisioning/Index.php b/Layout/default/Cpeprovisioning/Index.php index 4a55c29ef..c692d3944 100644 --- a/Layout/default/Cpeprovisioning/Index.php +++ b/Layout/default/Cpeprovisioning/Index.php @@ -74,16 +74,46 @@ order->owner->spin?> order->owner->getCompanyOrName()?> product->name?> - product->attributes['bras_type']->value?> + product->attributes['bras_type']->value?> - Down: product->attributes["bw_down"]?> / Up: product->attributes["bw_up"]?> termination_id): ?> - - - + termination->building->pop->vlan_public): ?> + + + termination->building->pop->vlan_nat): ?> + + + termination->building->pop->vlan_ipv6): ?> + + - - - + product->attributes['vlan_default_public']->value): ?> + + + product->attributes['vlan_default_nat']->value): ?> + + + product->attributes['vlan_default_ipv6']->value): ?> + + @@ -92,6 +122,7 @@ $vot = false; $hw = false; $voip = false; + foreach($product->order->products as $prod) { if(is_array($prod->product->attributes) && count($prod->product->attributes)) { if(array_key_exists("hw_only", $prod->product->attributes)) { @@ -124,94 +155,105 @@ "> -
-
- -
- - -
- -
- -
-
- - -
-
+
"> + + + + +
+
+ +
+ + +
-
-
- -
-
- -
-
- - /> + +
+
+ + +
-
- - -
-
- - /> + +
+
+ + +
-
-
-
- - /> + + +
+ +
+
+ + cpeprovisioning->shipping) ? "checked='checked'" : ""?> /> +
-
-
-
- - /> + + +
+
+ + /> +
-
-
-
- - /> +
+
+ + /> +
-
- -
-
- - +
+
+ + /> +
-
- -
-
- - +
+
+ + /> +
+ + + +
+
+ + cpeprovisioning->routerconfig_finished) ? "checked='checked'" : ""?> /> +
+
+ +
+
+ + +
+
+
- -
+ diff --git a/application/Cpeprovisioning/Cpeprovisioning.php b/application/Cpeprovisioning/Cpeprovisioning.php new file mode 100644 index 000000000..e488a74a4 --- /dev/null +++ b/application/Cpeprovisioning/Cpeprovisioning.php @@ -0,0 +1,6 @@ +products as $orderproduct) { + if($orderproduct->cpeprovisioning->routerconfig_finished == 1) { + continue; + } $product = $orderproduct->product; if(is_array($product->attributes) && count($product->attributes)) { @@ -59,9 +62,65 @@ class CpeprovisioningController extends mfBaseController { } } - //var_dump($cpeproducts);exit; - $this->layout()->set("products", $cpeproducts); + } + + protected function saveAction() { + $r = $this->request; + $id = $r->id; + var_dump($r); + if(is_numeric($id) && $id > 0) { + $mode = "edit"; + $cpeprovisioning = new Cpeprovisioning($id); + if(!$building->id) { + $this->layout()->setFlash("Eintrag nicht gefunden", "error"); + $this->redirect("Cpeprovisioning"); + } + } else { + $mode = "add"; + } + + $termination_id = $r->termination_id; + if(!(is_numeric($termination_id) && $termination_id > 0) && !(is_numeric($order_id) && $order_id > 0)) { + $this->layout()->setFlash("Anschluss oder Bestellung nicht gefunden", "error"); + $this->redirect("Cpeprovisioning"); + } + + $prov_data = []; + $prov_data["termination_id"] = $r->termination_id; + $prov_data["order_id"] = $r->order_id; + $prov_data["orderproduct_id"] = $r->orderproduct_id; + $prov_data["routerconfig_finished"] = ($r->routerconfig_finished) ? 1 : 0; + $prov_data["routertype"] = $r->routertype; + $prov_data["shipping"] = ($r->shipping) ? 1 : 0; + $prov_data["wifi_ssid"] = $r->wifi_ssid; + $prov_data["wifi_pass"] = $r->wifi_pass; + $prov_data["vlan_inet"] = (strlen($r->vlan_inet)) ? $r->vlan_inet : null; + $prov_data["vlan_nat"] = (strlen($r->vlan_nat)) ? $r->vlan_nat : null; + $prov_data["vlan_ipv6"] = (strlen($r->vlan_ipv6)) ? $r->vlan_ipv6 : null; + $prov_data["ship_weight"] = $r->ship_weight; + $prov_data["ship_length"] = $r->ship_length; + $prov_data["ship_width"] = $r->ship_width; + $prov_data["ship_height"] = $r->ship_height; + + $prov_data["edit_by"] = $this->me->id; + + if($mode == "add") { + $prov_data["create_by"] = $this->me->id; + $cpeprovisioning = CpeprovisioningModel::create($prov_data); + } else { + $cpeprovisioning->update($prov_data); + } + + //var_dump($prov_data);exit; + $new_id = $cpeprovisioning->save(); + if(!$new_id) { + $this->layout()->setFlash("Fehler beim Speichern", "error"); + $this->redirect("Cpeprovisioning"); + } + + $this->layout()->setFlash("Eintrag erfolgreich gespeichert.", "success"); + $this->redirect("Cpeprovisioning"); } diff --git a/application/Cpeprovisioning/CpeprovisioningModel.php b/application/Cpeprovisioning/CpeprovisioningModel.php new file mode 100644 index 000000000..11050b962 --- /dev/null +++ b/application/Cpeprovisioning/CpeprovisioningModel.php @@ -0,0 +1,162 @@ + $value) { + if(property_exists(get_called_class(), $field)) { + $model ->$field = $value; + } + } + + $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; + } + + public static function getOne($id) { + if(!is_numeric($id) || !$id) { + throw new Exception("Invalid number", 400); + } + $item = []; + $db = FronkDB::singleton(); + + $res = $db->select("Cpeprovisioning", "*", "id=$id LIMIT 1"); + if($db->num_rows($res)) { + $data = $db->fetch_object($res); + $item = new Cpeprovisioning($data); + } + return $item; + } + + public static function getFirst($filter) { + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + $res = $db->select("Cpeprovisioning", "*", "$where ORDER BY order_id,orderproduct_id,termination_id"); + if($db->num_rows($res)) { + $data = $db->fetch_object($res); + $item = new Cpeprovisioning($data); + if($item->id) { + return $item; + } else { + return null; + } + } + return null; + } + + public static function getAll() { + $items = []; + + $db = FronkDB::singleton(); + + $res = $db->select("Cpeprovisioning", "*", "1=1 ORDER BY order_id,orderproduct_id,termination_id"); + if($db->num_rows($res)) { + while($data = $db->fetch_object($res)) { + $items[] = new Cpeprovisioning($data); + } + } + return $items; + + } + + + public static function count($filter) { + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + $sql = "SELECT COUNT(*) as cnt FROM Cpeprovisioning WHERE $where"; + + $res = $db->query($sql); + if($db->num_rows($res)) { + $data = $db->fetch_object($res); + return $data->cnt; + } + return 0; + } + + public static function search($filter, $limit = false) { + $items = []; + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + + $sql = "SELECT * FROM Cpeprovisioning WHERE $where ORDER BY order_id,orderproduct_id,termination_id"; + + if(is_array($limit) && count($limit)) { + if(is_numeric($limit['start']) && is_numeric($limit['count'])) { + $sql .= " LIMIT ".$limit['start'].", ".$limit['count']; + } elseif(is_numeric($count)) { + $sql .= " LIMIT ".$limit['count']; + } + } + + $res = $db->query($sql); + if($db->num_rows($res)) { + while($data = $db->fetch_object($res)) { + $items[] = new Cpeprovisioning($data); + } + } + return $items; + } + + private function getSqlFilter($filter) { + $where = "1=1 "; + + if(array_key_exists("termination_id", $filter)) { + $termination_id = $filter['termination_id']; + if(is_numeric($termination_id)) { + $where .= " AND termination_id=$termination_id"; + } + } + + if(array_key_exists("order_id", $filter)) { + $order_id = $filter['order_id']; + if(is_numeric($order_id)) { + $where .= " AND order_id=$order_id"; + } + } + + if(array_key_exists("orderproduct_id", $filter)) { + $orderproduct_id = $filter['orderproduct_id']; + if(is_numeric($orderproduct_id)) { + $where .= " AND orderproduct_id=$orderproduct_id"; + } + } + + //var_dump($filter, $where);exit; + return $where; + } + +} diff --git a/application/Order/OrderModel.php b/application/Order/OrderModel.php index cdae31326..90544993f 100644 --- a/application/Order/OrderModel.php +++ b/application/Order/OrderModel.php @@ -237,7 +237,13 @@ class OrderModel { if($owner) { $where .= " AND (Address.company like '%$owner%' OR Address.firstname like '%$owner%' OR Address.lastname like '%$owner%')"; } - + } + + if(array_key_exists("owner", $filter)) { + $owner = FronkDB::singleton()->escape($filter['owner']); + if($owner) { + $where .= " AND (Address.company like '%$owner%' OR Address.firstname like '%$owner%' OR Address.lastname like '%$owner%')"; + } } if(array_key_exists("create_by", $filter)) { diff --git a/application/OrderProduct/OrderProduct.php b/application/OrderProduct/OrderProduct.php index 0e9522c9f..3dcf5f5cf 100644 --- a/application/OrderProduct/OrderProduct.php +++ b/application/OrderProduct/OrderProduct.php @@ -4,6 +4,7 @@ class OrderProduct extends mfBaseModel { private $order; private $product; private $termination; + private $cpeprovisioning; private $editor; private $creator; @@ -34,6 +35,12 @@ class OrderProduct extends mfBaseModel { public function getProperty($name) { if($this->$name == null) { + if($name == "cpeprovisioning") { + $this->cpeprovisioning = CpeprovisioningModel::getFirst(["orderproduct_id" => $this->id]); + return $this->cpeprovisioning; + } + + if($name == "creator") { if($this->id) { $this->creator = new User($this->create_by); diff --git a/application/Termination/Termination.php b/application/Termination/Termination.php index 54230c104..77f733fb1 100644 --- a/application/Termination/Termination.php +++ b/application/Termination/Termination.php @@ -7,6 +7,7 @@ class Termination extends mfBaseModel { private $status; private $lineworker; private $workflowitems; + private $cpeprovisioning; private $files; private $patching; private $creator; @@ -163,6 +164,11 @@ class Termination extends mfBaseModel { return $this->patching; } + if($name == "Cpeprovisioning") { + $this->cpeprovisioning = CpeprovisioningModel::getFirst(["termination_id" => $this->id]); + return $this->cpeprovisioning; + } + $classname = ucfirst($name); $idfield = $name."_id"; $this->$name = new $classname($this->$idfield);