| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- <?php
- namespace App\Services;
- use App\Models\Appointment;
- use Illuminate\Database\Eloquent\Collection;
- use Illuminate\Support\Str;
- class AppointmentService
- {
- public function getAll(): Collection
- {
- return Appointment::with(['user', 'partnerAgreement', 'partnerAgreementService'])
- ->orderBy('date', 'desc')
- ->get();
- }
- public function getAllByUser(int $userId): Collection
- {
- return Appointment::with(['partnerAgreement', 'partnerAgreementService'])
- ->where('user_id', $userId)
- ->orderBy('date', 'desc')
- ->get();
- }
- public function findById(int $id): ?Appointment
- {
- return Appointment::with(['user', 'partnerAgreement', 'partnerAgreementService'])->find($id);
- }
- public function create(array $data): Appointment
- {
- $data['order_number'] = $this->generateOrderNumber();
- $data['requested_at'] = now();
- return Appointment::create($data);
- }
- public function update(int $id, array $data): ?Appointment
- {
- $model = Appointment::find($id);
- if (!$model) {
- return null;
- }
- $model->update($data);
- return $model->fresh(['user', 'partnerAgreement', 'partnerAgreementService']);
- }
- public function delete(int $id): bool
- {
- $model = Appointment::find($id);
- if (!$model) {
- return false;
- }
- return $model->delete();
- }
- private function generateOrderNumber(): string
- {
- do {
- $number = 'AGD-' . strtoupper(Str::random(8));
- } while (Appointment::where('order_number', $number)->exists());
- return $number;
- }
- }
|