Sindbad~EG File Manager
<?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