added Voicenumber form and save
This commit is contained in:
178
Layout/default/Voicenumber/Form.php
Normal file
178
Layout/default/Voicenumber/Form.php
Normal file
@@ -0,0 +1,178 @@
|
||||
<?php include(realpath(dirname(__FILE__)."/../")."/header.php"); ?>
|
||||
<!-- start page title -->
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="page-title-box">
|
||||
<div class="page-title-right">
|
||||
<ol class="breadcrumb m-0">
|
||||
<li class="breadcrumb-item"><a href="<?=self::getUrl("Dashboard")?>">the-tool</a></li>
|
||||
<li class="breadcrumb-item"><a href="<?=self::getUrl("Voicenumberblock")?>">Rufnummernblöcke</a></li>
|
||||
<li class="breadcrumb-item"><a href="<?=self::getUrl("Voicenumberblock")?>#block_id=<?=$number->block->id?>"><?=$number->block->number_first?> - <?=$number->block->number_last?></a></li>
|
||||
<li class="breadcrumb-item active"><?=$number->getFullNumber()?> bearbeiten</li>
|
||||
</ol>
|
||||
</div>
|
||||
<h4 class="page-title">Rufnummer <?=$number->getFullNumber()?></h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end page title -->
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
<form class="form-horizontal" method="post" action="<?=self::getUrl("Voicenumber", "save")?>">
|
||||
<h4 class="header-title mb-2">Allgemein</h4>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
|
||||
<input type="hidden" name="block_id" value="<?=$number->block->id?>" />
|
||||
<input type="hidden" name="number" value="<?=$number->number?>" />
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2 col-form-label" for="name">Status</label>
|
||||
<div class="col-lg-10">
|
||||
<select name="active" class="form-control">
|
||||
<option value="1" <?=($number->active) ? "selected='selected'" : ""?>>Aktiv</option>
|
||||
<option value="0" <?=(!$number->active) ? "selected='selected'" : ""?>>Inaktiv</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2 col-form-label" for="name">Contract ID</label>
|
||||
<div class="col-lg-10">
|
||||
<input type="text" class="form-control" name="contract_id" value="<?=$number->contract_id?>" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2 col-form-label" for="routing">Routing</label>
|
||||
<div class="col-lg-10">
|
||||
<select name="routing" class="form-control">
|
||||
<option value="kolmisoft" <?=($number->routing == "kolmisoft") ? "selected='selected'" : ""?>>kolmisoft</option>
|
||||
<option value="sipit" <?=($number->routing == "sipit") ? "selected='selected'" : ""?>>sipit</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4 class="header-title mb-2">Portierung</h4>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2 col-form-label" for="ported_from">Portiert von</label>
|
||||
<div class="col-lg-10">
|
||||
<input type="text" class="form-control" name="ported_from" value="<?=$number->ported_from?>" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2 col-form-label" for="port_in_date">am</label>
|
||||
<div class="col-lg-10">
|
||||
<input type="text" class="form-control datepicker" name="port_in_date" value="<?=($number->port_in_date) ? date("d.m.Y",$number->port_in_date) : ""?>" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2 col-form-label" for="ported_to">Portiert nach</label>
|
||||
<div class="col-lg-10">
|
||||
<input type="text" class="form-control" name="ported_to" value="<?=$number->ported_to?>" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2 col-form-label" for="port_out_date">am</label>
|
||||
<div class="col-lg-10">
|
||||
<input type="text" class="form-control datepicker" name="port_out_date" value="<?=($number->port_out_date) ? date("d.m.Y", $number->port_out_date) : ""?>" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4 class="header-title mb-2">Sperre</h4>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2 col-form-label" for="disabled">Sperre</label>
|
||||
<div class="col-lg-10">
|
||||
<select name="disabled" class="form-control">
|
||||
<option value="0" <?=(!$number->disabled) ? "selected='selected'" : ""?>>Entsperrt</option>
|
||||
<option value="1" <?=($number->disabled) ? "selected='selected'" : ""?>>Gesperrt</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2 col-form-label" for="disabled_reason">Sperrgrund</label>
|
||||
<div class="col-lg-10">
|
||||
<select name="disabled_reason" class="form-control">
|
||||
<option></option>
|
||||
<option value="ported_out" <?=($number->disabled_reason == "ported_out") ? "selected='selected'" : ""?>>Zu neuem Provider portiert</option>
|
||||
<option value="ported_back">Zum Anker zurückportiert</option>
|
||||
<option value="reserved">Reserviert</option>
|
||||
<option value="legacy">Legacy</option>
|
||||
<option value="damaged">Kaputt</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2 col-form-label" for="enable_on_date">Automatische Entsperrung</label>
|
||||
<div class="col-lg-10">
|
||||
<input type="text" class="form-control datepicker" name="enable_on_date" value="<?=($number->enable_on_date) ? date("d.m.Y",$number->enable_on_date) : ""?>" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4 class="header-title mb-2">Kommentar</h4>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2 col-form-label" for="comment">Kommentar</label>
|
||||
<div class="col-lg-10">
|
||||
<textarea class="form-control" style="height:120px;" name="comment"><?=$number->comment?></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2"></label>
|
||||
<div class="col-lg-10">
|
||||
<button type="submit" class="btn btn-primary">Speichern</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
$('.datepicker').datepicker({
|
||||
language: 'de',
|
||||
format: "dd.mm.yyyy",
|
||||
showWeekDays: true,
|
||||
todayBtn: 'linked',
|
||||
autoclose: true
|
||||
});
|
||||
</script>
|
||||
<?php include(realpath(dirname(__FILE__)."/../")."/footer.php"); ?>
|
||||
@@ -192,5 +192,15 @@
|
||||
$('#block-' + id).addClass("table-info");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var block;
|
||||
var hash = window.location.hash.substr(1);
|
||||
var match = hash.match(/block=(\d+)/);
|
||||
if(match && match[1]) {
|
||||
block = match[1]
|
||||
toggleBlock(block);
|
||||
}
|
||||
|
||||
</script>
|
||||
<?php include(realpath(dirname(__FILE__)."/../")."/footer.php"); ?>
|
||||
@@ -12,6 +12,7 @@
|
||||
<th>Portierungsstatus</th>
|
||||
<th>Sperre</th>
|
||||
<th>Entsperrung</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
<?php $i = 0; foreach(range($block->getFirst(), $block->getLast()) as $number): ?>
|
||||
<?php $num = null; $num = VoicenumberModel::getFirst(['voicenumberblock_id' => $block_id, 'number' => ($block->number_prepend_zero) ? "0$number" : $number]) ?>
|
||||
@@ -29,13 +30,19 @@
|
||||
<td>
|
||||
<?php if($num->ported_out): ?>
|
||||
Exportiert
|
||||
<small class="text-monospace">(<?=($num->id) ? date("d.m.Y H:i:s", $num->port_out_date) : ""?>)</small>
|
||||
<small class="text-monospace">(<?=($num->id) ? date("d.m.Y", $num->port_out_date) : ""?>)</small>
|
||||
<?php elseif($num->ported_in): ?>
|
||||
Importiert
|
||||
<small class="text-monospace">(<?=($num->id) ? date("d.m.Y", $num->port_in_date) : ""?>)</small>
|
||||
<?php else: ?>
|
||||
Lokal
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
<td><?=$num->disabled_reason?></td>
|
||||
<td><?=($num->id && $num->enable_on_date) ? date("d.m.Y", $num->enable_on_date) : ""?></td>
|
||||
<td>
|
||||
<a href="<?=self::getUrl("Voicenumber", "edit", ["block_id" => $block->id, "number" => $number])?>"><i class="fas fa-edit"></i></a>
|
||||
</td>
|
||||
</tr>
|
||||
<?php $i++; if($i >= 100) break; ?>
|
||||
<?php endforeach; ?>
|
||||
|
||||
@@ -1,5 +1,72 @@
|
||||
<?php
|
||||
|
||||
class Voicenumber extends mfBaseModel {
|
||||
private $block;
|
||||
private $orderproduct;
|
||||
private $contract;
|
||||
|
||||
public function loadFromBlock(Voicenumberblock $block) {
|
||||
$this->voicenumberblock_id = $block->id;
|
||||
$this->countrycode = $block->countrycode;
|
||||
$this->areacode = $block->areacode;
|
||||
$this->number_prepend_zero = $block->number_prepend_zero;
|
||||
return true;
|
||||
}
|
||||
|
||||
public function getFullNumber() {
|
||||
$number = $this->countrycode.$this->areacode.$this->number;
|
||||
|
||||
return $number;
|
||||
}
|
||||
|
||||
|
||||
public function beforeSave() {
|
||||
if($this->ported_from && $this->port_in_date) {
|
||||
$this->ported_in = 1;
|
||||
} else {
|
||||
$this->ported_in = 0;
|
||||
}
|
||||
|
||||
if($this->ported_to && $this->port_out_date) {
|
||||
$this->ported_out = 1;
|
||||
} else {
|
||||
$this->ported_out = 0;
|
||||
}
|
||||
|
||||
if($this->active == 1 && !$this->_old_data->active) {
|
||||
$this->activated_date = date("U");
|
||||
}
|
||||
}
|
||||
|
||||
public function getProperty($name) {
|
||||
if($this->$name == null) {
|
||||
|
||||
if($name == "block") {
|
||||
$this->block = new Voicenumberblock($this->voicenumberblock_id);
|
||||
return $this->block;
|
||||
}
|
||||
|
||||
if($name == "orderproduct") {
|
||||
$this->orderproduct = new Orderproduct($this->orderproduct_id);
|
||||
return $this->orderproduct;
|
||||
}
|
||||
|
||||
if($name == "contract") {
|
||||
$this->contract = new Contract($this->contract_id);
|
||||
return $this->contract;
|
||||
}
|
||||
|
||||
$classname = ucfirst($name);
|
||||
$idfield = $name."_id";
|
||||
$this->$name = new $classname($this->$idfield);
|
||||
|
||||
if($this->$name->id) {
|
||||
return $this->$name;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->$name;
|
||||
}
|
||||
}
|
||||
166
application/Voicenumber/VoicenumberController.php
Normal file
166
application/Voicenumber/VoicenumberController.php
Normal file
@@ -0,0 +1,166 @@
|
||||
<?php
|
||||
|
||||
class VoicenumberController extends mfBaseController {
|
||||
|
||||
protected function init() {
|
||||
$this->needlogin=true;
|
||||
$me = new User();
|
||||
$me->loadMe();
|
||||
$this->me = $me;
|
||||
$this->layout()->set("me",$me);
|
||||
|
||||
if(!$me->isAdmin()) {
|
||||
$this->redirect("Dashboard");
|
||||
}
|
||||
}
|
||||
|
||||
protected function editAction() {
|
||||
$block_id = $this->request->block_id;
|
||||
if(!is_numeric($block_id) || !$block_id) {
|
||||
$this->layout()->setFlash("Rufnummer nicht gefunden1", "error");
|
||||
$this->redirect("Voicenumberblock");
|
||||
}
|
||||
|
||||
$block = new Voicenumberblock($block_id);
|
||||
if(!$block->id) {
|
||||
$this->layout()->setFlash("Rufnummer nicht gefunden2", "error");
|
||||
$this->redirect("Voicenumberblock");
|
||||
}
|
||||
|
||||
$num = (string)$this->request->number;
|
||||
if(!strlen($num)) {
|
||||
$this->layout()->setFlash("Rufnummer nicht gefunden3", "error");
|
||||
$this->redirect("Voicenumberblock", "Index", null, ["block" => $block->id]);
|
||||
}
|
||||
|
||||
if(!$block->isNumberInBlock($num)) {
|
||||
$this->layout()->setFlash("Rufnummer nicht gefunden4", "error");
|
||||
$this->redirect("Voicenumberblock", "Index", null, ["block" => $block->id]);
|
||||
}
|
||||
|
||||
$number = VoicenumberModel::getFirst(["block_id" => $block_id, "number" => (string)$num]);
|
||||
$mode = "edit";
|
||||
|
||||
if(!$number) {
|
||||
$number = new Voicenumber();
|
||||
$number->loadFromBlock($block);
|
||||
$number->number = $num;
|
||||
$mode = "add";
|
||||
}
|
||||
//var_dump($number);exit;
|
||||
|
||||
$this->layout()->setTemplate("Voicenumber/Form");
|
||||
$this->layout()->set("number", $number);
|
||||
|
||||
|
||||
}
|
||||
|
||||
protected function saveAction() {
|
||||
$r = $this->request;
|
||||
//var_dump($r);
|
||||
$block_id = $r->block_id;
|
||||
if(!is_numeric($block_id) || !$block_id) {
|
||||
$this->layout()->setFlash("Rufnummer nicht gefunden1", "error");
|
||||
$this->redirect("Voicenumberblock");
|
||||
}
|
||||
|
||||
$block = new Voicenumberblock($block_id);
|
||||
if(!$block->id) {
|
||||
$this->layout()->setFlash("Rufnummer nicht gefunden2", "error");
|
||||
$this->redirect("Voicenumberblock");
|
||||
}
|
||||
|
||||
$num = (string)$r->number;
|
||||
if(!strlen($num)) {
|
||||
$this->layout()->setFlash("Rufnummer nicht gefunden3", "error");
|
||||
$this->redirect("Voicenumberblock", "Index", null, ["block" => $block->id]);
|
||||
}
|
||||
|
||||
if(!$block->isNumberInBlock($num)) {
|
||||
$this->layout()->setFlash("Rufnummer nicht gefunden4", "error");
|
||||
$this->redirect("Voicenumberblock", "Index", null, ["block" => $block->id]);
|
||||
}
|
||||
|
||||
$number = VoicenumberModel::getFirst(["block_id" => $block_id, "number" => (string)$num]);
|
||||
$mode = "edit";
|
||||
|
||||
if(!$number) {
|
||||
$number = new Voicenumber();
|
||||
$number->loadFromBlock($block);
|
||||
$number->number = $num;
|
||||
$number->create_by = $this->me->id;
|
||||
$mode = "add";
|
||||
}
|
||||
|
||||
//var_dump($number);
|
||||
|
||||
|
||||
$number_data = [];
|
||||
$number_data['contract_id'] = $r->contract_id;
|
||||
if($r->active === "1") {
|
||||
$number_data['active'] = 1;
|
||||
} else {
|
||||
$number_data['active'] = 0;
|
||||
}
|
||||
|
||||
switch($r->routing) {
|
||||
case "sipit":
|
||||
$number_data['routing'] = "sipit";
|
||||
break;
|
||||
default:
|
||||
$number_data['routing'] = "kolmisoft";
|
||||
}
|
||||
|
||||
|
||||
$number_data['ported_from'] = $r->ported_from;
|
||||
if($r->port_in_date) {
|
||||
$number_data['port_in_date'] = self::dateToTimestamp($r->port_in_date);
|
||||
}
|
||||
|
||||
$number_data['ported_to'] = $r->ported_to;
|
||||
if($r->port_out_date) {
|
||||
$number_data['port_out_date'] = self::dateToTimestamp($r->port_out_date);
|
||||
}
|
||||
|
||||
if($r->disabled === "1") {
|
||||
$number_data['disabled'] = 1;
|
||||
switch($r->disabled_reason) {
|
||||
case "ported_out":
|
||||
$number_data['disabled_reason'] = "ported_out";
|
||||
break;
|
||||
case "ported_back":
|
||||
$number_data['disabled_reason'] = "ported_back";
|
||||
break;
|
||||
case "legacy":
|
||||
$number_data['disabled_reason'] = "legacy";
|
||||
break;
|
||||
case "damaged":
|
||||
$number_data['disabled_reason'] = "damaged";
|
||||
break;
|
||||
default:
|
||||
$number_data['disabled_reason'] = "reserved";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if($r->enable_on_date) {
|
||||
$number_data['enable_on_date'] = self::dateToTimestamp($r->enable_on_date);
|
||||
}
|
||||
$number_data['comment'] = $r->comment;
|
||||
$number_data['edit_by'] = $this->me->id;
|
||||
|
||||
$number->update($number_data);
|
||||
$number_id = $number->save();
|
||||
|
||||
if(!$number_id) {
|
||||
$this->layout()->setFlash("Fehler beim Speichern", "error");
|
||||
$this->redirect("Voicenumber", "edit", ["block_id" => $block_id, "number" => $num]);
|
||||
}
|
||||
|
||||
$this->layout()->setFlash("Rufnummer erfolgreich gespeichert", "success");
|
||||
$this->redirect("Voicenumberblock", "Index", null, "block=".$block->id);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -123,6 +123,13 @@ class VoicenumberModel {
|
||||
return $where;
|
||||
}
|
||||
|
||||
if(array_key_exists("block_id", $filter)) {
|
||||
$block_id = $filter['block_id'];
|
||||
if(is_numeric($block_id)) {
|
||||
$where .= " AND voicenumberblock_id = $block_id";
|
||||
}
|
||||
}
|
||||
|
||||
//var_dump($filter);exit;
|
||||
if(array_key_exists("countrycode", $filter)) {
|
||||
$countrycode = $filter['countrycode'];
|
||||
|
||||
@@ -41,6 +41,10 @@ class Voicenumberblock extends mfBaseModel {
|
||||
return $base;
|
||||
}
|
||||
|
||||
public function isNumberInBlock($number) {
|
||||
return ($number >= $this->first && $number <= $this->last);
|
||||
}
|
||||
|
||||
public function getProperty($name) {
|
||||
if($this->$name == null) {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user