File: /var/www/vhost/disk-apps/qas.sports-crowd.com/app/Http/Controllers/AcademyNewsController.php
<?php
namespace App\Http\Controllers;
use App\AcademyLocation;
use App\AcademyNew;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Controllers\Exports\AcademyNewsExport;
use App\Services\AcademyLocationsService;
use \Excel;
use Illuminate\Support\Facades\DB;
class AcademyNewsController extends Controller
{
private $util;
public function __construct()
{
$this->util = new UtilController();
}
public function index($type_academy = 'children')
{
$academyNews = AcademyNew::select(
'academy_news.*',
'academy_locations.name as academy_place',
'academy_categories.name as category_name',
'academy_schedules.name as schedule_name',
DB::raw("GROUP_CONCAT(DISTINCT(CONCAT_WS(' ', users1.first_name, users1.last_name)) ORDER BY users1.id ASC) AS coaches"),
)
->with('academy_user')
->join('academy_users', 'academy_users.id', '=', 'academy_news.academy_user_id')
->leftjoin('academy_categories', 'academy_users.academy_category_id', '=', 'academy_categories.id')
->leftjoin('academy_locations', 'academy_categories.academy_location_id', '=', 'academy_locations.id')
->leftjoin('academy_schedules', 'academy_schedules.id', '=', 'academy_users.academy_schedule_id')
->leftJoin('academy_schedules_coaches', 'academy_schedules_coaches.academy_schedule_id', '=', 'academy_schedules.id')
->leftjoin('users AS users1', 'users1.id', '=', 'academy_schedules_coaches.user_id')
->where('academy_users.type_academy', $type_academy)
->groupBy('academy_news.id');
$academyLocationsService = new AcademyLocationsService;
if (!$academyLocationsService->validateAuthorizedLocations()) {
$authorizedLocations = $academyLocationsService->getAuthorizedLocations();
$academyNews->whereIn('academy_locations.id', $authorizedLocations);
$franchises = AcademyLocation::select('id', 'name')->where('active', 1)->whereIn('id', $authorizedLocations)->orderBy('name', 'ASC')->get();
} else {
$franchises = AcademyLocation::select('id', 'name')->where('active', 1)->orderBy('name', 'ASC')->get();
}
$academyNews = $academyNews->distinct()->get();
return view('academy.news.list', compact('type_academy', 'academyNews', 'franchises'));
}
public function updateStatus($id, $status)
{
$academyNew = AcademyNew::find($id);
$academyNew->status = $status;
$academyNew->update();
return response(array(
"r" => true,
"type" => "success",
"title" => "",
"m" => __('messages.created_successfully'),
"data" => $academyNew
));
}
public function validateExport(Request $request)
{
$data = $request['data'];
if (count($data) > 0) {
$name = 'ReporteAcademiaNovedades' . time() . '.xlsx';
Excel::store(new AcademyNewsExport($data), $name, 'public');
return response()->json(['success' => true, 'message' => 'Validación OK', 'data' => $name]);
}
return response()->json(['success' => false, 'message' => 'No existen datos a exportar']);
}
public function export($name)
{
return $this->util->export($name);
}
}