Added voicenumber select in Order
This commit is contained in:
@@ -652,10 +652,38 @@
|
|||||||
<div class="row mt-1 mb-2 hidden" id="voicenumber-<?=$i?>-line">
|
<div class="row mt-1 mb-2 hidden" id="voicenumber-<?=$i?>-line">
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<!-- line to input voicenumber -->
|
<!-- line to input voicenumber -->
|
||||||
|
|
||||||
<div class="col-6">
|
<div class="col-6">
|
||||||
<label class="form-label" for="voicenumber-<?=$i?>">Rufnummer</label>
|
<!-- line to input voicenumber -->
|
||||||
<textarea class="form-control" name="products[<?=$i?>][voicenumber]" id="voicenumber-<?=$i?>" placeholder="Eine Rufnummer pro Zeile (+43 123 456 78)" /><?=(is_array($product->voicenumbers) && count($product->voicenumbers)) ? implode("\n", $product->voicenumbers) : ""?></textarea>
|
<?php if(is_array($product->voicenumbers) && count($product->voicenumbers)): ?>
|
||||||
<small>Wenn Rufnummern bekannt sind oder portiert werden (Eine Rufnummer pro Zeile (+43 123 456 78))</small>
|
|
||||||
|
Rufnummer: <strong><?=implode("\n<br />", $product->voicenumbers)?></strong> <i class="fas fa-pencil pointer text-primary" onclick="toggleVoicenumberEdit(<?=$i?>)"></i>
|
||||||
|
|
||||||
|
<div class="row hidden" id="voicenumber-edit-<?=$i?>">
|
||||||
|
<div class="col-4" id="voicenumberblock-<?=$i?>-line">
|
||||||
|
<label class="form-label" for="voicenumberblock-<?=$i?>">Nummernblock *</label>
|
||||||
|
<select name="voicenumberblock_id" id="voicenumberblock_id-<?=$i?>" class="form-control select2" onchange="loadVoicenumbers(<?=$i?>)">
|
||||||
|
<option></option>
|
||||||
|
<option value="portin">Rufnummernportierung</option>
|
||||||
|
<?php foreach(VoicenumberblockModel::getAll() as $block): ?>
|
||||||
|
<option value="<?=$block->id?>">+<?=$block->countrycode?> <?=$block->areacode?> (<?=$block->name?>)</option>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-4 hidden" id="voicenumber-select-<?=$i?>-line">
|
||||||
|
<label class="form-label" for="voicenumber-<?=$i?>">Rufnummer wählen *</label>
|
||||||
|
<select name="products[<?=$i?>][voicenumber]" id="voicenumber-<?=$i?>" class="form-control select2">
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-4 hidden" id="voicenumber-custom-<?=$i?>-line">
|
||||||
|
<label class="form-label" for="voicenumber_custom-<?=$i?>">Rufnummer eingeben *</label>
|
||||||
|
<input type="text" class="form-control" name="products[<?=$i?>][voicenumber_custom]" id="voicenumber_custom-<?=$i?>" value="" placeholder="Gesamte Rufnummer (+43 123 456 78 )" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -771,11 +799,31 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row mt-1 mb-2 hidden" id="voicenumber-<?=$i?>-line">
|
<div class="row mt-1 mb-2 hidden" id="voicenumber-<?=$i?>-line">
|
||||||
<!-- line to input voicenumber -->
|
|
||||||
<div class="col-6">
|
<div class="col-6">
|
||||||
<label class="form-label" for="voicenumber-<?=$i?>">Rufnummer</label>
|
<!-- line to input voicenumber -->
|
||||||
<textarea class="form-control" name="products[<?=$i?>][voicenumber]" id="voicenumber-<?=$i?>" placeholder="Eine Rufnummer pro Zeile (+43 123 456 78)" /></textarea>
|
<div class="row">
|
||||||
<small>Wenn Rufnummern bekannt sind oder portiert werden (Eine Rufnummer pro Zeile (+43 123 456 78))</small>
|
<div class="col-4" id="voicenumberblock-<?=$i?>-line">
|
||||||
|
<label class="form-label" for="voicenumberblock-<?=$i?>">Nummernblock *</label>
|
||||||
|
<select name="voicenumberblock_id" id="voicenumberblock_id-<?=$i?>" class="form-control select2" onchange="loadVoicenumbers(<?=$i?>)">
|
||||||
|
<option></option>
|
||||||
|
<option value="portin">Rufnummernportierung</option>
|
||||||
|
<?php foreach(VoicenumberblockModel::getAll() as $block): ?>
|
||||||
|
<option value="<?=$block->id?>">+<?=$block->countrycode?> <?=$block->areacode?> (<?=$block->name?>)</option>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-4 hidden" id="voicenumber-select-<?=$i?>-line">
|
||||||
|
<label class="form-label" for="voicenumber-<?=$i?>">Rufnummer wählen *</label>
|
||||||
|
<select name="products[<?=$i?>][voicenumber]" id="voicenumber-<?=$i?>" class="form-control select2">
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-4 hidden" id="voicenumber-custom-<?=$i?>-line">
|
||||||
|
<label class="form-label" for="voicenumber_custom-<?=$i?>">Rufnummer eingeben *</label>
|
||||||
|
<input type="text" class="form-control" name="products[<?=$i?>][voicenumber_custom]" id="voicenumber_custom-<?=$i?>" value="" placeholder="Gesamte Rufnummer (+43 123 456 78 )" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -1271,6 +1319,59 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function toggleVoicenumberEdit(id) {
|
||||||
|
$('#voicenumber-edit-' + id).toggle();
|
||||||
|
|
||||||
|
$("#voicenumber-select-" + id + "-line select").empty();
|
||||||
|
$("#voicenumber-custom-" + id + "-line input").val("");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadVoicenumbers(id) {
|
||||||
|
var block_id = $("#voicenumberblock_id-" + id).val();
|
||||||
|
|
||||||
|
if(block_id == "portin") {
|
||||||
|
$("#voicenumber-select-" + id + "-line").hide();
|
||||||
|
$("#voicenumber-select-" + id + "-line select").val("");
|
||||||
|
$("#voicenumber-" + id).empty();
|
||||||
|
|
||||||
|
$("#voicenumber-custom-" + id + "-line").show();
|
||||||
|
//$("#voicenumberblock-" + id + "-line").hide();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!block_id) return;
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: "<?=self::getUrl("Voicenumberblock", "api")?>",
|
||||||
|
type: "POST",
|
||||||
|
context: id,
|
||||||
|
data: {
|
||||||
|
do: "getFreeNumbers",
|
||||||
|
id: block_id
|
||||||
|
},
|
||||||
|
success: function(success) {
|
||||||
|
//console.log(success, id);
|
||||||
|
if(success.status != "OK") return;
|
||||||
|
|
||||||
|
if(("numbers" in success.result) && success.result.numbers.length) {
|
||||||
|
$("#voicenumber-" + id).empty();
|
||||||
|
success.result.numbers.forEach(function(num) {
|
||||||
|
$("#voicenumber-" + id).append("<option value='" + num + "'>+" + num + "</option>");
|
||||||
|
});
|
||||||
|
//$("#voicenumberblock-" + id + "-line").hide();
|
||||||
|
$("#voicenumber-custom-" + id + "-line").hide();
|
||||||
|
$("#voicenumber-custom-" + id + "-line input").val("");
|
||||||
|
|
||||||
|
$("#voicenumber-select-" + id + "-line").show();
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataType: "json"
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/*********************
|
/*********************
|
||||||
* Form validation
|
* Form validation
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -15,8 +15,8 @@
|
|||||||
<th>Entsperrung</th>
|
<th>Entsperrung</th>
|
||||||
<th></th>
|
<th></th>
|
||||||
</tr>
|
</tr>
|
||||||
<?php $i = 0; foreach(range($block->first, $block->last) as $number): ?>
|
<?php $i = 0; foreach(range((array_key_exists($block->id, $num_from) ? $num_from[$block->id] : $block->first), $block->last) as $number): ?>
|
||||||
<?php $num = VoicenumberModel::getFirst(['voicenumberblock_id' => $block_id, 'number' => $number]) ?>
|
<?php $num = VoicenumberModel::getFirst(['voicenumberblock_id' => $block->id, 'number' => $number]) ?>
|
||||||
<tr>
|
<tr>
|
||||||
<td><?=$number?></td>
|
<td><?=$number?></td>
|
||||||
<td>
|
<td>
|
||||||
|
|||||||
@@ -83,7 +83,7 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(rest_duration < 60*5) {
|
if(rest_duration < 60) {
|
||||||
// show notification
|
// show notification
|
||||||
if($("#se_notf").length) {
|
if($("#se_notf").length) {
|
||||||
$("#se_notf .time").text(rest_duration);
|
$("#se_notf .time").text(rest_duration);
|
||||||
|
|||||||
@@ -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) {
|
if(array_key_exists(TT_ATTRIB_VOICENUMBER_REQUIRED_NAME, $prod->attributes) && $prod->attributes[TT_ATTRIB_VOICENUMBER_REQUIRED_NAME]->value == 1) {
|
||||||
$voicenumbers = [];
|
$voicenumbers = [];
|
||||||
foreach(explode("\n", $p['voicenumber']) as $number) {
|
//var_dump($p);exit;
|
||||||
$number = preg_replace('/\D/', '', trim($number));
|
//if($p["voicenumber_custom"]);
|
||||||
if(substr($number, 0, 2) == "00") $number = "+".substr($number, 2);
|
|
||||||
if(preg_match('/^0[^0]/', $number)) {
|
if(array_key_exists("voicenumber", $p) && $p["voicenumber"]) {
|
||||||
$number = "+43".substr($number, 1);
|
$number = $p["voicenumber"];
|
||||||
}
|
}
|
||||||
if(substr($number, 0, 1) != "+") $number = "+$number";
|
if(array_key_exists("voicenumber_custom", $p) && $p["voicenumber_custom"]) {
|
||||||
if($number && !in_array($number, $voicenumbers)) $voicenumbers[] = $number;
|
$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);
|
$product_data['voicenumber'] = json_encode($voicenumbers);
|
||||||
|
//var_dump($product_data);exit;
|
||||||
} else {
|
} else {
|
||||||
$product_data['voicenumber'] = null;
|
$product_data['voicenumber'] = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ class OrderProductModel
|
|||||||
public $order_id;
|
public $order_id;
|
||||||
public $product_id;
|
public $product_id;
|
||||||
public $termination_id;
|
public $termination_id;
|
||||||
|
public $voicenumber;
|
||||||
|
public $domain;
|
||||||
public $upgrade;
|
public $upgrade;
|
||||||
public $amount;
|
public $amount;
|
||||||
public $pos;
|
public $pos;
|
||||||
|
|||||||
@@ -12,6 +12,18 @@ class Voicenumber extends mfBaseModel {
|
|||||||
//$this->number_prepend_zero = $block->number_prepend_zero;
|
//$this->number_prepend_zero = $block->number_prepend_zero;
|
||||||
return true;
|
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() {
|
public function beforeSave() {
|
||||||
if($this->ported_from && $this->port_in_date) {
|
if($this->ported_from && $this->port_in_date) {
|
||||||
|
|||||||
@@ -97,14 +97,14 @@ class VoicenumberModel {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function search($filter, $limit = false) {
|
public static function search($filter, $limit = false, $key = false) {
|
||||||
$items = [];
|
$items = [];
|
||||||
$db = FronkDB::singleton();
|
$db = FronkDB::singleton();
|
||||||
|
|
||||||
$where = self::getSqlFilter($filter);
|
$where = self::getSqlFilter($filter);
|
||||||
$sql = "SELECT * FROM Voicenumber
|
$sql = "SELECT * FROM Voicenumber
|
||||||
WHERE $where
|
WHERE $where
|
||||||
ORDER BY countrycode, areacode, first, last";
|
ORDER BY number";
|
||||||
|
|
||||||
if(is_array($limit) && count($limit)) {
|
if(is_array($limit) && count($limit)) {
|
||||||
if(is_numeric($limit['start']) && is_numeric($limit['count'])) {
|
if(is_numeric($limit['start']) && is_numeric($limit['count'])) {
|
||||||
@@ -120,7 +120,11 @@ class VoicenumberModel {
|
|||||||
|
|
||||||
if($db->num_rows($res)) {
|
if($db->num_rows($res)) {
|
||||||
while($data = $db->fetch_object($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;
|
return $items;
|
||||||
|
|||||||
@@ -35,6 +35,28 @@ class Voicenumberblock extends mfBaseModel {
|
|||||||
return $block;
|
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) {
|
public function getProperty($name) {
|
||||||
if($this->$name == null) {
|
if($this->$name == null) {
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,15 @@ class VoicenumberblockController extends mfBaseController {
|
|||||||
$filter = $this->getPreparedFilter($filter);
|
$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 defaults
|
||||||
$pagination = [];
|
$pagination = [];
|
||||||
$pagination['start'] = 0;
|
$pagination['start'] = 0;
|
||||||
@@ -124,4 +133,41 @@ class VoicenumberblockController extends mfBaseController {
|
|||||||
$this->redirect("Voicenumberblock");
|
$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;
|
return $model;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getAll() {
|
public static function getAll($order = "countrycode,areacode,first,last") {
|
||||||
$items = [];
|
$items = [];
|
||||||
|
|
||||||
$db = FronkDB::singleton();
|
$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)) {
|
if($db->num_rows($res)) {
|
||||||
while($data = $db->fetch_object($res)) {
|
while($data = $db->fetch_object($res)) {
|
||||||
$items[] = new Voicenumberblock($data);
|
$items[] = new Voicenumberblock($data);
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ final class AddVoicenumberTables extends AbstractMigration
|
|||||||
$table->addColumn("port_out_date", "integer", ["null" => true, "default" => null]);
|
$table->addColumn("port_out_date", "integer", ["null" => true, "default" => null]);
|
||||||
$table->addColumn("ported_in", "integer", ["null" => true, "default" => null]);
|
$table->addColumn("ported_in", "integer", ["null" => true, "default" => null]);
|
||||||
$table->addColumn("ported_out", "integer", ["null" => true, "default" => null]);
|
$table->addColumn("ported_out", "integer", ["null" => true, "default" => null]);
|
||||||
|
$table->addColumn("ported_from", "string", ["null" => true, "default" => null, "limit" => 64]);
|
||||||
|
$table->addColumn("ported_to", "string", ["null" => true, "default" => null, "limit" => 64]);
|
||||||
$table->addColumn("disabled", "integer", ["null" => false, "default" => 0, "limit" => \Phinx\Db\Adapter\MysqlAdapter::INT_TINY]);
|
$table->addColumn("disabled", "integer", ["null" => false, "default" => 0, "limit" => \Phinx\Db\Adapter\MysqlAdapter::INT_TINY]);
|
||||||
$table->addColumn("disabled_reason", "enum", ["values" => "ported_out,ported_back,reserved,legacy,damaged", "null" => true, "default" => null]);
|
$table->addColumn("disabled_reason", "enum", ["values" => "ported_out,ported_back,reserved,legacy,damaged", "null" => true, "default" => null]);
|
||||||
$table->addColumn("enable_on_date", "integer", ["null" => true, "default" => null]);
|
$table->addColumn("enable_on_date", "integer", ["null" => true, "default" => null]);
|
||||||
|
|||||||
+5
-2
@@ -15,5 +15,8 @@ $me = new User(1);
|
|||||||
define("INTERNAL_USER_ID", $me->id);
|
define("INTERNAL_USER_ID", $me->id);
|
||||||
define("INTERNAL_USER_USERNAME", $me->username);
|
define("INTERNAL_USER_USERNAME", $me->username);
|
||||||
|
|
||||||
$netzgebiet = new ADBNetzgebiet(45);
|
$block = new Voicenumberblock(2);
|
||||||
var_dump($netzgebiet->getOption("hausnummer_dont_overwrite_netzgebiet"));
|
$free = $block->getFreeNumbers();
|
||||||
|
|
||||||
|
echo implode("\n", $free);
|
||||||
|
echo "\n";
|
||||||
Reference in New Issue
Block a user