HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/demo.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);
    }
}