diff --git a/Layout/default/Order/Form.php b/Layout/default/Order/Form.php new file mode 100644 index 000000000..8f390303a --- /dev/null +++ b/Layout/default/Order/Form.php @@ -0,0 +1,383 @@ + + + +
+
+
+
+ +
+

Bestellungen

+
+
+
+ + +
+
+ +
+
+

id) ? "Bestellung bearbeiten" : "Neue Bestellung"?>

+ +
"> +
+
+ + + +
+
+ + +
+ + + +
+

Vertragsinhaber

+ +
+ + +
+ +
+
+ +
+ +
+

Rechungsadresse

+ +
+ + +
+
+
+
+
+ + +

Verrechnung

+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
+ +

Einwilligungen

+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+ +
+
+
+ +
+ +
+
+
+
+ + + +
+ +
+ +
+
+ + + +
+
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/Layout/default/Order/Index.php b/Layout/default/Order/Index.php new file mode 100644 index 000000000..51a128017 --- /dev/null +++ b/Layout/default/Order/Index.php @@ -0,0 +1,70 @@ + + + +
+
+
+
+ +
+

Bestellungen

+
+
+
+ + +
+
+ +
+
+
+

Liste aller Bestellungen

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
KundeAdresseAnschlussadresseKontaktBestellt amZuletzt bearbeitetBearbeitet von
owner->getCompanyOrName())?> + owner->street?>
+ owner->zip?> owner->city?> +
+ termination->building->street?>termination->name) ? " ".$order->termination->name : ""?>
+ termination->building->zip?> termination->building->city?> +
contact->getCompanyOrName()?>create?>edit?>editor->name?> + $order->id])?>"> + $order->id])?>" onclick="if(!confirm('Bestellung wirklich löschen?')) return false;" class="text-danger" title="Löschen"> +
+
+
+ +
+
+ + \ No newline at end of file diff --git a/Layout/default/menu.php b/Layout/default/menu.php index edb6262f1..9ecd54144 100644 --- a/Layout/default/menu.php +++ b/Layout/default/menu.php @@ -40,6 +40,15 @@ +
  • + + Verkauf
    +
    + +
  • + diff --git a/application/AddressFile/AddressFile.php b/application/AddressFile/AddressFile.php new file mode 100644 index 000000000..de255e6e0 --- /dev/null +++ b/application/AddressFile/AddressFile.php @@ -0,0 +1,5 @@ + $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("AddressFile", "*", "id=$id LIMIT 1"); + if($db->num_rows($res)) { + $data = $db->fetch_object($res); + $item = new AddressFile($data); + } + return $item; + } + + public static function getAll() { + $items = []; + + $db = FronkDB::singleton(); + + $res = $db->select("AddressFile", "*", "1=1 ORDER BY name, filename"); + if($db->num_rows($res)) { + while($data = $db->fetch_object($res)) { + $items[] = new AddressFile($data); + } + } + return $items; + + } + + public static function getFirst() { + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + $res = $db->select("AddressFile", "*", "$where ORDER BY name, filename"); + if($db->num_rows($res)) { + $data = $db->fetch_object($res); + $item = new AddressFile($data); + if($item->id) { + return $item; + } else { + return null; + } + } + return null; + } + + public static function search($filter) { + $items = []; + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + //$res = $db->select("AddressFile", "*", "$where ORDER BY name, filename"); + + $sql = "SELECT AddressFile.* FROM AddressFile + LEFT JOIN File ON (Address.file_id = File.id) + $where + ORDER BY address_id, name"; + + $res = $db->query($sql); + + if($db->num_rows($res)) { + while($data = $db->fetch_object($res)) { + $items[] = new AddressFile($data); + } + } + return $items; + } + + private function getSqlFilter($filter) { + $where = "1=1 "; + + + if(array_key_exists("file_id", $filter)) { + $file_id = $filter['file_id']; + if(is_numeric($file_id)) { + $where .= " AND file_id=$file_id"; + } + } + + if(array_key_exists("address_id", $filter)) { + $address_id = $filter['address_id']; + if(is_numeric($address_id)) { + $where .= " AND address_id=$address_id"; + } + } + + //var_dump($filter);exit; + if(array_key_exists("name", $filter)) { + $name = FronkDB::singleton()->escape($filter['name']); + if($name) { + $where .= " AND name='$name'"; + } + } + + if(array_key_exists("filename", $filter)) { + $filename = FronkDB::singleton()->escape($filter['filename']); + if($filename) { + $where .= " AND File.filename='$filename'"; + } + } + + if(array_key_exists("subfolder", $filter)) { + $subfolder = FronkDB::singleton()->escape($filter['subfolder']); + if($subfolder) { + $where .= " AND File.subfolder='$subfolder'"; + } + } + + //var_dump($filter, $where);exit; + return $where; + } + +} \ No newline at end of file diff --git a/application/File/File.php b/application/File/File.php new file mode 100644 index 000000000..991ebd694 --- /dev/null +++ b/application/File/File.php @@ -0,0 +1,5 @@ +needlogin=true; + $me = new User(); + $me->loadMe(); + $this->me = $me; + $this->layout()->set("me",$me); + + /*if(!$me->isAdmin()) { + $this->redirect("Dashboard"); + }*/ + } +} \ No newline at end of file diff --git a/application/File/FileModel.php b/application/File/FileModel.php new file mode 100644 index 000000000..ffd310970 --- /dev/null +++ b/application/File/FileModel.php @@ -0,0 +1,128 @@ + $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("File", "*", "id=$id LIMIT 1"); + if($db->num_rows($res)) { + $data = $db->fetch_object($res); + $item = new File($data); + } + return $item; + } + + public static function getAll() { + $items = []; + + $db = FronkDB::singleton(); + + $res = $db->select("File", "*", "1=1 ORDER BY name, filename"); + if($db->num_rows($res)) { + while($data = $db->fetch_object($res)) { + $items[] = new File($data); + } + } + return $items; + + } + + public static function getFirst() { + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + $res = $db->select("File", "*", "$where ORDER BY name, filename"); + if($db->num_rows($res)) { + $data = $db->fetch_object($res); + $item = new File($data); + if($item->id) { + return $item; + } else { + return null; + } + } + return null; + } + + public static function search($filter) { + $items = []; + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + $res = $db->select("File", "*", "$where ORDER BY name, filename"); + if($db->num_rows($res)) { + while($data = $db->fetch_object($res)) { + $items[] = new File($data); + } + } + return $items; + } + + private function getSqlFilter($filter) { + $where = "1=1 "; + + //var_dump($filter);exit; + if(array_key_exists("name", $filter)) { + $name = FronkDB::singleton()->escape($filter['name']); + if($name) { + $where .= " AND name='$name'"; + } + } + + if(array_key_exists("filename", $filter)) { + $filename = FronkDB::singleton()->escape($filter['filename']); + if($filename) { + $where .= " AND filename='$filename'"; + } + } + + if(array_key_exists("subfolder", $filter)) { + $subfolder = FronkDB::singleton()->escape($filter['subfolder']); + if($subfolder) { + $where .= " AND subfolder='$subfolder'"; + } + } + + //var_dump($filter, $where);exit; + return $where; + } + +} \ No newline at end of file diff --git a/application/Order/Order.php b/application/Order/Order.php new file mode 100644 index 000000000..3eb42fd70 --- /dev/null +++ b/application/Order/Order.php @@ -0,0 +1,71 @@ +$name == null) { + + if($name == "owner") { + if($this->id) { + $this->owner = new Address($this->owner_id); + return $this->owner; + } else { + return null; + } + } + + if($name == "contact") { + if($this->id) { + $this->contact = new Address($this->contact_id); + return $this->contact; + } else { + return null; + } + } + + if($name == "billingaddress") { + if($this->id) { + $this->billingaddress = new Address($this->billingaddress_id); + return $this->billingaddress; + } else { + return null; + } + } + + if($name == "creator") { + if($this->id) { + $this->creator = new User($this->create_by); + return $this->creator; + } else { + return null; + } + } + + if($name == "editor") { + if($this->id) { + $this->editor = new User($this->edit_by); + return $this->editor; + } else { + return null; + } + } + + $classname = ucfirst($name); + $idfield = $name."_id"; + $this->$name = new $classname($this->$idfield); + + if($this->$name->id) { + return $this->$name; + } else { + return null; + } + } + + return $this->$name; + } + +} \ No newline at end of file diff --git a/application/Order/OrderController.php b/application/Order/OrderController.php new file mode 100644 index 000000000..40b119b5d --- /dev/null +++ b/application/Order/OrderController.php @@ -0,0 +1,27 @@ +needlogin=true; + $me = new User(); + $me->loadMe(); + $this->me = $me; + $this->layout()->set("me",$me); + + if(!$me->isAdmin()) { + $this->redirect("Dashboard"); + } + } + + protected function indexAction() { + $this->layout()->setTemplate("Order/Index"); + $this->layout()->set("orders", OrderModel::getAll()); + + } + + protected function addAction() { + $this->layout()->setTemplate("Order/Form"); + $this->layout()->set("addresses", AddressModel::search(['parents_only' => 1])); + } +} \ No newline at end of file diff --git a/application/Order/OrderModel.php b/application/Order/OrderModel.php new file mode 100644 index 000000000..254335451 --- /dev/null +++ b/application/Order/OrderModel.php @@ -0,0 +1,135 @@ + $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("Order", "*", "id=$id LIMIT 1"); + if($db->num_rows($res)) { + $data = $db->fetch_object($res); + $item = new Order($data); + } + return $item; + } + + public static function getAll() { + $items = []; + + $db = FronkDB::singleton(); + + $res = $db->select("Order", "*", "1=1 ORDER BY name, filename"); + if($db->num_rows($res)) { + while($data = $db->fetch_object($res)) { + $items[] = new Order($data); + } + } + return $items; + + } + + public static function getFirst() { + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + $res = $db->select("Order", "*", "$where ORDER BY name, filename"); + if($db->num_rows($res)) { + $data = $db->fetch_object($res); + $item = new Order($data); + if($item->id) { + return $item; + } else { + return null; + } + } + return null; + } + + public static function search($filter) { + $items = []; + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + $res = $db->select("Order", "*", "$where ORDER BY id"); + if($db->num_rows($res)) { + while($data = $db->fetch_object($res)) { + $items[] = new Order($data); + } + } + return $items; + } + + private function getSqlFilter($filter) { + $where = "1=1 "; + + //var_dump($filter);exit; + if(array_key_exists("name", $filter)) { + $name = FronkDB::singleton()->escape($filter['name']); + if($name) { + $where .= " AND name='$name'"; + } + } + + if(array_key_exists("filename", $filter)) { + $filename = FronkDB::singleton()->escape($filter['filename']); + if($filename) { + $where .= " AND filename='$filename'"; + } + } + + if(array_key_exists("subfolder", $filter)) { + $subfolder = FronkDB::singleton()->escape($filter['subfolder']); + if($subfolder) { + $where .= " AND subfolder='$subfolder'"; + } + } + + //var_dump($filter, $where);exit; + return $where; + } + +} \ No newline at end of file diff --git a/application/OrderFile/OrderFile.php b/application/OrderFile/OrderFile.php new file mode 100644 index 000000000..2b1b989be --- /dev/null +++ b/application/OrderFile/OrderFile.php @@ -0,0 +1,5 @@ + $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("OrderFile", "*", "id=$id LIMIT 1"); + if($db->num_rows($res)) { + $data = $db->fetch_object($res); + $item = new OrderFile($data); + } + return $item; + } + + public static function getAll() { + $items = []; + + $db = FronkDB::singleton(); + + $res = $db->select("OrderFile", "*", "1=1 ORDER BY name, filename"); + if($db->num_rows($res)) { + while($data = $db->fetch_object($res)) { + $items[] = new OrderFile($data); + } + } + return $items; + + } + + public static function getFirst() { + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + $res = $db->select("OrderFile", "*", "$where ORDER BY name, filename"); + if($db->num_rows($res)) { + $data = $db->fetch_object($res); + $item = new OrderFile($data); + if($item->id) { + return $item; + } else { + return null; + } + } + return null; + } + + public static function search($filter) { + $items = []; + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + + $sql = "SELECT OrderFile.* FROM OrderFile + LEFT JOIN File ON (Order.file_id = File.id) + $where + ORDER BY order_id, name"; + + $res = $db->query($sql); + + if($db->num_rows($res)) { + while($data = $db->fetch_object($res)) { + $items[] = new OrderFile($data); + } + } + return $items; + } + + private function getSqlFilter($filter) { + $where = "1=1 "; + + + if(array_key_exists("file_id", $filter)) { + $file_id = $filter['file_id']; + if(is_numeric($file_id)) { + $where .= " AND file_id=$file_id"; + } + } + + if(array_key_exists("order_id", $filter)) { + $order_id = $filter['order_id']; + if(is_numeric($order_id)) { + $where .= " AND order_id=$order_id"; + } + } + + //var_dump($filter);exit; + if(array_key_exists("name", $filter)) { + $name = FronkDB::singleton()->escape($filter['name']); + if($name) { + $where .= " AND name='$name'"; + } + } + + if(array_key_exists("filename", $filter)) { + $filename = FronkDB::singleton()->escape($filter['filename']); + if($filename) { + $where .= " AND File.filename='$filename'"; + } + } + + if(array_key_exists("subfolder", $filter)) { + $subfolder = FronkDB::singleton()->escape($filter['subfolder']); + if($subfolder) { + $where .= " AND File.subfolder='$subfolder'"; + } + } + + //var_dump($filter, $where);exit; + return $where; + } + +} \ No newline at end of file