diff --git a/application/Address/AddressModel.php b/application/Address/AddressModel.php index a7593fe8a..ef8298956 100644 --- a/application/Address/AddressModel.php +++ b/application/Address/AddressModel.php @@ -32,46 +32,46 @@ class AddressModel { public $sepa_date; public $allow_contact; public $allow_spin; - + public $note; - + public $create_by; public $edit_by; public $create; public $edit; - public static function create(Array $data) { + public static function create(array $data) { $model = new Address(); - - foreach($data as $field => $value) { - if(property_exists(get_called_class(), $field)) { + + foreach ($data as $field => $value) { + if (property_exists(get_called_class(), $field)) { $model->$field = $value; } } - + $me = new User(); $me->loadMe(); - if(!is_numeric($model->create_by) && !$model->create_by) { + if (!is_numeric($model->create_by) && !$model->create_by) { $model->create_by = $me->id; } - if(!is_numeric($model->edit_by) && !$model->edit_by) { + if (!is_numeric($model->edit_by) && !$model->edit_by) { $model->edit_by = $me->id; } - - if(!array_key_exists("note", $data)) { + + if (!array_key_exists("note", $data)) { $model->note = ""; } - + return $model; } public static function getFirst($filter = null) { $db = FronkDB::singleton(); - + $where = self::getSqlFilter($filter); //mfLoghandler::singleton()->debug($where); - + $sql = "SELECT Address.* FROM Address LEFT JOIN Addresstype ON (Addresstype.address_id = Address.id) LEFT JOIN Country ON (Country.id = Address.country_id) @@ -80,14 +80,14 @@ class AddressModel { ORDER BY company, lastname, firstname, zip, city, Address.id LIMIT 1 "; - + $res = $db->query($sql); //$res = $db->select("Address", "*", "$where ORDER BY company, lastname, firstname, zip, city LIMIT 1"); - - if($db->num_rows($res)) { + + if ($db->num_rows($res)) { $data = $db->fetch_object($res); $item = new Address($data); - if($item->id) { + if ($item->id) { return $item; } else { return null; @@ -95,83 +95,83 @@ class AddressModel { } return null; } - + public static function getOne($id) { - if(!is_numeric($id) || !$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)) { + 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)) { + if ($db->num_rows($res)) { + while ($data = $db->fetch_object($res)) { $items[] = new Address($data); } } return $items; - + } - + public static function getLastCustomerNumber() { $db = FronkDB::singleton(); - - $res = $db->select("Address","customer_number", "customer_number > 0 AND customer_number < 200000 ORDER BY customer_number DESC LIMIT 1"); - if($db->num_rows($res)) { + + $res = $db->select("Address", "customer_number", "customer_number > 0 AND customer_number < 200000 ORDER BY customer_number DESC LIMIT 1"); + if ($db->num_rows($res)) { $data = $db->fetch_object($res); - if($data->customer_number + 1 >= 200000) { - $res = $db->select("Address","customer_number", "customer_number > 0 ORDER BY customer_number DESC LIMIT 1"); + if ($data->customer_number + 1 >= 200000) { + $res = $db->select("Address", "customer_number", "customer_number > 0 ORDER BY customer_number DESC LIMIT 1"); $data = $db->fetch_object($res); return $data->customer_number; } return $data->customer_number; } - + return false; } - + public static function byNetwork($network_id, $addresstype) { - if(!is_numeric($network_id) || !$network_id) { + if (!is_numeric($network_id) || !$network_id) { return false; } $db = FronkDB::singleton(); - + $addresses = []; - + // get all addresses of network - + $sql = "SELECT Address.id as id FROM `Address` LEFT JOIN NetworkAddress ON (NetworkAddress.address_id = Address.id) WHERE NetworkAddress.type = '$addresstype' AND network_id = $network_id GROUP BY id"; - + $res = $db->query($sql); - if($db->num_rows($res)) { - while($data = $db->fetch_object($res)) { + if ($db->num_rows($res)) { + while ($data = $db->fetch_object($res)) { $addresses[] = new Address($data->id); } } - + return $addresses; } - + public static function count($filter) { $db = FronkDB::singleton(); - + $where = self::getSqlFilter($filter); $sql = "SELECT COUNT(*) as cnt FROM ( SELECT Address.id as address_id @@ -182,21 +182,21 @@ class AddressModel { GROUP BY Address.id ) as tbl"; //mfLoghandler::singleton()->debug($sql); - + $res = $db->query($sql); - if($db->num_rows($res)) { + if ($db->num_rows($res)) { $data = $db->fetch_object($res); return (int)$data->cnt; } return 0; } - - + + public static function search($filter, $limit = false) { //var_dump($filter);exit; $items = []; $db = FronkDB::singleton(); - + $where = self::getSqlFilter($filter); $have = []; /*$sql = "SELECT Address.* FROM Address, Addresstype @@ -210,20 +210,20 @@ class AddressModel { WHERE $where GROUP BY Address.id ORDER BY company, lastname, firstname, zip, city, Address.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']; + + 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']; } } - + mfLoghandler::singleton()->debug($sql); - + $res = $db->query($sql); - if($db->num_rows($res)) { - while($data = $db->fetch_object($res)) { + if ($db->num_rows($res)) { + while ($data = $db->fetch_object($res)) { $items[] = new Address($data); //$have[] = $data->id; } @@ -241,29 +241,29 @@ class AddressModel { } } }*/ - + return $items; } - + private static function getSqlFilter($filter) { $where = "1=1 "; - + //var_dump($filter);exit; - if(array_key_exists("customer_number", $filter)) { + if (array_key_exists("customer_number", $filter)) { $cn = $filter["customer_number"]; - if(is_numeric($cn)) { + if (is_numeric($cn)) { $where .= " AND customer_number=$cn"; - } elseif($cn === true) { + } elseif ($cn === true) { $where .= " AND customer_number > 0"; - } elseif($cn === false || $cn === null) { + } elseif ($cn === false || $cn === null) { $where .= " AND customer_number IS NULL"; } } - - if(array_key_exists("fibu_account_number", $filter)) { + + if (array_key_exists("fibu_account_number", $filter)) { $fan = $filter["fibu_account_number"]; - if($fan) { - if(is_numeric($fan)) { + if ($fan) { + if (is_numeric($fan)) { $where .= " AND fibu_account_number=$fan"; } else { $fan = FronkDB::singleton()->escape($fan); @@ -271,159 +271,167 @@ class AddressModel { } } } - - if(array_key_exists("fibu_supplier_number", $filter)) { + + if (array_key_exists("fibu_supplier_number", $filter)) { $fsn = $filter["fibu_supplier_number"]; - if(is_numeric($fsn)) { + if (is_numeric($fsn)) { $where .= " AND fibu_supplier_number=$fsn"; } } - - if(array_key_exists("fibu_or_supplier_account_number", $filter)) { + + if (array_key_exists("fibu_or_supplier_account_number", $filter)) { $fsn = $filter["fibu_or_supplier_account_number"]; - if($fsn) { + if ($fsn) { $where .= " AND (fibu_account_number LIKE '$fsn' OR fibu_supplier_number LIKE '$fsn')"; } } - - if(array_key_exists("fibu_primary_account", $filter)) { + + if (array_key_exists("fibu_primary_account", $filter)) { $fpa = $filter["fibu_primary_account"]; - if($fpa) { + if ($fpa) { $where .= " AND fibu_primary_account=1"; } else { $where .= " AND fibu_primary_account=0"; } } - - if(array_key_exists("customer_or_fibu_numbers", $filter)) { + + if (array_key_exists("customer_or_fibu_numbers", $filter)) { $cn = $filter["customer_or_fibu_numbers"]; - if($cn === true) { + if ($cn === true) { $where .= " AND (customer_number > 0 OR fibu_account_number > 0 OR fibu_supplier_number > 0)"; - } elseif($cn === false || $cn === null) { + } elseif ($cn === false || $cn === null) { $where .= " AND customer_number IS NULL AND fibu_account_number IS NULL AND fibu_supplier_number IS NULL"; } } - - if(array_key_exists("spin", $filter)) { + + if (array_key_exists("spin", $filter)) { $spin = FronkDB::singleton()->escape($filter["spin"]); - if($spin) { + if ($spin) { $where .= " AND spin='$spin'"; } } - - if(array_key_exists("company", $filter)) { + + if (array_key_exists("company", $filter)) { $company = FronkDB::singleton()->escape($filter["company"]); - if($company) { + if ($company) { $where .= " AND company like '%$company%'"; } } - - if(array_key_exists("firstname", $filter)) { + + if (array_key_exists("firstname", $filter)) { $firstname = FronkDB::singleton()->escape($filter["firstname"]); - if($firstname) { + if ($firstname) { $where .= " AND firstname like '%$firstname%'"; } } - - if(array_key_exists("lastname", $filter)) { + + if (array_key_exists("lastname", $filter)) { $lastname = FronkDB::singleton()->escape($filter["lastname"]); - if($lastname) { + if ($lastname) { $where .= " AND lastname like '%$lastname%'"; } } - - if(array_key_exists("mergedName", $filter)) { + + if (array_key_exists("mergedName", $filter)) { $name = FronkDB::singleton()->escape($filter["mergedName"]); - if($name) { + if ($name) { $where .= " AND (CONCAT(firstname, ' ', lastname) like '%$name%' OR CONCAT(lastname, ' ', firstname) like '%$name%' )"; } } - - if(array_key_exists("street", $filter)) { + + if (array_key_exists("street", $filter)) { $street = FronkDB::singleton()->escape($filter["street"]); - if($street) { + if ($street) { $where .= " AND street like '%$street%'"; } } - - if(array_key_exists("zip", $filter)) { + + if (array_key_exists("zip", $filter)) { $zip = FronkDB::singleton()->escape($filter["zip"]); - if($zip) { + if ($zip) { $where .= " AND zip like '%$zip%'"; } } - - if(array_key_exists("city", $filter)) { + + if (array_key_exists("city", $filter)) { $city = FronkDB::singleton()->escape($filter["city"]); - if($city) { + if ($city) { $where .= " AND city like '%$city%'"; } } - - if(array_key_exists("country", $filter)) { + + if (array_key_exists("country", $filter)) { $country = FronkDB::singleton()->escape($filter["country"]); - if($country) { + if ($country) { $where .= " AND (Country.name like '%$country%' OR Country.isocode = '$country')"; } } - - if(array_key_exists("email", $filter)) { + + if (array_key_exists("email", $filter)) { $email = FronkDB::singleton()->escape($filter["email"]); - if($email) { + if ($email) { $where .= " AND email like '%$email%'"; } } - - if(array_key_exists("pfm", $filter)) { + + if (array_key_exists("pfm", $filter)) { $pfm = FronkDB::singleton()->escape($filter["pfm"]); - if($pfm) { + if ($pfm) { $where .= " AND (phone like '%$pfm%' OR fax like '%$pfm%' OR mobile like '%$pfm%' )"; } } - - if(array_key_exists("billing_type", $filter)) { + + if (array_key_exists("billing_type", $filter)) { $billing_type = FronkDB::singleton()->escape($filter["billing_type"]); - if($billing_type) { + if ($billing_type) { $where .= " AND billing_type='$billing_type'"; } } - - + + if (array_key_exists("id", $filter)) { + $id = $filter["id"]; + if (is_numeric($id)) { + $where .= " AND Address.id=$id"; + } elseif (is_array($id) && count($id)) { + $where .= " AND Address.id IN (" . implode(",", $id) . ")"; + } + } + /* * Address Type */ - if(array_key_exists("addresstype", $filter) && is_array($filter['addresstype']) && count($filter['addresstype'])) { + if (array_key_exists("addresstype", $filter) && is_array($filter['addresstype']) && count($filter['addresstype'])) { $at = $filter['addresstype']; $in = []; - foreach(TT_ROLES as $role) { - if(in_array($role, $at)) { + foreach (TT_ROLES as $role) { + if (in_array($role, $at)) { $in[] = "Addresstype.type = '$role'"; } } - + $or = ""; - if(count($in)) { + if (count($in)) { $or = implode(" OR ", $in); $where .= " AND ( $or )"; } } - + //var_dump($filter);exit; - if(array_key_exists("parent_id", $filter)) { + if (array_key_exists("parent_id", $filter)) { $parentid = $filter['parent_id']; - if($parentid === null || $parent_id == "null") { + if ($parentid === null || $parent_id == "null") { $where .= " AND parent_id IS NULL"; - } elseif(is_numeric($parentid)) { + } elseif (is_numeric($parentid)) { $where .= " AND parent_id=$parentid"; } } - - if(array_key_exists("create_by", $filter)) { + + if (array_key_exists("create_by", $filter)) { $create_by = $filter['create_by']; - if(is_numeric($create_by)) { + if (is_numeric($create_by)) { $where .= " AND Address.create_by=$create_by"; - } elseif(is_array($create_by) && count($create_by)) { - $where .= " AND Address.create_by IN (". implode(",",$create_by).")"; + } elseif (is_array($create_by) && count($create_by)) { + $where .= " AND Address.create_by IN (" . implode(",", $create_by) . ")"; } } /* @@ -433,42 +441,42 @@ class AddressModel { $where .= " AND parent_id IS NULL"; } }*/ - - if(array_key_exists("create>", $filter)) { + + if (array_key_exists("create>", $filter)) { $create = $filter['create>']; - if(is_numeric($create)) { + if (is_numeric($create)) { $where .= " AND Address.create > $create"; } } - - if(array_key_exists("create<", $filter)) { + + if (array_key_exists("create<", $filter)) { $create = $filter['create<']; - if(is_numeric($create)) { + if (is_numeric($create)) { $where .= " AND Address.create < $create"; } } - - if(array_key_exists("edit>", $filter)) { + + if (array_key_exists("edit>", $filter)) { $edit = $filter['edit>']; - if(is_numeric($edit)) { + if (is_numeric($edit)) { $where .= " AND Address.edit > $edit"; } } - - if(array_key_exists("edit<", $filter)) { + + if (array_key_exists("edit<", $filter)) { $edit = $filter['edit<']; - if(is_numeric($edit)) { + if (is_numeric($edit)) { $where .= " AND Address.edit < $edit"; } } - + // custom where clause - if(array_key_exists("add-where", $filter)) { - $where .= " ".$filter['add-where']; + if (array_key_exists("add-where", $filter)) { + $where .= " " . $filter['add-where']; } - + //var_dump($filter, $where);exit; return $where; } - -} \ No newline at end of file + +} diff --git a/application/Dashboard/DashboardController.php b/application/Dashboard/DashboardController.php index ec9553447..a0ff32529 100644 --- a/application/Dashboard/DashboardController.php +++ b/application/Dashboard/DashboardController.php @@ -250,30 +250,57 @@ class DashboardController extends mfBaseController { return $orders; //var_dump($orders);exit; } - + private function getPartnerOrdersByStatus($preordercampaign_id = [], $gemeinde_id = false) { $orders = []; - - if($gemeinde_id) { + + if ($gemeinde_id) { $preorders = PreorderModel::searchActive(["preordercampaign_id" => $preordercampaign_id, "gemeinde_id" => $gemeinde_id]); } else { - $preorders = PreorderModel::searchActive(["preordercampaign_id" => $preordercampaign_id]); + $preorders = PreorderModel::searchActive(["preordercampaign_id" => $preordercampaign_id], false, false, true); } - - foreach($preorders as $preorder) { - $name = $preorder->partner->getCompanyOrName(); - if(!$name) $name = "Kein Partner"; - if(!array_key_exists($name, $orders)) { + + $preorderStatus = PreorderstatusModel::getAll(); + $preorderStatus = array_column($preorderStatus, null, 'id'); + + + $partners = []; + // log add partnerids from preorders + $parnerIDs = []; + foreach ($preorders as $preorder) { + if (!in_array($preorder->partner_id, $parnerIDs)) + $parnerIDs[] = $preorder->partner_id; + } + + foreach ($preorders as $preorder) { + $partnerId = $preorder->partner_id; + if (!array_key_exists($partnerId, $partners) && $partnerId !== null) { + $partner = AddressModel::getFirst(["id" => $partnerId]); + $partners[$partnerId] = $partner->getCompanyOrName(); + $name = $partners[$partnerId]; + } else if ($partnerId === null) { + $name = "Kein Partner"; + } else { + $name = $partners[$partnerId]; + } + + if (!array_key_exists($name, $orders)) { $orders[$name] = []; $orders[$name]["total"] = 0; } - if(!array_key_exists($preorder->status->id, $orders[$name])) { - $orders[$name][$preorder->status->id] = 0; + + $status_id = $preorder->status_id; + $status_code = $preorderStatus[$status_id]->code; + + if (!array_key_exists($preorder->status_id, $orders[$name])) { + $orders[$name][$preorder->status_id] = 0; } - $orders[$name][$preorder->status->id]++; + + $orders[$name][$preorder->status_id]++; $orders[$name]["total"]++; } - //var_dump($orders);exit; + + return $orders; } diff --git a/application/Preorder/PreorderModel.php b/application/Preorder/PreorderModel.php index 070cab60d..49614c3f6 100644 --- a/application/Preorder/PreorderModel.php +++ b/application/Preorder/PreorderModel.php @@ -350,11 +350,11 @@ class PreorderModel { return self::count($filter); } - - public static function searchActive($filter = [], $limit = false, $returnDBRessource = false) { - if(!is_array($filter)) return false; - - if(!array_key_exists("deleted", $filter)) { + + public static function searchActive($filter = [], $limit = false, $returnDBRessource = false, $returnArray = false) { + if (!is_array($filter)) return false; + + if (!array_key_exists("deleted", $filter)) { $filter["deleted"] = null; } @@ -362,8 +362,8 @@ class PreorderModel { && !array_key_exists("status_id", $filter) && !array_key_exists("status_id", $filter) ) { $filter["fetch_object($res)) { - $items[] = new Preorder($data); + + while ($data = $db->fetch_object($res)) { + if ($returnArray) { + $items[] = $data; + } else { + $items[] = new Preorder($data); + } } } return $items;