Sadržaj
📌 1. ER Model baze podataka Dizajn baze je temeljen na B2B i B2C procesima, upravljanju ponudama, rezervacijama i integracijama s vanjskim sustavima.
🔹 Glavne tabele: users – korisnici (B2B i B2C, admini) roles – uloge (Admin, Travel Agent, Hotel Partner, Klijent) companies – B2B klijenti (putničke agencije) hotels – hoteli dostupni za rezervaciju golf_courses – golf tereni packages – turistički paketi (hotel + golf + transfer) reservations – rezervacije korisnika payments – plaćanja invoices – fakture notifications – email/SMS obavijesti availability_checks – provjera dostupnosti hotela 🔹 Relacije: Svaki user može pripadati company (ako je B2B klijent) Svaki package može sadržavati više hotela, golf_courses i transfera Svaka reservation se veže na usera i package Svako plaćanje se veže na reservation Sad ću generirati vizualni ER dijagram baze. 🎨
Generirani ER model baze podataka:
📌 2. Laravel struktura projekta Sada ću generirati osnovni Laravel projekt s potrebnim modelima, migracijama i relacijama. 🎯
Laravel Crm Init
Odgovori u razgovoru Generirao sam inicijalnu Laravel strukturu s modelima, migracijama i paketima. 🚀 Sljedeći koraci:
Dodati API endpointove za rezervacije, ponude i provjere dostupnosti. Integrirati CRM funkcionalnosti za B2B i B2C klijente. Deployati aplikaciju na Hetzner Cloud ili Laravel Cloud.
composer create-project --prefer-dist laravel/laravel golfcrm
cd golfcrm
Dodavanje Laravel paketa
composer require laravel/breeze composer require spatie/laravel-permission composer require laravel/cashier
php artisan breeze:install php artisan migrate
Kreiranje modela i migracija
php artisan make:model User -m php artisan make:model Role -m php artisan make:model Company -m php artisan make:model Hotel -m php artisan make:model GolfCourse -m php artisan make:model Package -m php artisan make:model Reservation -m php artisan make:model Payment -m php artisan make:model Invoice -m php artisan make:model Notification -m php artisan make:model AvailabilityCheck -m
Postavljanje modela i relacija
User.php
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable { use HasFactory, HasRoles; public function company() { return $this->belongsTo(Company::class); } }
Reservation.php
class Reservation extends Model { use HasFactory; public function user() { return $this->belongsTo(User::class); } public function package() { return $this->belongsTo(Package::class); } }
Package.php
class Package extends Model { use HasFactory; public function hotels() { return $this->belongsToMany(Hotel::class); } public function golfCourses() { return $this->belongsToMany(GolfCourse::class); } }
Migracije (primjer za Reservations)
Schema::create('reservations', function (Blueprint $table) { $table->id(); $table->foreignId('user_id')->constrained(); $table->foreignId('package_id')->constrained(); $table->string('status'); $table->date('check_in'); $table->date('check_out'); $table->timestamps(); });
Pokretanje migracija
php artisan migrate