%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home2/vacivi36/core/app/Http/Controllers/
Upload File :
Create Path :
Current File : //home2/vacivi36/core/app/Http/Controllers/CampaignController.php

<?php

namespace App\Http\Controllers;

use App\Models\Campaign;
use App\Models\Vaccine;
use Illuminate\Http\Request;

class CampaignController extends Controller
{
    /**
     * Exibir a lista de campanhas.
     */
    public function index()
    {
        $campaigns = Campaign::all();
        return response()->json($campaigns);
    }    

    /**
     * Criar uma nova campanha.
     */
    public function store(Request $request)
    {
        // Verifica se o codigo da campanha já está cadastrada
        if (Campaign::where('code', $request->code)->exists()) {
            return response()->json(['status' => 'error', 'message' => 'Código da campanha já cadastrada no sistema. Por favor, utilize outro código ou verifique as informações.'], 409);
        }

        // Verifica se o nome da campanha já está cadastrada
        if (Campaign::where('name', $request->name)->exists()) {
            return response()->json(['status' => 'error', 'message' => 'Nome da campanha já cadastrada no sistema. Por favor, utilize outro nome ou verifique as informações.'], 409);
        }

        $campaign = new Campaign();

        $campaign->code = $request->code;
        $campaign->name = $request->name;
        $campaign->notes = $request->notes;

        $insert = $campaign->save();

        if ($insert) {
            return response()->json(['status' => 'success', 'message' => 'Campanha criada com sucesso!'], 201);
        } else {
            return response()->json(['status' => 'error', 'message' => 'Erro ao criar campanha.'], 500);
        }
    }

    /**
     * Exibir uma campanha específica.
     */
    public function show($id)
    {
        $campaign = Campaign::findOrFail($id);
        return response()->json($campaign);
    }

    /**
     * Atualizar uma campanha existente.
     */
    public function update(Request $request, $id)
    {
        $campaign = Campaign::findOrFail($id);

        $campaign->code = $request->code;
        $campaign->name = $request->name;
        $campaign->notes = $request->notes;

        $update = $campaign->save();

        if ($update) {
            return response()->json(['status' => 'success', 'message' => 'Campanha atualizada com sucesso!'], 200);
        } else {
            return response()->json(['status' => 'error', 'message' => 'Erro ao atualizar campanha.'], 500);
        }
    }

    /**
     * Remover uma campanha.
     */
    public function destroy($id)
    {
        $campaign = Campaign::findOrFail($id);

        // Verificar se a campanha possui vacinas associadas
        if ($campaign->vaccines()->exists()) {
            return response()->json(['message' => 'A campanha não pode ser excluída porque está vinculada com uma ou mais vacinas.'], 400);
        }

        $campaign->delete();
        return response()->json(['message' => 'Campanha excluída com sucesso!']);
    }

}

Zerion Mini Shell 1.0