%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/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!']);
    }

}

Zerion Mini Shell 1.0