%PDF- %PDF-
| Direktori : /home/vacivi36/core/app/Http/Controllers/ |
| Current File : /home/vacivi36/core/app/Http/Controllers/PatientController.php |
<?php
namespace App\Http\Controllers;
use App\Models\Patient;
use Illuminate\Http\Request;
class PatientController extends Controller
{
/**
* Exibir a lista de pacientes.
*/
public function index()
{
$patients = Patient::with('company')->get();
return response()->json($patients);
}
/**
* Criar um novo paciente.
*/
public function store(Request $request)
{
// Verifica se o cpf já está cadastrado
if (Patient::where('cpf', $request->cpf)->exists()) {
return response()->json(['status' => 'error', 'message' => 'CPF já cadastrado no sistema. Por favor, utilize outro CPF ou verifique as informações.'], 409);
}
$patient = new Patient();
$patient->name = $request->name;
$patient->cpf = $request->cpf;
$patient->date_of_birth = $request->date_of_birth;
$patient->notes = $request->notes;
$patient->postal_code = $request->postal_code;
$patient->address = $request->address;
$patient->district = $request->district;
$patient->address_number = $request->address_number;
$patient->address_complement = $request->address_complement;
$patient->city = $request->city;
$patient->phone = $request->phone;
$patient->mobile = $request->mobile;
$patient->email = $request->email;
$patient->company_id = $request->company_id;
$insert = $patient->save();
if ($insert) {
return response()->json(['status' => 'success', 'message' => 'Paciente criado com sucesso!'], 201);
} else {
return response()->json(['status' => 'error', 'message' => 'Erro ao criar paciente.'], 500);
}
}
/**
* Exibir um paciente específico.
*/
public function show($id)
{
$patient = Patient::findOrFail($id);
return response()->json($patient);
}
/**
* Atualizar um paciente existente.
*/
public function update(Request $request, $id)
{
$patient = Patient::findOrFail($id);
$patient->name = $request->name;
$patient->cpf = $request->cpf;
$patient->date_of_birth = $request->date_of_birth;
$patient->notes = $request->notes;
$patient->postal_code = $request->postal_code;
$patient->address = $request->address;
$patient->district = $request->district;
$patient->address_number = $request->address_number;
$patient->address_complement = $request->address_complement;
$patient->city = $request->city;
$patient->phone = $request->phone;
$patient->mobile = $request->mobile;
$patient->email = $request->email;
$patient->company_id = $request->company_id;
$update = $patient->save();
if ($update) {
return response()->json(['status' => 'success', 'message' => 'Paciente atualizado com sucesso!'], 200);
} else {
return response()->json(['status' => 'error', 'message' => 'Erro ao atualizar paciente.'], 500);
}
}
/**
* Remover um paciente.
*/
public function destroy($id)
{
$patient = Patient::findOrFail($id);
// Verifica se o paciente tem agendamentos
if ($patient->schedules()->exists()) {
return response()->json(['message' => 'O paciente possui agendamentos de vacinas e não pode ser excluído.'], 400);
}
$patient->delete();
return response()->json(['message' => 'Paciente excluído com sucesso!']);
}
}