Sindbad~EG File Manager

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

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\File;
use App\Models\Startup;
use App\Models\Resposta;
use App\Models\RespostaPergunta;

class StartupController extends Controller
{
    public function create(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'name' => 'required',
            'cnpj' => 'nullable',
            'foundation_year' => 'required',
            'state' => 'required',
            'city' => 'required',
            'sector' => 'required',
            'photo' => 'nullable', 
            'stage' => 'required',
        ]);

        if ($validator->fails()) {
            return response()->json(['error' => $validator->errors()], 400);
        }

        $startup = new Startup([
            'name' => $request->name,
            'cnpj' => $request->cnpj,
            'foundation_year' => $request->foundation_year,
            'state' => $request->state,
            'city' => $request->city,
            'sector' => $request->sector,
            'photo' => $request->photo, 
            'stage' => $request->stage,
        ]);

        $startup->stage = $request->stage;

        if ($request->filled('photo')) {
            $base64Image = $request->input('photo');
            $startup->photo = $base64Image;
        }

        if (Auth::check()) {
            // O usuário está autenticado, vincule a startup ao usuário atualmente autenticado
            $user = Auth::user();
            $user->startups()->save($startup);
        } else {
            // O usuário não está autenticado, associe a startup ao usuário usando o ID fornecido na requisição
            $userId = $request->input('id');
            $startup->user_id = $userId;
            $startup->save();
        }

        return response()->json(['message' => 'Startup criada com sucesso'], 201);
    }

    public function index()
    {
        $startups = Startup::with('respostas', 'respostas.respostasPerguntas')->get();        

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

    public function update(Request $request, $startupId)
    {
        $validator = Validator::make($request->all(), [
            'name' => 'required',
            'cnpj' => 'required|unique:startups,cnpj,'.$startupId,
            'foundation_year' => 'required',
            'state' => 'required',
            'city' => 'required',
            'sector' => 'required',
            'photo' => 'nullable', 
            'stage' => 'required',
        ]);

        if ($validator->fails()) {
            return response()->json(['error' => $validator->errors()], 400);
        }

        $user = Auth::user();

        $startup = $user->startups()->find($startupId);

        if (!$startup) {
            return response()->json(['error' => 'Startup não encontrada'], 404);
        }

        $startup->name = $request->name;
        $startup->cnpj = $request->cnpj;
        $startup->foundation_year = $request->foundation_year;
        $startup->state = $request->state;
        $startup->city = $request->city;
        $startup->sector = $request->sector;
        $startup->photo = $request->photo;
        $startup->stage = $request->stage;

        $startup->save();

        return response()->json(['message' => 'Startup atualizada com sucesso'], 200);
    }


    public function deleteStartup(Request $request, $startupId)
    {
        $user = Auth::user();

        $startup = $user->startups()->find($startupId);

        if (!$startup) {
            return response()->json(['error' => 'Startup não encontrada'], 404);
        }

        $startup->delete();

        return response()->json(['message' => 'Startup excluída com sucesso'], 200);
    }
}

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