Order/Form: Changed owner and billingaddress to autocomplete instead of
select
This commit is contained in:
@@ -232,6 +232,89 @@ class AddressController extends mfBaseController {
|
||||
$this->redirect("Address", "Edit", ['id' => $new_id]);
|
||||
}
|
||||
|
||||
|
||||
protected function apiAction() {
|
||||
if(!$this->me->is(["Admin","salespartner"])) {
|
||||
$this->redirect("Dashboard");
|
||||
}
|
||||
$do = $this->request->do;
|
||||
$data = [];
|
||||
|
||||
switch($do) {
|
||||
case "findAddress":
|
||||
$return = $this->findAddressApi();
|
||||
break;
|
||||
default:
|
||||
$return = false;
|
||||
}
|
||||
|
||||
if(!is_array($return) || !count($return)) {
|
||||
$data = ["status" => "error"];
|
||||
$this->returnJson($data);
|
||||
}
|
||||
$data['status'] = "OK";
|
||||
$data['result'] = $return;
|
||||
$this->returnJson($data);
|
||||
}
|
||||
|
||||
private function findAddressApi() {
|
||||
$search = $this->request->q;
|
||||
$autocomplete = $this->request->autocomplete;
|
||||
|
||||
$po = 1;
|
||||
$role = false;
|
||||
// if searching for billingaddress, set role and parents_only to 0
|
||||
if($this->request->role == "billingaddress") {
|
||||
$role = "billing";
|
||||
$po = 0;
|
||||
}
|
||||
|
||||
$addresses = [];
|
||||
$addresses = array_merge($addresses, AddressModel::search(["parents_only" => $po, "addresstype" => [$role], "company" => $search]));
|
||||
$addresses = array_merge($addresses, AddressModel::search(["parents_only" => $po, "addresstype" => [$role], "firstname" => $search]));
|
||||
$addresses = array_merge($addresses, AddressModel::search(["parents_only" => $po, "addresstype" => [$role], "lastname" => $search]));
|
||||
|
||||
if(!is_array($addresses) && !count($addresses)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$all_addresses = [];
|
||||
|
||||
// remove duplicates
|
||||
foreach($addresses as $address) {
|
||||
if(!array_key_exists($address->id, $all_addresses)) {
|
||||
$all_addresses[$address->id] = $address;
|
||||
}
|
||||
}
|
||||
|
||||
$results = [];
|
||||
|
||||
if(!$autocomplete) {
|
||||
foreach($all_addresses as $id => $address) {
|
||||
$results[$id] = $address->getCompanyOrName()." (".$address->zip." ".$address->city.", ".$address->street.")".(($address->customer_number) ? " [".$address->customer_number."]" : "");
|
||||
if(count($results) > 5) {
|
||||
$results["more"] = "...";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return ["addresses" => $results];
|
||||
}
|
||||
|
||||
// return bootstrap-autocomplete format
|
||||
foreach($all_addresses as $id => $address) {
|
||||
$result = ['value' => $id, 'text' => $address->getCompanyOrName()." (".$address->zip." ".$address->city.", ".$address->street.")".(($address->customer_number) ? " [".$address->customer_number."]" : "")];
|
||||
$results[] = $result;
|
||||
if(count($results) > 5) {
|
||||
$results[] = ['value' => 0, 'text' => " --> Mehr Suchergebnisse vorhanden. Bitte Suchebegriff genauer definieren <--"];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$this->returnJson($results);
|
||||
}
|
||||
|
||||
private function searchAddress() {
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user