Skip to main content

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