Added voicenumber select in Order
This commit is contained in:
@@ -920,18 +920,28 @@ class OrderController extends mfBaseController {
|
||||
|
||||
if(array_key_exists(TT_ATTRIB_VOICENUMBER_REQUIRED_NAME, $prod->attributes) && $prod->attributes[TT_ATTRIB_VOICENUMBER_REQUIRED_NAME]->value == 1) {
|
||||
$voicenumbers = [];
|
||||
foreach(explode("\n", $p['voicenumber']) as $number) {
|
||||
$number = preg_replace('/\D/', '', trim($number));
|
||||
if(substr($number, 0, 2) == "00") $number = "+".substr($number, 2);
|
||||
if(preg_match('/^0[^0]/', $number)) {
|
||||
$number = "+43".substr($number, 1);
|
||||
}
|
||||
if(substr($number, 0, 1) != "+") $number = "+$number";
|
||||
if($number && !in_array($number, $voicenumbers)) $voicenumbers[] = $number;
|
||||
|
||||
//var_dump($p);exit;
|
||||
//if($p["voicenumber_custom"]);
|
||||
|
||||
if(array_key_exists("voicenumber", $p) && $p["voicenumber"]) {
|
||||
$number = $p["voicenumber"];
|
||||
}
|
||||
if(array_key_exists("voicenumber_custom", $p) && $p["voicenumber_custom"]) {
|
||||
$number = $p["voicenumber_custom"];
|
||||
}
|
||||
|
||||
$number = preg_replace('/\D/', '', trim($number));
|
||||
if(substr($number, 0, 2) == "00") $number = "+".substr($number, 2);
|
||||
if(preg_match('/^0[^0]/', $number)) {
|
||||
$number = "+43".substr($number, 1);
|
||||
}
|
||||
if(substr($number, 0, 1) != "+") $number = "+$number";
|
||||
//if($number && !in_array($number, $voicenumbers)) $voicenumbers[] = $number;
|
||||
|
||||
$voicenumbers[] = $number;
|
||||
|
||||
$product_data['voicenumber'] = json_encode($voicenumbers);
|
||||
//var_dump($product_data);exit;
|
||||
} else {
|
||||
$product_data['voicenumber'] = null;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,8 @@ class OrderProductModel
|
||||
public $order_id;
|
||||
public $product_id;
|
||||
public $termination_id;
|
||||
public $voicenumber;
|
||||
public $domain;
|
||||
public $upgrade;
|
||||
public $amount;
|
||||
public $pos;
|
||||
|
||||
@@ -12,6 +12,18 @@ class Voicenumber extends mfBaseModel {
|
||||
//$this->number_prepend_zero = $block->number_prepend_zero;
|
||||
return true;
|
||||
}
|
||||
|
||||
public function getPrettyNumber() {
|
||||
if(!$this->voicenumberblock_id) return $this->number;
|
||||
$block = $this->getProperty("block");
|
||||
|
||||
$prefix = $this->block->countrycode;
|
||||
$prefix .= $this->block->areacode;
|
||||
|
||||
$return = $this->block->countrycode." ".$this->block->areacode." ".substr($this->number, strlen($prefix));
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
public function beforeSave() {
|
||||
if($this->ported_from && $this->port_in_date) {
|
||||
|
||||
@@ -97,14 +97,14 @@ class VoicenumberModel {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static function search($filter, $limit = false) {
|
||||
public static function search($filter, $limit = false, $key = false) {
|
||||
$items = [];
|
||||
$db = FronkDB::singleton();
|
||||
|
||||
$where = self::getSqlFilter($filter);
|
||||
$sql = "SELECT * FROM Voicenumber
|
||||
WHERE $where
|
||||
ORDER BY countrycode, areacode, first, last";
|
||||
ORDER BY number";
|
||||
|
||||
if(is_array($limit) && count($limit)) {
|
||||
if(is_numeric($limit['start']) && is_numeric($limit['count'])) {
|
||||
@@ -120,7 +120,11 @@ class VoicenumberModel {
|
||||
|
||||
if($db->num_rows($res)) {
|
||||
while($data = $db->fetch_object($res)) {
|
||||
$items[] = new Voicenumber($data);
|
||||
if($key) {
|
||||
$items[$data->$key] = new Voicenumber($data);
|
||||
} else {
|
||||
$items[] = new Voicenumber($data);
|
||||
}
|
||||
}
|
||||
}
|
||||
return $items;
|
||||
|
||||
@@ -35,6 +35,28 @@ class Voicenumberblock extends mfBaseModel {
|
||||
return $block;
|
||||
}
|
||||
|
||||
public function getFreeNumbers() {
|
||||
if(!$this->id) return false;
|
||||
|
||||
$free = [];
|
||||
$block_numbers = VoicenumberModel::search(["block_id" => $this->id], false, "number");
|
||||
|
||||
$pnumber = new Voicenumber();
|
||||
$pnumber->voicenumberblock_id = $this->id;
|
||||
|
||||
foreach(range($this->first, $this->last) as $num) {
|
||||
if(array_key_exists($num, $block_numbers)) {
|
||||
$bn = $block_numbers[$num];
|
||||
if($bn->active || $bn->disabled || $bn->ported_in || $bn->ported_out || $bn->orderproduct_id || $bn->contrat_id) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
$pnumber->number = $num;
|
||||
$free[] = $pnumber->getPrettyNumber();
|
||||
}
|
||||
return $free;
|
||||
}
|
||||
|
||||
public function getProperty($name) {
|
||||
if($this->$name == null) {
|
||||
|
||||
|
||||
@@ -28,6 +28,15 @@ class VoicenumberblockController extends mfBaseController {
|
||||
$filter = $this->getPreparedFilter($filter);
|
||||
}
|
||||
|
||||
$num_from = [];
|
||||
$num_from_start = $this->request->nf;
|
||||
$num_from_block = $this->request->nfb;
|
||||
|
||||
if($num_from_start && $num_from_block) {
|
||||
$num_from[$num_from_block] = $num_from_start;
|
||||
}
|
||||
$this->layout()->set("num_from", $num_from);
|
||||
|
||||
// pagination defaults
|
||||
$pagination = [];
|
||||
$pagination['start'] = 0;
|
||||
@@ -124,4 +133,41 @@ class VoicenumberblockController extends mfBaseController {
|
||||
$this->redirect("Voicenumberblock");
|
||||
|
||||
}
|
||||
|
||||
protected function apiAction() {
|
||||
$do = $this->request->do;
|
||||
$data = [];
|
||||
|
||||
switch($do) {
|
||||
case "getFreeNumbers":
|
||||
$return = $this->getFreeNumbersApi();
|
||||
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 getFreeNumbersApi() {
|
||||
$block_id = $this->request->id;
|
||||
if(!is_numeric($block_id) || $block_id < 1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$block = new Voicenumberblock($block_id);
|
||||
if(!$block->id) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$free = $block->getFreeNumbers();
|
||||
|
||||
return ["numbers" => $free];
|
||||
}
|
||||
}
|
||||
@@ -37,12 +37,18 @@ class VoicenumberblockModel {
|
||||
return $model;
|
||||
}
|
||||
|
||||
public static function getAll() {
|
||||
public static function getAll($order = "countrycode,areacode,first,last") {
|
||||
$items = [];
|
||||
|
||||
$db = FronkDB::singleton();
|
||||
|
||||
$res = $db->select("Voicenumberblock", "*");
|
||||
$order_by = "";
|
||||
|
||||
if($order) {
|
||||
$order_by = $order;
|
||||
}
|
||||
|
||||
$res = $db->select("Voicenumberblock", "*", "1=1 ORDER BY $order_by");
|
||||
if($db->num_rows($res)) {
|
||||
while($data = $db->fetch_object($res)) {
|
||||
$items[] = new Voicenumberblock($data);
|
||||
|
||||
Reference in New Issue
Block a user