%PDF- %PDF-
| Direktori : /home/vacivi36/core/app/Http/Controllers/ |
| Current File : /home/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!']);
}
}