Started work on Address

This commit is contained in:
Frank Schubert
2021-06-15 22:16:57 +02:00
parent 27a4ce998c
commit badcdcb329
26 changed files with 637 additions and 2180 deletions
+21
View File
@@ -0,0 +1,21 @@
<?php
class Address extends mfBaseModel {
protected $forcestr = ['company','zip','phone','fax','mobile','note'];
public function getFullName() {
// Assumes "Firma1 Firma2" or "firstname lastname" as readable form
$name = "";
if($this->firstname && $this->lastname) {
$name = $this->firstname . " " . $this->lastname;
} elseif($this->lastname) {
$name = $this->lastname;
} elseif($this->firstname) {
$name = $this->firstname;
}
return $name;
}
}
+87
View File
@@ -0,0 +1,87 @@
<?php
class AddressController extends mfBaseController {
private $filter;
protected function indexAction() {
$filter = $this->request->filter;
$addresses = AddressModel::search($filter);
$this->layout()->set("addresses", $addresses);
$this->layout()->set("filter", $filter);
$this->layout()->set("request", $this->request);
}
protected function addAction() {
$this->layout()->setTemplate("Address/Form");
}
protected function editAction() {
$address = new Address($this->request->id);
$this->layout()->set("address", $address);
if(!$address->id) {
$this->layout()->setFlash("Addresse nicht gefunden", "error");
return $this->addAction();
}
return $this->addAction();
}
protected function saveAction() {
$r = $this->request;
//var_dump($r->get());exit;
$id = $r->id;
if(is_numeric($id) && $id > 0) {
$mode = "edit";
$address = new Address($id);
if(!$address->id) {
$this->layout()->setFlash("Addresse nicht gefunden", "error");
$this->redirect("Address");
}
} else {
$mode = "add";
}
$data = [];
$data['parent_id'] = $r->parent_id;
$data['company'] = $r->company;
$data['firstname'] = $r->firstname;
$data['lastname'] = $r->lastname;
$data['street'] = $r->street;
$data['zip'] = $r->zip;
$data['city'] = $r->city;
$data['country'] = $r->country;
$data['phone'] = $r->phone;
$data['fax'] = $r->fax;
$data['mobile'] = $r->mobile;
$data['email'] = $r->email;
$data['note'] = $r->note;
$data['edit_by'] = 1;
if($mode == "add") {
$data['create_by'] = 1;
$address = AddressModel::create($data);
} else {
$address->update($data);
}
//var_dump($address);exit;
$new_id = $address->save();
if(!$new_id) {
$this->layout()->setFlash("Fehler beim Speichern", "error");
$this->layout()->set("address", $address);
return $this->add();
}
$this->layout()->setFlash("Adresse erfolgreich gespeichert.", "success");
$this->redirect("Address", "Edit", ['id' => $new_id]);
}
}
+125
View File
@@ -0,0 +1,125 @@
<?php
class AddressModel {
public $parant_id = null;
public $company = null;
public $firstname = null;
public $lastname = null;
public $street = null;
public $zip = null;
public $city = null;
public $country = null;
public $phone = null;
public $fax = null;
public $mobile = null;
public $email = null;
public $note = null;
public $create_by = null;
public $edit_by = null;
public $create = null;
public $edit = null;
public static function find($data) {
}
public static function create(Array $data) {
$model = new Address();
foreach($data as $field => $value) {
if(property_exists(get_called_class(), $field)) {
$model ->$field = $value;
}
}
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("Address", "*", "id=$id LIMIT 1");
if($db->num_rows($res)) {
$data = $db->fetch_object($res);
$item = new Address($data);
}
return $item;
}
public static function getAll() {
$items = [];
$db = FronkDB::singleton();
$res = $db->select("Address", "*");
if($db->num_rows($res)) {
while($data = $db->fetch_object($res)) {
$items[] = new Address($data);
}
}
return $items;
}
public static function search($filter) {
$items = [];
$db = FronkDB::singleton();
$where = self::getSqlFilter($filter);
$sql = "SELECT Address.* FROM Address
LEFT JOIN Addresstype ON (Addresstype.address_id = Address.id)
WHERE $where
ORDER BY Address.id";
//var_dump($sql);
$res = $db->query($sql);
if($db->num_rows($res)) {
while($data = $db->fetch_object($res)) {
$items[] = new Address($data);
}
}
return $items;
}
private function getSqlFilter($filter) {
$where = "1=1 ";
/*
* Address Type
*/
if(is_array($filter['addresstype']) && count($filter['addresstype'])) {
$at = $filter['addresstype'];
$in = [];
if(in_array("owner", $at)) {
$in[] = "Addresstype.type = 'owner'";
}
if(in_array("employee", $at)) {
$in[] = "Addresstype.type = 'employee'";
}
if(in_array("customer", $at)) {
$in[] = "Addresstype.type = 'customer'";
}
if(in_array("supplier", $at)) {
$in[] = "Addresstype.type = 'supplier'";
}
if(in_array("contact", $at)) {
$in[] = "Addresstype.type = 'contact'";
}
if(in_array("billing", $at)) {
$in[] = "Addresstype.type = 'billing'";
}
$or = "";
if(count($in)) {
$or = implode(" OR ", $in);
$where .= " AND ( $or )";
}
}
return $where;
}
}