Enable echomail subscription by any of a systems address

This commit is contained in:
Deon George 2022-01-05 00:34:33 +11:00
parent 424d6ef39d
commit 847869911f
3 changed files with 80 additions and 13 deletions

View File

@ -3,7 +3,7 @@
namespace App\Http\Controllers;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\Collection;
use Illuminate\Http\Request;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Auth;
@ -275,6 +275,17 @@ class SystemController extends Controller
: redirect()->to('user/system/register');
}
public function api_address(Request $request,System $o): Collection
{
return Address::select(['addresses.id','addresses.zone_id','region_id','host_id','node_id'])
->leftjoin('zones',['zones.id'=>'addresses.zone_id'])
->where('addresses.system_id',$o->id)
->where('zones.domain_id',$request->domain_id)
->FTNorder()
->get()
->map(function($item) { return ['id'=>$item->id,'value'=>$item->ftn3d]; });
}
/**
* Systems with no owners
*/
@ -335,7 +346,7 @@ class SystemController extends Controller
*/
public function echoareas(Request $request,System $o)
{
$ao = $o->addresses->filter(function($item) use ($request) { return $item->zone->domain_id == $request->domain_id; })->first();
$ao = $o->addresses->firstWhere('id',$request->address_id);
if (($request->method() == 'POST') && $request->post()) {
session()->flash('accordion','echoarea');
@ -344,13 +355,13 @@ class SystemController extends Controller
if (! $ao->session('sespass'))
return redirect()->back()->withErrors('System doesnt belong to this network');
$ao->echoareas()->syncWithPivotValues($request->id,['subscribed'=>Carbon::now()]);
$ao->echoareas()->syncWithPivotValues($request->get('id',[]),['subscribed'=>Carbon::now()]);
return redirect()->back()->with('success','Echoareas updated');;
}
$eo = Echoarea::active()
->where('domain_id',$request->domain_id)
->where('domain_id',$ao->zone->domain_id)
->orderBy('name')
->get();

View File

@ -30,7 +30,21 @@
</div>
</div>
<div class="offset-2 col-3" id="echoarea-summary">
<!-- Select Address -->
<div class="col-3">
<div class="d-none" id="address-select">
<label for="address_id" class="form-label">Address</label>
<div class="input-group">
<span class="input-group-text"><i class="bi bi-hash"></i></span>
<select class="form-select" id="address_id" name="address_id" required>
<option></option>
</select>
</div>
</div>
</div>
<!-- Summary of Addresses -->
<div class="offset-3 col-3" id="echoarea-summary">
<table class="table monotable">
<thead>
<tr>
@ -65,8 +79,45 @@
<script type="text/javascript">
$(document).ready(function() {
$('#domain_id').on('change',function() {
if (! $(this).val()) {
$('#echoarea-summary').removeClass('d-none');
$('#address-select').addClass('d-none');
return;
} else {
$('#address-select').removeClass('d-none');
}
var item = this;
icon = $(item).parent().find('i');
$.ajax({
type: 'POST',
data: {domain_id: $(item).val()},
beforeSend: function() {
icon.addClass('spinner-grow spinner-grow-sm');
},
success: function(data) {
icon.removeClass('spinner-grow spinner-grow-sm');
$('#address_id')
.empty()
.append($('<option>'))
.append(data.map(function(item) {
return $('<option>').val(item.id).text(item.value);
}));
},
error: function(e) {
icon.removeClass('spinner-grow spinner-grow-sm');
if (e.status != 412)
alert('That didnt work? Please try again....');
},
url: '{{ url('api/system/address',[$o->id]) }}',
cache: false
})
});
$('#address_id').on('change',function() {
if (! $(this).val()) {
$('#echoarea-summary').removeClass('d-none');
$('#echoarea-select').addClass('d-none');
@ -83,7 +134,7 @@
$.ajax({
type: 'GET',
data: {domain_id: $(item).val()},
data: {address_id: $(item).val()},
beforeSend: function() {
icon.addClass('spinner-grow spinner-grow-sm');
},
@ -91,7 +142,6 @@
icon.removeClass('spinner-grow spinner-grow-sm');
$('#echoarea-select').empty().append(data);
$('#echoareas').checkboxes('range',true);
//eval(document.getElementById('echoarea-javascript').innerHTML);
},
error: function(e) {
icon.removeClass('spinner-grow spinner-grow-sm');
@ -103,6 +153,6 @@
cache: false
})
});
})
});
</script>
@append

View File

@ -16,9 +16,15 @@ use App\Http\Controllers\{DomainController,SystemController,ZoneController};
*/
Route::middleware(['auth:api'])->group(function () {
Route::get('regions/{o}',[DomainController::class,'api_regions']);
Route::get('hosts/{o}/{region}',[DomainController::class,'api_hosts']);
Route::get('regions/{o}',[DomainController::class,'api_regions'])
->where('o','[0-9]+');
Route::get('hosts/{o}/{region}',[DomainController::class,'api_hosts'])
->where('o','[0-9]+');
Route::get('systems/orphan',[SystemController::class,'api_orphan']);
Route::get('hubs/{o}/{host}',[DomainController::class,'api_hubs']);
Route::post('default/{o}',[ZoneController::class,'api_default']);
Route::get('hubs/{o}/{host}',[DomainController::class,'api_hubs'])
->where('o','[0-9]+');
Route::post('default/{o}',[ZoneController::class,'api_default'])
->where('o','[0-9]+');
Route::post('system/address/{o}',[SystemController::class,'api_address'])
->where('o','[0-9]+');
});