Sindbad~EG File Manager

Current Path : /proc/thread-self/cwd/app/Http/Controllers/
Upload File :
Current File : //proc/thread-self/cwd/app/Http/Controllers/QuestionarioController.php

<?php

namespace App\Http\Controllers;

use App\Models\Questionario;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Mail\SendQuizMail;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Log;
use Exception;
use App\Models\User;
use App\Models\RespostaPergunta;
use Illuminate\Support\Facades\DB;
use App\Models\Startup;
use App\Models\Resposta;
use Illuminate\Support\Facades\Auth;

class QuestionarioController extends Controller
{
    public function index()
    {
        // Retorna todos os questionários com seus respectivos eixos e perguntas
        $questionarios = Questionario::with('eixos.perguntas')->get();
        return response()->json(['questionarios' => $questionarios]);
    }

    public function create()
    {
        // Retorna uma resposta vazia em JSON ou outra resposta adequada à sua aplicação
        return response()->json();
    }

    public function store(Request $request)
    {
        // Validação dos dados do formulário
        $request->validate([
            'nome' => 'required',
            // Adicione aqui as validações para as outras colunas do questionário, se necessário
        ]);

        // Cria um novo questionário no banco de dados
        Questionario::create($request->all());

        // Retorna uma resposta vazia em JSON ou outra resposta adequada à sua aplicação
        return response()->json();
    }

    public function show(Questionario $questionario)
    {
        // Retorna o questionário com seus respectivos eixos e perguntas
        $questionarioCompleto = Questionario::with('eixos.perguntas')->find($questionario->id);
        return response()->json(['questionario' => $questionarioCompleto]);
    }

    public function destroy(Questionario $questionario)
    {
        // Exclui o questionário do banco de dados
        $questionario->delete();

        // Retorna uma resposta vazia em JSON ou outra resposta adequada à sua aplicação
        return response()->json();
    }

    public function sendQuiz($quiz_id, $userId, Request $request)
    {
        try {
            $user = User::find($userId);
            $quiz = RespostaPergunta::find($quiz_id);
            $startup = Startup::find($quiz->startup_id);

            $startupName = $startup->name;
            $date = $quiz->created_at;
            $mediaGeral = $request->mediaGeral;
            $mediaStartup  = $request->mediaStartup;
            $url  = $request->url;
            $fortalezas = $request->fortalezas;
            $pontos_de_atencao  = $request->pontos_de_atencao;
            $pontos_criticos  = $request->pontos_criticos;

            $fields = [
                'Estratégia',
                'Pesquisa e Desenvolvimento',
                'Comercializacao',
                'Gestao de Processos',
                'Clima de Projeto',
                'Cultura da Startup',
                'Indicadores de Desempenho',
                'Insercao Digital',
                'Interacao em Ecossistemas',
                'Capacidade Financeira'
            ];

            Mail::to($user->email)->send(new SendQuizMail($date, $mediaGeral, $mediaStartup, $fields, $startupName, $fortalezas, $pontos_de_atencao, $pontos_criticos, $url));
        } catch (Exception $e) {
            Log::error('Ocorreu uma exceção: ' . $e->getMessage());
            return response()->json(['message' => 'Um comportamento inesperado está impedindo de atualizar o ticket, por favor, tente novamente em alguns minutos.'], Response::HTTP_INTERNAL_SERVER_ERROR);
        }
    }

    public function getLatestQuestionnaires(Startup $startup, $userId)
    {
        $latestRespostas = Resposta::select('respostas.*')
            ->join('startups', 'respostas.startup_id', '=', 'startups.id')
            ->where('startups.id', $startup->id)
            ->where('startups.user_id', $userId)
            ->whereHas('startup', function ($query) use ($userId) {
                $query->where('user_id', $userId);
            })
            ->orderBy('respostas.created_at')
            ->limit(4)
            ->get();

        return response()->json($latestRespostas);
    }
}

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists