seeder wip
This commit is contained in:
1 parent
1d16946f20
commit
005924ef8a
34 files changed
+249
-288
No files matched your search
@@ -15,12 +15,11 @@ use Filament\Schemas\Components\View;
|
||||
use Filament\Schemas\Components\Wizard;
|
||||
use Filament\Schemas\Components\Wizard\Step;
|
||||
use Filament\Schemas\Schema;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Ysfkaya\FilamentPhoneInput\Forms\PhoneInput;
|
||||
|
||||
class Register extends BaseRegister
|
||||
{
|
||||
public User $user;
|
||||
|
||||
public function form(Schema $schema): Schema
|
||||
{
|
||||
return $schema
|
||||
@@ -30,7 +29,14 @@ class Register extends BaseRegister
|
||||
->icon('lucide-user-plus')
|
||||
->description('Benutzer anlegen.')
|
||||
->schema([
|
||||
$this->getGenderFormComponent(),
|
||||
Select::make('gender')
|
||||
->label('Geschlecht')
|
||||
->options([
|
||||
'Herr' => 'Herr',
|
||||
'Frau' => 'Frau',
|
||||
'Non-binary' => 'Non-binary',
|
||||
])
|
||||
->required(),
|
||||
$this->getNameFormComponent(),
|
||||
$this->getEmailFormComponent(),
|
||||
$this->getPasswordFormComponent(),
|
||||
@@ -41,46 +47,83 @@ class Register extends BaseRegister
|
||||
->icon('lucide-key-square')
|
||||
->description('Mit einem Konto verbinden.')
|
||||
->schema([
|
||||
$this->getKontoModusFormComponent(),
|
||||
/** BESTEHENDES KONTO */
|
||||
$this->getKontoFormComponent(),
|
||||
/** BESTEHENDES / NEU */
|
||||
Select::make('register-modus')
|
||||
->columnSpan(4)
|
||||
->label('Registriermodus')
|
||||
->prefixIcon('lucide-key-square')
|
||||
->prefixIconColor('primary')
|
||||
->aboveLabel([
|
||||
'Bitte wählen Sie ein bestehendes Konto oder erstellen Sie ein neues. Eine Registrierung bei einem bestehenden Konto muß vom Kontoinhaber bestätigt werden.',
|
||||
])
|
||||
->options([
|
||||
'old' => 'Mit einem bestehenden Konto verbinden',
|
||||
'new' => 'Ein neues Konto erstellen',
|
||||
])
|
||||
->live()
|
||||
->required(),
|
||||
/** BESTEHEND */
|
||||
Select::make('konto_id')
|
||||
->columnSpan(4)
|
||||
->label('Konto auswählen')
|
||||
->belowLabel([
|
||||
'Um das erstellte Profil zu aktivieren muß der Kontoinhaber die Anmeldung im Programm freischalten',
|
||||
])
|
||||
->visible(fn (Get $get): bool => $get('register-modus') == 'old')
|
||||
->options(Konto::query()->pluck('company', 'id'))
|
||||
->searchable()
|
||||
->required(),
|
||||
/** NEU */
|
||||
Fieldset::make('Rechnungsdaten')
|
||||
->visible(fn (Get $get): bool => $get('konto') == 'new')
|
||||
->visible(fn (Get $get): bool => $get('register-modus') == 'new')
|
||||
->schema([
|
||||
TextInput::make('company')
|
||||
TextInput::make('kontos.company')
|
||||
->label('Firma')
|
||||
->required(),
|
||||
TextInput::make('uid_number')
|
||||
TextInput::make('kontos.uid_number')
|
||||
->label('UID Nummer')
|
||||
->rules([new VatNumber])
|
||||
->required(),
|
||||
Textarea::make('address')
|
||||
Textarea::make('kontos.address')
|
||||
->label('Adresse')
|
||||
->required(),
|
||||
TextInput::make('country')
|
||||
TextInput::make('kontos.country')
|
||||
->label('Land')
|
||||
->default('Österreich')
|
||||
->required(),
|
||||
])->columnSpan(4),
|
||||
Fieldset::make('Kontaktperson')
|
||||
->visible(fn (Get $get): bool => $get('konto') == 'new')
|
||||
->visible(fn (Get $get): bool => $get('register-modus') == 'new')
|
||||
->schema([
|
||||
// $this->getKontoGenderFormComponent(),
|
||||
// $this->getTitleFormComponent(),
|
||||
// $this->getNameFormComponent(),
|
||||
// $this->getKontoEmailFormComponent(),
|
||||
// $this->getPhoneFormComponent(),
|
||||
Select::make('kontos.gender')
|
||||
->columnSpan(2)
|
||||
->label('Geschlecht')
|
||||
->options([
|
||||
'Herr' => 'Herr',
|
||||
'Frau' => 'Frau',
|
||||
'Non-binary' => 'Non-binary',
|
||||
])
|
||||
->required(),
|
||||
TextInput::make('kontos.title')
|
||||
->label('Titel')
|
||||
->required(),
|
||||
TextInput::make('kontos.name')
|
||||
->required(),
|
||||
TextInput::make('kontos.email')
|
||||
->label('E-Mail')
|
||||
->unique(table: Konto::class)
|
||||
->required(),
|
||||
PhoneInput::make('kontos.phone')
|
||||
->label('Telefon')
|
||||
->defaultCountry('AT'),
|
||||
])->columnSpan(4),
|
||||
|
||||
]),
|
||||
Wizard\Step::make('AGB')
|
||||
->icon('lucide-receipt-text')
|
||||
->visible(fn (Get $get): bool => $get('konto') == 'new')
|
||||
->description(' Allgemein Geschäftsbedignugen')
|
||||
->schema([
|
||||
Fieldset::make('Bitte lesen und akzeptieren Sie die allgemeinen Geschäftsbedignungen um die Registrierung abzuschließen.')
|
||||
->visible(fn (Get $get): bool => $get('konto') == 'new')
|
||||
->schema([
|
||||
Checkbox::make('agb_akzeptiert')
|
||||
->label('ABG akzeptieren')
|
||||
@@ -94,106 +137,17 @@ class Register extends BaseRegister
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* MODUS
|
||||
*/
|
||||
protected function getKontoModusFormComponent(): Select
|
||||
public function handleRegistration(array $data): Model
|
||||
{
|
||||
return Select::make('konto')
|
||||
->columnSpan(4)
|
||||
->label('Registriermodus')
|
||||
->prefixIcon('lucide-key-square')
|
||||
->prefixIconColor('primary')
|
||||
->aboveLabel([
|
||||
'Bitte wählen Sie ein bestehendes Konto oder erstellen Sie ein neues. Eine Registrierung bei einem bestehenden Konto muß vom Kontoinhaber bestätigt werden.',
|
||||
])
|
||||
->options([
|
||||
'old' => 'Mit einem bestehenden Konto verbinden',
|
||||
'new' => 'Ein neues Konto erstellen',
|
||||
])
|
||||
->live()
|
||||
->required();
|
||||
if (isset($data['kontos'])) {
|
||||
$konto = new Konto($data['kontos']);
|
||||
$konto->save();
|
||||
$data['konto_id'] = $konto->id;
|
||||
}
|
||||
unset($data['kontos']);
|
||||
|
||||
/**
|
||||
* USER
|
||||
*/
|
||||
protected function getGenderFormComponent(): Select
|
||||
{
|
||||
return Select::make('gender')
|
||||
->label('Geschlecht')
|
||||
->options([
|
||||
'Herr' => 'Herr',
|
||||
'Frau' => 'Frau',
|
||||
'Non-binary' => 'Non-binary',
|
||||
])
|
||||
->required();
|
||||
}
|
||||
$user = parent::handleRegistration($data);
|
||||
|
||||
/**
|
||||
* KONTO WÄHLEN
|
||||
*/
|
||||
protected function getKontoFormComponent(): Select
|
||||
{
|
||||
return Select::make('konto_id')
|
||||
->columnSpan(4)
|
||||
->label('Konto auswählen')
|
||||
->belowLabel([
|
||||
'Um das erstellte Profil zu aktivieren muß der Kontoinhaber die Anmeldung im Programm freischalten',
|
||||
])
|
||||
->visible(fn (Get $get): bool => $get('konto') == 'old')
|
||||
->options(Konto::query()->pluck('company', 'id'))
|
||||
->searchable()
|
||||
->required();
|
||||
}
|
||||
|
||||
/**
|
||||
* KONTO NEU
|
||||
*/
|
||||
protected function getTitleFormComponent(): TextInput
|
||||
{
|
||||
return TextInput::make('title')
|
||||
->label('Title')
|
||||
->visible(fn (Get $get): bool => $get('konto') == 'new')
|
||||
->required();
|
||||
}
|
||||
|
||||
protected function getKontoGenderFormComponent(): Select
|
||||
{
|
||||
return Select::make('gender')
|
||||
->columnSpan(2)
|
||||
->label('Geschlecht')
|
||||
->visible(fn (Get $get): bool => $get('konto') == 'new')
|
||||
->options([
|
||||
'Herr' => 'Herr',
|
||||
'Frau' => 'Frau',
|
||||
'Non-binary' => 'Non-binary',
|
||||
])
|
||||
->required();
|
||||
}
|
||||
|
||||
protected function getCompanyFormComponent(): TextInput
|
||||
{
|
||||
return TextInput::make('konto.company')
|
||||
->label('Firma')
|
||||
->visible(fn (Get $get): bool => $get('konto') == 'new')
|
||||
->required();
|
||||
}
|
||||
|
||||
protected function getKontoEmailFormComponent(): TextInput
|
||||
{
|
||||
return TextInput::make('email')
|
||||
->label('E-Mail')
|
||||
->visible(fn (Get $get): bool => $get('konto') == 'new')
|
||||
->unique(table: Konto::class)
|
||||
->required();
|
||||
}
|
||||
|
||||
protected function getPhoneFormComponent(): PhoneInput
|
||||
{
|
||||
return PhoneInput::make('phone')
|
||||
->label('Telefon')
|
||||
->visible(fn (Get $get): bool => $get('konto') == 'new')
|
||||
->defaultCountry('AT');
|
||||
return $user;
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,7 @@ use BackedEnum;
|
||||
use Filament\Resources\Resource;
|
||||
use Filament\Schemas\Schema;
|
||||
use Filament\Tables\Table;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
|
||||
class AuftraggeberResource extends Resource
|
||||
{
|
||||
@@ -58,8 +59,13 @@ class AuftraggeberResource extends Resource
|
||||
];
|
||||
}
|
||||
|
||||
public static function getEloquentQuery(): Builder
|
||||
{
|
||||
return parent::getEloquentQuery()->where('konto_id', auth()->user()->konto_id);
|
||||
}
|
||||
|
||||
public static function getNavigationBadge(): ?string
|
||||
{
|
||||
return parent::getEloquentQuery()->count();
|
||||
return parent::getEloquentQuery()->where('konto_id', auth()->user()->konto_id)->count();
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ namespace App\Filament\Resources\Auftraggebers\Tables;
|
||||
use Filament\Actions\BulkActionGroup;
|
||||
use Filament\Actions\DeleteBulkAction;
|
||||
use Filament\Actions\EditAction;
|
||||
use Filament\Tables\Columns\TextColumn;
|
||||
use Filament\Tables\Table;
|
||||
|
||||
class AuftraggebersTable
|
||||
@@ -13,7 +14,8 @@ class AuftraggebersTable
|
||||
{
|
||||
return $table
|
||||
->columns([
|
||||
//
|
||||
TextColumn::make('name'),
|
||||
TextColumn::make('email')->copyable()->label('E-Mail'),
|
||||
])
|
||||
->filters([
|
||||
//
|
||||
|
||||
@@ -68,8 +68,13 @@ class GutachterResource extends Resource
|
||||
]);
|
||||
}
|
||||
|
||||
public static function getEloquentQuery(): Builder
|
||||
{
|
||||
return parent::getEloquentQuery()->where('konto_id', auth()->user()->konto_id);
|
||||
}
|
||||
|
||||
public static function getNavigationBadge(): ?string
|
||||
{
|
||||
return parent::getEloquentQuery()->count();
|
||||
return parent::getEloquentQuery()->where('konto_id', auth()->user()->konto_id)->count();
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,7 @@ class GutachtersTable
|
||||
return $table
|
||||
->columns([
|
||||
TextColumn::make('name'),
|
||||
TextColumn::make('email')->copyable()->label('E-Mail'),
|
||||
])
|
||||
->filters([
|
||||
TrashedFilter::make(),
|
||||
|
||||
@@ -9,7 +9,6 @@ use Filament\Forms\Components\TextInput;
|
||||
use Filament\Support\Enums\FontWeight;
|
||||
use Filament\Support\Enums\TextSize;
|
||||
use Filament\Support\Icons\Heroicon;
|
||||
use Filament\Tables\Columns\IconColumn;
|
||||
use Filament\Tables\Columns\TextColumn;
|
||||
use Filament\Tables\Table;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
@@ -26,11 +25,6 @@ class KontosTable
|
||||
// TextColumn::make('gender')->label('Geschlecht'),
|
||||
// TextColumn::make('title')->label('Title'),
|
||||
// TextColumn::make('first_name')->label('Vorname'),
|
||||
// IconColumn::make('agb_akzeptiert')
|
||||
// ->label('AGB')
|
||||
// ->boolean()
|
||||
// ->trueIcon(Heroicon::OutlinedCheckBadge)
|
||||
// ->falseIcon(Heroicon::OutlinedXMark),
|
||||
|
||||
// PhoneColumn::make('phone')
|
||||
// ->label('Telefon')
|
||||
@@ -42,14 +36,14 @@ class KontosTable
|
||||
// ->label('E-mail'),
|
||||
|
||||
TextColumn::make('company')->label('Firma')
|
||||
->description(fn ($record): string => $record->address.', '.$record->location),
|
||||
->description(fn ($record): string => $record->address),
|
||||
|
||||
TextColumn::make('plan.name')
|
||||
->icon(Heroicon::CurrencyEuro)
|
||||
// ->iconColor('success')
|
||||
// ->badge()
|
||||
->label('Plan')
|
||||
->description(fn ($record): string => $record->plan->description)
|
||||
->description(fn ($record): string => $record->plan->payment)
|
||||
->wrap(),
|
||||
|
||||
TextColumn::make('guthaben')
|
||||
|
||||
@@ -7,6 +7,8 @@ use Filament\Actions\DeleteBulkAction;
|
||||
use Filament\Actions\EditAction;
|
||||
use Filament\Actions\ForceDeleteBulkAction;
|
||||
use Filament\Actions\RestoreBulkAction;
|
||||
use Filament\Support\Icons\Heroicon;
|
||||
use Filament\Tables\Columns\IconColumn;
|
||||
use Filament\Tables\Columns\TextColumn;
|
||||
use Filament\Tables\Filters\TrashedFilter;
|
||||
use Filament\Tables\Table;
|
||||
@@ -21,7 +23,11 @@ class UsersTable
|
||||
TextColumn::make('name'),
|
||||
TextColumn::make('konto.company')->badge(),
|
||||
TextColumn::make('email')->copyable()->label('E-Mail'),
|
||||
//
|
||||
IconColumn::make('agb_akzeptiert')
|
||||
->label('AGB')
|
||||
->boolean()
|
||||
->trueIcon(Heroicon::OutlinedCheckBadge)
|
||||
->falseIcon(Heroicon::OutlinedXMark),
|
||||
])
|
||||
->filters([
|
||||
TrashedFilter::make()->visible(fn () => auth()->user()->hasRole('super_admin')),
|
||||
|
||||
@@ -66,8 +66,13 @@ class UserResource extends Resource
|
||||
]);
|
||||
}
|
||||
|
||||
public static function getEloquentQuery(): Builder
|
||||
{
|
||||
return parent::getEloquentQuery()->where('konto_id', auth()->user()->konto_id);
|
||||
}
|
||||
|
||||
public static function getNavigationBadge(): ?string
|
||||
{
|
||||
return parent::getEloquentQuery()->count();
|
||||
return parent::getEloquentQuery()->where('konto_id', auth()->user()->konto_id)->count();
|
||||
}
|
||||
}
|
||||
@@ -2,9 +2,28 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Database\Factories\AuftraggeberFactory;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Auftraggeber extends Model
|
||||
{
|
||||
//
|
||||
use HasFactory;
|
||||
|
||||
protected $fillable = [
|
||||
'konto_id',
|
||||
'name',
|
||||
'logo',
|
||||
'address',
|
||||
'country',
|
||||
'kontakt',
|
||||
'email',
|
||||
'phone',
|
||||
];
|
||||
|
||||
protected static function newFactory(): Factory
|
||||
{
|
||||
return AuftraggeberFactory::new();
|
||||
}
|
||||
}
|
||||
@@ -14,6 +14,16 @@ class Gutachter extends Model
|
||||
use HasFactory;
|
||||
use SoftDeletes;
|
||||
|
||||
protected $fillable = [
|
||||
'konto_id',
|
||||
'name',
|
||||
'logo',
|
||||
'address',
|
||||
'country',
|
||||
'email',
|
||||
'phone',
|
||||
];
|
||||
|
||||
protected static function booted(): void
|
||||
{
|
||||
static::addGlobalScope(new KontoScope);
|
||||
|
||||
@@ -20,15 +20,13 @@ class Konto extends Model
|
||||
protected $fillable = [
|
||||
'title',
|
||||
'gender',
|
||||
'first_name',
|
||||
'last_name',
|
||||
'name',
|
||||
'company',
|
||||
'email',
|
||||
'address',
|
||||
'country',
|
||||
'phone',
|
||||
'uid_number',
|
||||
'agb_akzeptiert',
|
||||
'plan_id',
|
||||
'guthaben',
|
||||
'gueltig_bis',
|
||||
|
||||
@@ -34,6 +34,7 @@ class User extends Authenticatable implements FilamentUser, HasAppAuthentication
|
||||
'name',
|
||||
'email',
|
||||
'password',
|
||||
'agb_akzeptiert',
|
||||
'app_verified_at',
|
||||
];
|
||||
|
||||
|
||||
@@ -27,8 +27,8 @@ class AppServiceProvider extends ServiceProvider
|
||||
FilamentColor::register([
|
||||
'danger' => Color::Red,
|
||||
'gray' => Color::Zinc,
|
||||
'info' => Color::Indigo,
|
||||
'primary' => Color::Sky,
|
||||
'info' => Color::Blue,
|
||||
'primary' => Color::Red,
|
||||
'success' => Color::Green,
|
||||
'warning' => Color::Amber,
|
||||
]);
|
||||
|
||||
Generated
+5
-5
@@ -1902,16 +1902,16 @@
|
||||
},
|
||||
{
|
||||
"name": "giggsey/libphonenumber-for-php-lite",
|
||||
"version": "9.0.14",
|
||||
"version": "9.0.15",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/giggsey/libphonenumber-for-php-lite.git",
|
||||
"reference": "af794cc2ed18edeebadf5ffe08eb6add04275709"
|
||||
"reference": "bdb457250790bba0a4f8f03e3a3eceb47805499e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/giggsey/libphonenumber-for-php-lite/zipball/af794cc2ed18edeebadf5ffe08eb6add04275709",
|
||||
"reference": "af794cc2ed18edeebadf5ffe08eb6add04275709",
|
||||
"url": "https://api.github.com/repos/giggsey/libphonenumber-for-php-lite/zipball/bdb457250790bba0a4f8f03e3a3eceb47805499e",
|
||||
"reference": "bdb457250790bba0a4f8f03e3a3eceb47805499e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1976,7 +1976,7 @@
|
||||
"issues": "https://github.com/giggsey/libphonenumber-for-php-lite/issues",
|
||||
"source": "https://github.com/giggsey/libphonenumber-for-php-lite"
|
||||
},
|
||||
"time": "2025-09-16T07:09:25+00:00"
|
||||
"time": "2025-09-26T07:21:30+00:00"
|
||||
},
|
||||
{
|
||||
"name": "graham-campbell/result-type",
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Factories;
|
||||
|
||||
use App\Models\Konto;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
|
||||
/**
|
||||
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Auftraggeber>
|
||||
*/
|
||||
class AuftraggeberFactory extends Factory
|
||||
{
|
||||
/**
|
||||
* Define the model's default state.
|
||||
*
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function definition(): array
|
||||
{
|
||||
return [
|
||||
'konto_id' => Konto::all()->random()->id,
|
||||
'name' => fake()->name(),
|
||||
'address' => fake()->Address(),
|
||||
'kontakt' => fake()->name(),
|
||||
'country' => 'Österreich',
|
||||
'email' => fake()->email(),
|
||||
'phone' => fake()->PhoneNumber(),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace Database\Factories;
|
||||
|
||||
use App\Models\Konto;
|
||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
|
||||
/**
|
||||
@@ -17,7 +18,7 @@ class GutachterFactory extends Factory
|
||||
public function definition(): array
|
||||
{
|
||||
return [
|
||||
'konto_id' => fake()->numberBetween(1, 7),
|
||||
'konto_id' => Konto::all()->random()->id,
|
||||
'name' => fake()->name(),
|
||||
'address' => fake()->Address(),
|
||||
'country' => 'Österreich',
|
||||
|
||||
@@ -26,7 +26,6 @@ class KontoFactory extends Factory
|
||||
'country' => 'Österreich',
|
||||
'phone' => fake()->PhoneNumber(),
|
||||
'uid_number' => 'ATU'.fake()->randomNumber(8, true),
|
||||
'agb_akzeptiert' => 1,
|
||||
'plan_id' => fake()->numberBetween(1, 3),
|
||||
'guthaben' => fake()->numberBetween(4, 50),
|
||||
'gueltig_bis' => fake()->dateTimeBetween('-1 month', '+5 month'),
|
||||
|
||||
@@ -32,6 +32,7 @@ class UserFactory extends Factory
|
||||
'email_verified_at' => now(),
|
||||
'password' => static::$password ??= Hash::make('password'),
|
||||
'remember_token' => Str::random(10),
|
||||
'agb_akzeptiert' => 1,
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,6 @@ return new class extends Migration
|
||||
$table->string('country')->nullable();
|
||||
$table->string('phone')->nullable();
|
||||
$table->string('uid_number')->nullable();
|
||||
$table->boolean('agb_akzeptiert')->default(false);
|
||||
$table->string('plan_id')->default(1);
|
||||
$table->string('guthaben')->default(0);
|
||||
$table->timestamp('gueltig_bis')->nullable();
|
||||
|
||||
@@ -19,6 +19,7 @@ return new class extends Migration
|
||||
$table->string('email')->unique();
|
||||
$table->timestamp('email_verified_at')->nullable();
|
||||
$table->string('password');
|
||||
$table->boolean('agb_akzeptiert')->default(false);
|
||||
|
||||
$table->text('app_authentication_secret')->nullable();
|
||||
$table->text('app_authentication_recovery_codes')->nullable();
|
||||
|
||||
@@ -16,7 +16,7 @@ return new class extends Migration
|
||||
$table->foreignId('konto_id')->constrained();
|
||||
$table->string('name')->nullable();
|
||||
$table->string('logo')->nullable();
|
||||
$table->string('address')->nullable();
|
||||
$table->text('address')->nullable();
|
||||
$table->string('country')->nullable();
|
||||
$table->string('phone')->nullable();
|
||||
$table->string('email')->nullable();
|
||||
|
||||
@@ -14,12 +14,13 @@ return new class extends Migration
|
||||
Schema::create('auftraggebers', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->foreignId('konto_id')->constrained();
|
||||
$table->string('name');
|
||||
$table->string('logo');
|
||||
$table->text('adresse')->nullable();
|
||||
$table->string('kontaktperson')->nullable();
|
||||
$table->string('name')->nullable();
|
||||
$table->string('logo')->nullable();
|
||||
$table->text('address')->nullable();
|
||||
$table->string('country')->nullable();
|
||||
$table->string('kontakt')->nullable();
|
||||
$table->string('email')->email()->nullable();
|
||||
$table->string('telefon')->tel()->nullable();
|
||||
$table->string('phone')->tel()->nullable();
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Auftraggeber;
|
||||
use App\Models\Gutachter;
|
||||
use App\Models\Konto;
|
||||
use App\Models\User;
|
||||
@@ -15,8 +16,8 @@ class DatabaseSeeder extends Seeder
|
||||
public function run(): void
|
||||
{
|
||||
Konto::factory()->count(10)->create();
|
||||
|
||||
// Gutachter::factory()->create(30);
|
||||
Gutachter::factory()->count(30)->create();
|
||||
Auftraggeber::factory()->count(30)->create();
|
||||
|
||||
$this->call([
|
||||
OrientierungenSeeder::class,
|
||||
@@ -24,7 +25,7 @@ class DatabaseSeeder extends Seeder
|
||||
RolesAndPermissionsSeeder::class,
|
||||
]);
|
||||
|
||||
User::factory()->count(100)->create();
|
||||
User::factory()->count(40)->create();
|
||||
|
||||
}
|
||||
}
|
||||
@@ -12,10 +12,10 @@ class KontoSeeder extends Seeder
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
$sql = "INSERT INTO `kontos` (`id`, `title`, `gender`, `name`, `company`, `email`, `address`, `location`, `plz`, `country`, `phone`, `uid_number`, `agb_akzeptiert`, `option_id`, `gutachten_zahl`, `gutachten_zeit`, `gutachten_abgeschlossen`, `created_at`, `updated_at`)
|
||||
$sql = "INSERT INTO `kontos` (`id`, `title`, `gender`, `name`, `company`, `email`, `address`, `location`, `plz`, `country`, `phone`, `uid_number`, `option_id`, `gutachten_zahl`, `gutachten_zeit`, `gutachten_abgeschlossen`, `created_at`, `updated_at`)
|
||||
VALUES
|
||||
('1', 'Architekt', 'Herr', 'Hanno Vogl-Fernheim', 'Architekt Vogl-Fernheim', 'office@vogl-fernheim.eu', 'Richardsweg 1', 'Innsbruck', '6020', 'Österreich', '+43 0512 560303', 'ATU 61718733', '1', '1', '1', NULL, '1', NULL, NULL),
|
||||
('2', 'Staatl. bef. u. beeideter Ziviltechniker', 'Herr', 'Christoph Falkner', 'Ziviltechniker Christoph Falkner', 'christophfalkner@me.com', 'Adele-Obermayr-Straße 2', 'Innsbruck', '6020', 'Österreich', '+43 650 92210248', 'ATU56874500', '1', '1', '1', NULL, '1', NULL, NULL);
|
||||
('1', 'Architekt', 'Herr', 'Hanno Vogl-Fernheim', 'Architekt Vogl-Fernheim', 'office@vogl-fernheim.eu', 'Richardsweg 1', 'Innsbruck', '6020', 'Österreich', '+43 0512 560303', 'ATU 61718733', '1', '1', NULL, '1', NULL, NULL),
|
||||
('2', 'Staatl. bef. u. beeideter Ziviltechniker', 'Herr', 'Christoph Falkner', 'Ziviltechniker Christoph Falkner', 'christophfalkner@me.com', 'Adele-Obermayr-Straße 2', 'Innsbruck', '6020', 'Österreich', '+43 650 92210248', 'ATU56874500', '1', '1', NULL, '1', NULL, NULL);
|
||||
";
|
||||
DB::unprepared($sql);
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ class RolesAndPermissionsSeeder extends Seeder
|
||||
'name' => 'Hermann Telser',
|
||||
'email' => 'ht@webwerkstatt.tirol',
|
||||
'password' => Hash::make('salam'),
|
||||
'agb_akzeptiert' => true,
|
||||
'app_verified_at' => now(),
|
||||
'email_verified_at' => now(),
|
||||
]);
|
||||
@@ -38,6 +39,7 @@ class RolesAndPermissionsSeeder extends Seeder
|
||||
'name' => 'Yvonne Bormes',
|
||||
'email' => 'yvonne.bormes@ztkammer.at',
|
||||
'password' => Hash::make('yvonne'),
|
||||
'agb_akzeptiert' => true,
|
||||
'app_verified_at' => now(),
|
||||
'email_verified_at' => now(),
|
||||
]);
|
||||
@@ -49,6 +51,7 @@ class RolesAndPermissionsSeeder extends Seeder
|
||||
'name' => 'Daniela Mandlez',
|
||||
'email' => 'daniela.mandkez@kammerwest.at',
|
||||
'password' => Hash::make('daniela'),
|
||||
'agb_akzeptiert' => true,
|
||||
'app_verified_at' => now(),
|
||||
'email_verified_at' => now(),
|
||||
]);
|
||||
|
||||
@@ -1,88 +0,0 @@
|
||||
<svg width="733" height="614" viewBox="0 0 733 614" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<mask id="mask0_6907_192479" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0"
|
||||
width="733" height="673">
|
||||
<rect width="733" height="673" fill="url(#paint0_radial_6907_192479)" />
|
||||
</mask>
|
||||
<g mask="url(#mask0_6907_192479)">
|
||||
<rect x="-11.5" y="0.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="72.5" y="0.5" width="84" height="84" fill="#DDD6FE" stroke="#DDD6FE" />
|
||||
<rect x="156.5" y="0.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="240.5" y="0.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="324.5" y="0.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="408.5" y="0.5" width="84" height="84" fill="#DDD6FE" stroke="#DDD6FE" />
|
||||
<rect x="492.5" y="0.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="576.5" y="0.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="660.5" y="0.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="-11.5" y="84.5" width="84" height="84" fill="#DDD6FE" stroke="#DDD6FE" />
|
||||
<rect x="72.5" y="84.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="156.5" y="84.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="240.5" y="84.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="324.5" y="84.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="408.5" y="84.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="492.5" y="84.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="576.5" y="84.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="660.5" y="84.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="-11.5" y="168.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="72.5" y="168.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="156.5" y="168.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="240.5" y="168.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="324.5" y="168.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="408.5" y="168.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="492.5" y="168.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="576.5" y="168.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="660.5" y="168.5" width="84" height="84" fill="#DDD6FE" stroke="#DDD6FE" />
|
||||
<rect x="-11.5" y="252.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="72.5" y="252.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="156.5" y="252.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="240.5" y="252.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="324.5" y="252.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="408.5" y="252.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="492.5" y="252.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="576.5" y="252.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="660.5" y="252.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="-11.5" y="336.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="72.5" y="336.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="156.5" y="336.5" width="84" height="84" fill="#DDD6FE" stroke="#DDD6FE" />
|
||||
<rect x="240.5" y="336.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="324.5" y="336.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="408.5" y="336.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="492.5" y="336.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="576.5" y="336.5" width="84" height="84" fill="#DDD6FE" stroke="#DDD6FE" />
|
||||
<rect x="660.5" y="336.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="-11.5" y="420.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="72.5" y="420.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="156.5" y="420.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="240.5" y="420.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="324.5" y="420.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="408.5" y="420.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="492.5" y="420.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="576.5" y="420.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="660.5" y="420.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="-11.5" y="504.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="72.5" y="504.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="156.5" y="504.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="240.5" y="504.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="324.5" y="504.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="408.5" y="504.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="492.5" y="504.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="576.5" y="504.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="660.5" y="504.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="-11.5" y="588.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="72.5" y="588.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="156.5" y="588.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="240.5" y="588.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="324.5" y="588.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="408.5" y="588.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="492.5" y="588.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="576.5" y="588.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
<rect x="660.5" y="588.5" width="84" height="84" fill="white" stroke="#DDD6FE" />
|
||||
</g>
|
||||
<defs>
|
||||
<radialGradient id="paint0_radial_6907_192479" cx="0" cy="0" r="1"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(366.5 336.5) rotate(90) scale(336.5 366.5)">
|
||||
<stop offset="0%" stop-color="#2563EB" />
|
||||
<stop offset="1" stop-color="white" stop-opacity="0" />
|
||||
</radialGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 7.0 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.8 MiB |
File renamed without changes.
@@ -1,8 +1,8 @@
|
||||
<div class="flex justify-center gap-3">
|
||||
<x-filament::button href="/app" tag="a" size="xl">
|
||||
<div class="flex justify-center gap-3 py-10">
|
||||
<x-filament::button href="/app" tag="a" size="xl" class="w-xs">
|
||||
Anmelden
|
||||
</x-filament::button>
|
||||
<x-filament::button href="/app/register" tag="a" size="xl" color="gray">
|
||||
<x-filament::button href="/app/register" tag="a" size="xl" color="gray" class="w-xs">
|
||||
Konto eröffnen
|
||||
</x-filament::button>
|
||||
</div>
|
||||
@@ -27,14 +27,17 @@
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body class="bg-cover" style="background-image: url('images/backgrounds/bg2.jpg')">
|
||||
{{-- <body class="bg-cover" style="background-image: url('images/backgrounds/bg2.jpg')"> --}}
|
||||
|
||||
<body>
|
||||
<div>
|
||||
@livewire('notifications')
|
||||
</div>
|
||||
|
||||
@include('layouts.nav')
|
||||
|
||||
<main class="mx-auto mt-30 rounded-xl p-10 max-w-5xl shadow-2xl bg-white/80 dark:bg-gray-900/90">
|
||||
<main
|
||||
class="mx-auto max-w-5xl bg-gray-100 dark:bg-gray-800 rounded-2xl border border-gray-200 dark:border-gray-700 p-5">
|
||||
@yield('content')
|
||||
</main>
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<footer class="fixed bottom-0 right-0 left-0 z-20 p-4">
|
||||
<a href="https://webwerkstatt.tirol" target="_blank"
|
||||
class="w-72 mx-auto cursor-pointer text-xs bg-white dark:bg-black justify-center rounded-sm opacity-70 flex border border-gray-300 dark:border-gray-600">
|
||||
class="w-72 mx-auto cursor-pointer text-xs bg-white dark:bg-black justify-center rounded-sm opacity-90 flex border border-gray-300 dark:border-gray-600">
|
||||
<span>v3.0 - © 2007-{{ date('Y') }} · </span>
|
||||
<span class=" tracking-tight text-xs ml-1 font-bold">
|
||||
Web<span class="text-primary-800 dark:text-primary-600 font-black">Werkstatt</span><span
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<circle cx="12" cy="5" r="2" />
|
||||
</svg>
|
||||
</div>
|
||||
<div class="text-2xl leading-none font-black tracking-tighter text-shadow-md dark:text-shadow-none">
|
||||
<div class="text-2xl leading-none font-black tracking-tighter text-shadow-lg">
|
||||
nutzwerte.at
|
||||
<div class="text-xs font-light tracking-tight">Software für Architekten</div>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<nav class="fixed top-0 right-0 left-0 z-20 bg-white dark:bg-black">
|
||||
<div class=" grid grid-cols-2 max-w-5xl mx-auto py-4">
|
||||
<nav class="mx-auto w-full max-w-5xl p-5">
|
||||
<div class=" grid grid-cols-2">
|
||||
<div class="fi-logo flex gap-1 ">
|
||||
<div class="w-9 pt-1">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
@@ -19,16 +19,16 @@
|
||||
|
||||
|
||||
<div class="grid grid-flow-col">
|
||||
<x-filament::link href="/" color="gray" icon="heroicon-m-home">
|
||||
<x-filament::link href="/" color="white" icon="heroicon-o-home">
|
||||
Home
|
||||
</x-filament::link>
|
||||
<x-filament::link href="/nutzwerte" color="gray" icon="heroicon-m-building-office-2">
|
||||
<x-filament::link href="/nutzwerte" color="white" icon="heroicon-o-building-office-2">
|
||||
Nutzwerte
|
||||
</x-filament::link>
|
||||
<x-filament::link href="/dieses-programm" color="gray" icon="heroicon-m-calculator">
|
||||
<x-filament::link href="/dieses-programm" color="white" icon="heroicon-o-calculator">
|
||||
Programm
|
||||
</x-filament::link>
|
||||
<x-filament::link href="/impressum" color="gray" icon="heroicon-m-calendar-date-range">
|
||||
<x-filament::link href="/impressum" color="white" icon="heroicon-o-calendar-date-range">
|
||||
Impressum
|
||||
</x-filament::link>
|
||||
</div>
|
||||
|
||||
@@ -1,48 +1,57 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="text-gray-700 dark:text-gray-200">
|
||||
<div class="flex gap-7">
|
||||
{{-- <body class="bg-cover" style="background-image: url('images/backgrounds/bg2.jpg')"> --}}
|
||||
|
||||
<div class="flex flex-col gap-3">
|
||||
<x-filament::section icon="heroicon-m-building-office-2">
|
||||
<x-slot name="heading">
|
||||
<x-title>
|
||||
Die Nutzwertberechnung
|
||||
</x-title>
|
||||
</x-slot>
|
||||
|
||||
<x-slot name="description">
|
||||
ist ein Gutachten im österreichischen Wohnungseigentumsrecht
|
||||
</x-slot>
|
||||
<p class="indent-5 pb-3">
|
||||
<div class="text-7xl text-center font-black p-7">
|
||||
Nutzwertberechnung <br>einmal anders
|
||||
</div>
|
||||
<div class="grid grid-cols-3 gap-5">
|
||||
<div class="block rounded-lg bg-white dark:bg-black shadow-secondary-1 dark:bg-surface-dark">
|
||||
<img class="rounded-t-lg object-cover h-56 w-full" src="images/backgrounds/bg2.jpg" alt="" />
|
||||
<div class="p-6 text-surface ">
|
||||
<h5 class="mb-2 text-xl font-medium leading-tight">Das Nutzwertgutachten</h5>
|
||||
<p class="mb-4 text-base">
|
||||
..ist ein Gutachten im österreichischen Wohnungseigentumsrecht.
|
||||
Es wird das Verhältnis der einzelnen Eigentumsanteile innerhalb eines Gebäudes bestimmt.
|
||||
</p>
|
||||
<p class="indent-5 pb-3">
|
||||
Sie bildet die Grundlage für die Berechnung der Betriebs- und Instandhaltungskosten sowie für
|
||||
das
|
||||
Stimmrecht der Miteigentümer und ist für die Begründung von Wohnungseigentum notwendig.
|
||||
</p>
|
||||
<x-filament::link href="/nutzwerte" icon-position="after" icon="lucide-external-link">
|
||||
Über die Nutzwertberechnung.
|
||||
mehr...
|
||||
</x-filament::link>
|
||||
<p class="indent-5 py-3">
|
||||
Wie Ihnen dieses Programm bei der Nutzwertberechnung zur Hand gehen kann, erfahren sie hier.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block rounded-lg bg-white dark:bg-black shadow-secondary-1 dark:bg-surface-dark">
|
||||
<img class="rounded-t-lg object-cover h-56 w-full p-5" src="images/klammer.jpg" alt="" />
|
||||
<div class="p-6 text-surface">
|
||||
<h5 class="mb-2 text-xl font-medium leading-tight">Daten Import</h5>
|
||||
<p class="mb-4 text-base">
|
||||
Die Daten werden aus allen gängigen Zeichenprogrammen importieren, und die Objekte werden
|
||||
angelegt.
|
||||
<x-filament::link href="/dieses-programm" icon-position="after" icon="lucide-external-link">
|
||||
Über dieses Programm
|
||||
mehr...
|
||||
</x-filament::link>
|
||||
<br>
|
||||
<br>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block rounded-lg bg-white dark:bg-black shadow-secondary-1 dark:bg-surface-dark">
|
||||
<img class="rounded-t-lg object-cover h-56 w-full" src="images/house2.jpg" alt="" />
|
||||
<div class="p-6 text-surface">
|
||||
<h5 class="mb-2 text-xl font-medium leading-tight">Berechnung</h5>
|
||||
<p class="mb-4 text-base">
|
||||
Nach dem die Parameter gesetzt wurden ist die
|
||||
fertige Nutzwertberechnung bereit um als als PDF-Dokument heruntgeladen zu werden.
|
||||
<x-filament::link href="/dieses-programm" icon-position="after" icon="lucide-external-link">
|
||||
mehr...
|
||||
</x-filament::link>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="p-5">
|
||||
@include('components.login')
|
||||
<br>
|
||||
</x-filament::section>
|
||||
|
||||
</div>
|
||||
<img src="images/house.jpg" class="w-82 rounded-2xl border border-gray-300" />
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<br>
|
||||
</div>
|
||||
@endsection
|
||||
Reference in new issue
Block a user