94 lines
2.6 KiB
PHP
94 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace Modules\Superadmin\Http\Controllers;
|
|
|
|
use App\Business;
|
|
use App\User;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Response;
|
|
use Modules\Superadmin\Entities\SuperadminCommunicatorLog;
|
|
use Modules\Superadmin\Notifications\SuperadminCommunicator;
|
|
use Yajra\DataTables\Facades\DataTables;
|
|
use Illuminate\Routing\Controller;
|
|
|
|
class CommunicatorController extends Controller
|
|
{
|
|
/**
|
|
* Display a listing of the resource.
|
|
*
|
|
* @return Response
|
|
*/
|
|
public function index()
|
|
{
|
|
if (! auth()->user()->can('superadmin')) {
|
|
abort(403, 'Unauthorized action.');
|
|
}
|
|
|
|
$businesses = Business::orderby('name')
|
|
->pluck('name', 'id');
|
|
|
|
return view('superadmin::communicator.index')
|
|
->with(compact('businesses'));
|
|
}
|
|
|
|
/**
|
|
* Sends notification to the required business owners.
|
|
*
|
|
* @param Request $request
|
|
* @return Response
|
|
*/
|
|
public function send(Request $request)
|
|
{
|
|
if (! auth()->user()->can('superadmin')) {
|
|
abort(403, 'Unauthorized action.');
|
|
}
|
|
|
|
//Disable in demo
|
|
if (config('app.env') == 'demo') {
|
|
$output = ['success' => 0,
|
|
'msg' => 'Feature disabled in demo!!',
|
|
];
|
|
|
|
return back()->with('status', $output);
|
|
}
|
|
|
|
$input = $request->input();
|
|
|
|
//Get business owners
|
|
$business_owners = User::join('business as B', 'users.id', '=', 'B.owner_id')
|
|
->whereIn('B.id', $input['recipients'])
|
|
->select('users.*')
|
|
->groupBy('users.id')
|
|
->get();
|
|
|
|
//Send notifications
|
|
\Notification::send($business_owners, new SuperadminCommunicator($input));
|
|
|
|
//Create Log
|
|
SuperadminCommunicatorLog::create([
|
|
'business_ids' => $input['recipients'],
|
|
'subject' => $input['subject'],
|
|
'message' => $input['message'],
|
|
]);
|
|
|
|
$output = ['success' => 1,
|
|
'msg' => __('lang_v1.success'),
|
|
];
|
|
|
|
return back()->with('status', $output);
|
|
}
|
|
|
|
public function getHistory()
|
|
{
|
|
$history = SuperadminCommunicatorLog::select('subject', 'message', 'created_at');
|
|
|
|
return Datatables::of($history)
|
|
->editColumn(
|
|
'created_at',
|
|
'@format_date($created_at) @format_time($created_at)'
|
|
)
|
|
->rawColumns([1])
|
|
->make(false);
|
|
}
|
|
}
|