feat(Structure & IDE Helper)
This commit is contained in:
32479
_ide_helper.php
Normal file
32479
_ide_helper.php
Normal file
File diff suppressed because it is too large
Load Diff
@@ -6,6 +6,8 @@ use App\Models\Service;
|
|||||||
use Filament\Actions\BulkActionGroup;
|
use Filament\Actions\BulkActionGroup;
|
||||||
use Filament\Actions\DeleteBulkAction;
|
use Filament\Actions\DeleteBulkAction;
|
||||||
use Filament\Actions\EditAction;
|
use Filament\Actions\EditAction;
|
||||||
|
use Filament\Support\Icons\Heroicon;
|
||||||
|
use Filament\Tables\Columns\IconColumn;
|
||||||
use Filament\Tables\Columns\TextColumn;
|
use Filament\Tables\Columns\TextColumn;
|
||||||
use Filament\Tables\Table;
|
use Filament\Tables\Table;
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,11 @@
|
|||||||
namespace App\Http\Controllers\Forms;
|
namespace App\Http\Controllers\Forms;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Http\Requests\Forms\MembershipRequest;
|
||||||
use App\Models\Member;
|
use App\Models\Member;
|
||||||
use App\Models\Membership;
|
use App\Models\Membership;
|
||||||
|
use App\Models\Package;
|
||||||
|
use App\Services\MemberService;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Http\RedirectResponse;
|
use Illuminate\Http\RedirectResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
@@ -12,62 +15,45 @@ use Inertia\Inertia;
|
|||||||
|
|
||||||
class MembershipFormController extends Controller
|
class MembershipFormController extends Controller
|
||||||
{
|
{
|
||||||
|
public function __construct(protected MemberService $memberService) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show the contact form page.
|
* Show the contact form page.
|
||||||
*/
|
*/
|
||||||
public function create()
|
public function create()
|
||||||
{
|
{
|
||||||
return Inertia::render('forms/membership');
|
return Inertia::render('forms/membership', [
|
||||||
|
'plans' => Package::query()
|
||||||
|
->where('is_active', true)
|
||||||
|
->select('id', 'name', 'price', 'description')
|
||||||
|
->get()
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle an incoming membership form request.
|
* Handle an incoming membership form request.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public function store(Request $request): RedirectResponse
|
public function store(MembershipRequest $request): RedirectResponse
|
||||||
{
|
{
|
||||||
$request->validate([
|
$validated = $request->validated();
|
||||||
'lastname' => 'required|string|max:255',
|
|
||||||
'firstname' => 'required|string|max:255',
|
try {
|
||||||
'email' => 'required|email|max:255',
|
$this->memberService->registerNewMember($validated);
|
||||||
'company' => 'required|string|max:255',
|
} catch (\Throwable $e) {
|
||||||
'date_of_birth' => 'required|date',
|
\Log::error('Erreur lors de la création d’un membre', [
|
||||||
'address' => 'required|string|max:255',
|
'error' => $e->getMessage(),
|
||||||
'zipcode' => 'required|string|max:255',
|
'trace' => $e->getTraceAsString(),
|
||||||
'city' => 'required|string|max:255',
|
'data' => $validated,
|
||||||
'phone1' => 'required|string|max:255',
|
|
||||||
// Captcha
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// New Member with status pending
|
return redirect()
|
||||||
|
->route('membership')
|
||||||
|
->with('error', __('memberships.subscription.failed'));
|
||||||
|
}
|
||||||
|
|
||||||
$member = new Member();
|
return redirect()
|
||||||
$member->status = 'pending';
|
->route('membership')
|
||||||
$member->nature = 'physical';
|
->with('success', __('memberships.subscription.success'));
|
||||||
//$member->group_id = '2';
|
|
||||||
$member->lastname = $request->lastname;
|
|
||||||
$member->firstname = $request->firstname;
|
|
||||||
$member->email = $request->email;
|
|
||||||
$member->company = $request->company ?? null;
|
|
||||||
$member->date_of_birth = Carbon::parse($request->date_of_birth)->format('Y-m-d H:i:s') ?? null;
|
|
||||||
$member->address = $request->address;
|
|
||||||
$member->zipcode = $request->zipcode;
|
|
||||||
$member->city = $request->city;
|
|
||||||
$member->country = 'FR';
|
|
||||||
$member->phone1 = $request->phone1;
|
|
||||||
|
|
||||||
$member->save();
|
|
||||||
|
|
||||||
$membership = new Membership();
|
|
||||||
$membership->member()->associate($member);
|
|
||||||
$membership->save();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Event for sending notification to admin
|
|
||||||
// Event for sending notification to member
|
|
||||||
|
|
||||||
return redirect()->route('membership')->with('success', __('Your message has been sent successfully!'));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
41
app/Http/Requests/Forms/MembershipRequest.php
Normal file
41
app/Http/Requests/Forms/MembershipRequest.php
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Requests\Forms;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class MembershipRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
// Member
|
||||||
|
'lastname' => 'required|string|max:255',
|
||||||
|
'firstname' => 'required|string|max:255',
|
||||||
|
'email' => 'required|email|max:255',
|
||||||
|
'company' => 'required|string|max:255',
|
||||||
|
'address' => 'required|string|max:255',
|
||||||
|
'zipcode' => 'required|string|max:255',
|
||||||
|
'city' => 'required|string|max:255',
|
||||||
|
'phone1' => 'required|string|max:255',
|
||||||
|
'group_id' => 'required|string|max:255',
|
||||||
|
|
||||||
|
// Membership
|
||||||
|
'package' => 'required|string|max:255',
|
||||||
|
'amount' => 'required|string|max:255',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,6 +4,31 @@ namespace App\Models;
|
|||||||
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @property int $id
|
||||||
|
* @property string|null $lastname
|
||||||
|
* @property string|null $firstname
|
||||||
|
* @property string|null $email
|
||||||
|
* @property string|null $address
|
||||||
|
* @property string|null $subject
|
||||||
|
* @property string|null $message
|
||||||
|
* @property \Illuminate\Support\Carbon|null $created_at
|
||||||
|
* @property \Illuminate\Support\Carbon|null $updated_at
|
||||||
|
* @property-read string $full_name
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Contact newModelQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Contact newQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Contact query()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Contact whereAddress($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Contact whereCreatedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Contact whereEmail($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Contact whereFirstname($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Contact whereId($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Contact whereLastname($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Contact whereMessage($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Contact whereSubject($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Contact whereUpdatedAt($value)
|
||||||
|
* @mixin \Eloquent
|
||||||
|
*/
|
||||||
class Contact extends Model
|
class Contact extends Model
|
||||||
{
|
{
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
|
|||||||
@@ -7,6 +7,60 @@ use Illuminate\Database\Eloquent\Model;
|
|||||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @property int $id
|
||||||
|
* @property int|null $user_id
|
||||||
|
* @property string|null $keycloak_id
|
||||||
|
* @property string $status
|
||||||
|
* @property string $nature
|
||||||
|
* @property int|null $group_id
|
||||||
|
* @property string|null $lastname
|
||||||
|
* @property string|null $firstname
|
||||||
|
* @property string $email
|
||||||
|
* @property string|null $company
|
||||||
|
* @property string|null $date_of_birth
|
||||||
|
* @property string|null $address
|
||||||
|
* @property string|null $zipcode
|
||||||
|
* @property string|null $city
|
||||||
|
* @property string|null $country
|
||||||
|
* @property string|null $phone1
|
||||||
|
* @property string|null $phone2
|
||||||
|
* @property int $public_membership
|
||||||
|
* @property \Illuminate\Support\Carbon|null $created_at
|
||||||
|
* @property \Illuminate\Support\Carbon|null $updated_at
|
||||||
|
* @property string|null $deleted_at
|
||||||
|
* @property-read string $full_name
|
||||||
|
* @property-read \App\Models\MemberGroup|null $group
|
||||||
|
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Membership> $memberships
|
||||||
|
* @property-read int|null $memberships_count
|
||||||
|
* @property-read \App\Models\User|null $user
|
||||||
|
* @method static \Database\Factories\MemberFactory factory($count = null, $state = [])
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member newModelQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member newQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member query()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member whereAddress($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member whereCity($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member whereCompany($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member whereCountry($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member whereCreatedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member whereDateOfBirth($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member whereDeletedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member whereEmail($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member whereFirstname($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member whereGroupId($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member whereId($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member whereKeycloakId($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member whereLastname($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member whereNature($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member wherePhone1($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member wherePhone2($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member wherePublicMembership($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member whereStatus($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member whereUpdatedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member whereUserId($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Member whereZipcode($value)
|
||||||
|
* @mixin \Eloquent
|
||||||
|
*/
|
||||||
class Member extends Model
|
class Member extends Model
|
||||||
{
|
{
|
||||||
use HasFactory;
|
use HasFactory;
|
||||||
@@ -27,7 +81,10 @@ class Member extends Model
|
|||||||
'country',
|
'country',
|
||||||
'phone1',
|
'phone1',
|
||||||
'phone2',
|
'phone2',
|
||||||
'public_membership'
|
'public_membership',
|
||||||
|
'package_id',
|
||||||
|
'amount',
|
||||||
|
'payment_status'
|
||||||
];
|
];
|
||||||
|
|
||||||
public static function getAttributeLabel(string $attribute): string
|
public static function getAttributeLabel(string $attribute): string
|
||||||
|
|||||||
@@ -5,6 +5,28 @@ namespace App\Models;
|
|||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @property int $id
|
||||||
|
* @property string $identifier
|
||||||
|
* @property string $name
|
||||||
|
* @property string|null $description
|
||||||
|
* @property \Illuminate\Support\Carbon|null $created_at
|
||||||
|
* @property \Illuminate\Support\Carbon|null $updated_at
|
||||||
|
* @property string|null $deleted_at
|
||||||
|
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Member> $members
|
||||||
|
* @property-read int|null $members_count
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|MemberGroup newModelQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|MemberGroup newQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|MemberGroup query()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|MemberGroup whereCreatedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|MemberGroup whereDeletedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|MemberGroup whereDescription($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|MemberGroup whereId($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|MemberGroup whereIdentifier($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|MemberGroup whereName($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|MemberGroup whereUpdatedAt($value)
|
||||||
|
* @mixin \Eloquent
|
||||||
|
*/
|
||||||
class MemberGroup extends Model
|
class MemberGroup extends Model
|
||||||
{
|
{
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
|
|||||||
@@ -8,6 +8,41 @@ use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
|||||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @property int $id
|
||||||
|
* @property int $member_id
|
||||||
|
* @property int|null $admin_id
|
||||||
|
* @property int $package_id
|
||||||
|
* @property string $start_date
|
||||||
|
* @property string|null $end_date
|
||||||
|
* @property string $status
|
||||||
|
* @property string $amount
|
||||||
|
* @property string $payment_status
|
||||||
|
* @property \Illuminate\Support\Carbon|null $created_at
|
||||||
|
* @property \Illuminate\Support\Carbon|null $updated_at
|
||||||
|
* @property string|null $deleted_at
|
||||||
|
* @property-read \App\Models\User|null $author
|
||||||
|
* @property-read \App\Models\Member $member
|
||||||
|
* @property-read \App\Models\Package $package
|
||||||
|
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Service> $services
|
||||||
|
* @property-read int|null $services_count
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Membership newModelQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Membership newQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Membership query()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Membership whereAdminId($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Membership whereAmount($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Membership whereCreatedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Membership whereDeletedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Membership whereEndDate($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Membership whereId($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Membership whereMemberId($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Membership wherePackageId($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Membership wherePaymentStatus($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Membership whereStartDate($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Membership whereStatus($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Membership whereUpdatedAt($value)
|
||||||
|
* @mixin \Eloquent
|
||||||
|
*/
|
||||||
class Membership extends Model
|
class Membership extends Model
|
||||||
{
|
{
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
|
|||||||
@@ -5,6 +5,30 @@ namespace App\Models;
|
|||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @property int $id
|
||||||
|
* @property string $identifier
|
||||||
|
* @property string $name
|
||||||
|
* @property string|null $description
|
||||||
|
* @property string $price
|
||||||
|
* @property int $is_active
|
||||||
|
* @property \Illuminate\Support\Carbon|null $created_at
|
||||||
|
* @property \Illuminate\Support\Carbon|null $updated_at
|
||||||
|
* @property string|null $deleted_at
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Package newModelQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Package newQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Package query()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Package whereCreatedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Package whereDeletedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Package whereDescription($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Package whereId($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Package whereIdentifier($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Package whereIsActive($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Package whereName($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Package wherePrice($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Package whereUpdatedAt($value)
|
||||||
|
* @mixin \Eloquent
|
||||||
|
*/
|
||||||
class Package extends Model
|
class Package extends Model
|
||||||
{
|
{
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
|
|||||||
@@ -5,6 +5,32 @@ namespace App\Models;
|
|||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @property int $id
|
||||||
|
* @property string $identifier
|
||||||
|
* @property string $name
|
||||||
|
* @property string|null $description
|
||||||
|
* @property string $url
|
||||||
|
* @property string|null $icon
|
||||||
|
* @property \Illuminate\Support\Carbon|null $created_at
|
||||||
|
* @property \Illuminate\Support\Carbon|null $updated_at
|
||||||
|
* @property string|null $deleted_at
|
||||||
|
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Membership> $memberships
|
||||||
|
* @property-read int|null $memberships_count
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Service newModelQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Service newQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Service query()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Service whereCreatedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Service whereDeletedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Service whereDescription($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Service whereIcon($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Service whereId($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Service whereIdentifier($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Service whereName($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Service whereUpdatedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Service whereUrl($value)
|
||||||
|
* @mixin \Eloquent
|
||||||
|
*/
|
||||||
class Service extends Model
|
class Service extends Model
|
||||||
{
|
{
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
|
|||||||
@@ -10,6 +10,41 @@ use Illuminate\Notifications\Notifiable;
|
|||||||
use Laravel\Fortify\TwoFactorAuthenticatable;
|
use Laravel\Fortify\TwoFactorAuthenticatable;
|
||||||
use Spatie\Permission\Traits\HasRoles;
|
use Spatie\Permission\Traits\HasRoles;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @property int $id
|
||||||
|
* @property string $name
|
||||||
|
* @property string $email
|
||||||
|
* @property \Illuminate\Support\Carbon|null $email_verified_at
|
||||||
|
* @property string $password
|
||||||
|
* @property string|null $remember_token
|
||||||
|
* @property \Illuminate\Support\Carbon|null $created_at
|
||||||
|
* @property \Illuminate\Support\Carbon|null $updated_at
|
||||||
|
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Member> $members
|
||||||
|
* @property-read int|null $members_count
|
||||||
|
* @property-read \Illuminate\Notifications\DatabaseNotificationCollection<int, \Illuminate\Notifications\DatabaseNotification> $notifications
|
||||||
|
* @property-read int|null $notifications_count
|
||||||
|
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Spatie\Permission\Models\Permission> $permissions
|
||||||
|
* @property-read int|null $permissions_count
|
||||||
|
* @property-read \Illuminate\Database\Eloquent\Collection<int, \Spatie\Permission\Models\Role> $roles
|
||||||
|
* @property-read int|null $roles_count
|
||||||
|
* @method static \Database\Factories\UserFactory factory($count = null, $state = [])
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|User newModelQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|User newQuery()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|User permission($permissions, $without = false)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|User query()
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|User role($roles, $guard = null, $without = false)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|User whereCreatedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|User whereEmail($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|User whereEmailVerifiedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|User whereId($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|User whereName($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|User wherePassword($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|User whereRememberToken($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|User whereUpdatedAt($value)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|User withoutPermission($permissions)
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|User withoutRole($roles, $guard = null)
|
||||||
|
* @mixin \Eloquent
|
||||||
|
*/
|
||||||
class User extends Authenticatable
|
class User extends Authenticatable
|
||||||
{
|
{
|
||||||
use HasRoles, HasFactory, Notifiable, TwoFactorAuthenticatable;
|
use HasRoles, HasFactory, Notifiable, TwoFactorAuthenticatable;
|
||||||
|
|||||||
59
app/Services/MemberService.php
Normal file
59
app/Services/MemberService.php
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Services;
|
||||||
|
|
||||||
|
use App\Models\Member;
|
||||||
|
use App\Models\MemberGroup;
|
||||||
|
use App\Models\Package;
|
||||||
|
use Carbon\Carbon;
|
||||||
|
|
||||||
|
class MemberService
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
// No repositories used in this project
|
||||||
|
}
|
||||||
|
|
||||||
|
public function registerNewMember(array $data): Member
|
||||||
|
{
|
||||||
|
// Check if the member already exists
|
||||||
|
$member = Member::where('email', $data['email'])->first();
|
||||||
|
|
||||||
|
if (! $member) {
|
||||||
|
// Create a new member
|
||||||
|
$member = new Member();
|
||||||
|
$member->status = 'pending';
|
||||||
|
$member->nature = 'physical';
|
||||||
|
$member->group_id = MemberGroup::where('identifier', 'website')->first()->id ?? null;
|
||||||
|
$member->lastname = $data['lastname'];
|
||||||
|
$member->firstname = $data['firstname'];
|
||||||
|
$member->email = $data['email'];
|
||||||
|
$member->company = $data['company'] ?? null;
|
||||||
|
$member->date_of_birth = Carbon::parse($data['date_of_birth'])->format('Y-m-d H:i:s') ?? null;
|
||||||
|
$member->address = $data['address'];
|
||||||
|
$member->zipcode = $data['zipcode'];
|
||||||
|
$member->city = $data['city'];
|
||||||
|
$member->country = 'FR';
|
||||||
|
$member->phone1 = $data['phone1'];
|
||||||
|
$member->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
$package = Package::where('id', $data['package_id'])
|
||||||
|
->where('is_active', true)
|
||||||
|
->firstOrFail();
|
||||||
|
|
||||||
|
// Create a new membership
|
||||||
|
$member->memberships()->create([
|
||||||
|
'status' => 'pending',
|
||||||
|
'package_id' => $package->id ?? null,
|
||||||
|
'amount' => $data['amount'],
|
||||||
|
'payment_status' => 'pending',
|
||||||
|
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Notify Admin
|
||||||
|
|
||||||
|
|
||||||
|
return $member;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -18,6 +18,7 @@
|
|||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"barryvdh/laravel-debugbar": "^3.16",
|
"barryvdh/laravel-debugbar": "^3.16",
|
||||||
|
"barryvdh/laravel-ide-helper": "^3.6",
|
||||||
"fakerphp/faker": "^1.23",
|
"fakerphp/faker": "^1.23",
|
||||||
"laravel/pail": "^1.2.2",
|
"laravel/pail": "^1.2.2",
|
||||||
"laravel/pint": "^1.24",
|
"laravel/pint": "^1.24",
|
||||||
|
|||||||
296
composer.lock
generated
296
composer.lock
generated
@@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "fe5e2efe8fdc7f4c7f96c699a0420722",
|
"content-hash": "2dad60120da5595265fa9bae98361025",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "andreia/filament-nord-theme",
|
"name": "andreia/filament-nord-theme",
|
||||||
@@ -8758,6 +8758,300 @@
|
|||||||
],
|
],
|
||||||
"time": "2025-07-14T11:56:43+00:00"
|
"time": "2025-07-14T11:56:43+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "barryvdh/laravel-ide-helper",
|
||||||
|
"version": "v3.6.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/barryvdh/laravel-ide-helper.git",
|
||||||
|
"reference": "8d00250cba25728373e92c1d8dcebcbf64623d29"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/8d00250cba25728373e92c1d8dcebcbf64623d29",
|
||||||
|
"reference": "8d00250cba25728373e92c1d8dcebcbf64623d29",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"barryvdh/reflection-docblock": "^2.4",
|
||||||
|
"composer/class-map-generator": "^1.0",
|
||||||
|
"ext-json": "*",
|
||||||
|
"illuminate/console": "^11.15 || ^12",
|
||||||
|
"illuminate/database": "^11.15 || ^12",
|
||||||
|
"illuminate/filesystem": "^11.15 || ^12",
|
||||||
|
"illuminate/support": "^11.15 || ^12",
|
||||||
|
"php": "^8.2"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"ext-pdo_sqlite": "*",
|
||||||
|
"friendsofphp/php-cs-fixer": "^3",
|
||||||
|
"illuminate/config": "^11.15 || ^12",
|
||||||
|
"illuminate/view": "^11.15 || ^12",
|
||||||
|
"mockery/mockery": "^1.4",
|
||||||
|
"orchestra/testbench": "^9.2 || ^10",
|
||||||
|
"phpunit/phpunit": "^10.5 || ^11.5.3",
|
||||||
|
"spatie/phpunit-snapshot-assertions": "^4 || ^5",
|
||||||
|
"vimeo/psalm": "^5.4",
|
||||||
|
"vlucas/phpdotenv": "^5"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"illuminate/events": "Required for automatic helper generation (^6|^7|^8|^9|^10|^11)."
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"laravel": {
|
||||||
|
"providers": [
|
||||||
|
"Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "3.5-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Barryvdh\\LaravelIdeHelper\\": "src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Barry vd. Heuvel",
|
||||||
|
"email": "barryvdh@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Laravel IDE Helper, generates correct PHPDocs for all Facade classes, to improve auto-completion.",
|
||||||
|
"keywords": [
|
||||||
|
"autocomplete",
|
||||||
|
"codeintel",
|
||||||
|
"dev",
|
||||||
|
"helper",
|
||||||
|
"ide",
|
||||||
|
"laravel",
|
||||||
|
"netbeans",
|
||||||
|
"phpdoc",
|
||||||
|
"phpstorm",
|
||||||
|
"sublime"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/barryvdh/laravel-ide-helper/issues",
|
||||||
|
"source": "https://github.com/barryvdh/laravel-ide-helper/tree/v3.6.0"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://fruitcake.nl",
|
||||||
|
"type": "custom"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/barryvdh",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2025-07-17T20:11:57+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "barryvdh/reflection-docblock",
|
||||||
|
"version": "v2.4.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/barryvdh/ReflectionDocBlock.git",
|
||||||
|
"reference": "d103774cbe7e94ddee7e4870f97f727b43fe7201"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/d103774cbe7e94ddee7e4870f97f727b43fe7201",
|
||||||
|
"reference": "d103774cbe7e94ddee7e4870f97f727b43fe7201",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.1"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^8.5.14|^9"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"dflydev/markdown": "~1.0",
|
||||||
|
"erusev/parsedown": "~1.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "2.3.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-0": {
|
||||||
|
"Barryvdh": [
|
||||||
|
"src/"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Mike van Riel",
|
||||||
|
"email": "mike.vanriel@naenius.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"source": "https://github.com/barryvdh/ReflectionDocBlock/tree/v2.4.0"
|
||||||
|
},
|
||||||
|
"time": "2025-07-17T06:07:30+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "composer/class-map-generator",
|
||||||
|
"version": "1.6.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/composer/class-map-generator.git",
|
||||||
|
"reference": "ba9f089655d4cdd64e762a6044f411ccdaec0076"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/composer/class-map-generator/zipball/ba9f089655d4cdd64e762a6044f411ccdaec0076",
|
||||||
|
"reference": "ba9f089655d4cdd64e762a6044f411ccdaec0076",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"composer/pcre": "^2.1 || ^3.1",
|
||||||
|
"php": "^7.2 || ^8.0",
|
||||||
|
"symfony/finder": "^4.4 || ^5.3 || ^6 || ^7"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpstan/phpstan": "^1.12 || ^2",
|
||||||
|
"phpstan/phpstan-deprecation-rules": "^1 || ^2",
|
||||||
|
"phpstan/phpstan-phpunit": "^1 || ^2",
|
||||||
|
"phpstan/phpstan-strict-rules": "^1.1 || ^2",
|
||||||
|
"phpunit/phpunit": "^8",
|
||||||
|
"symfony/filesystem": "^5.4 || ^6"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-main": "1.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Composer\\ClassMapGenerator\\": "src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Jordi Boggiano",
|
||||||
|
"email": "j.boggiano@seld.be",
|
||||||
|
"homepage": "https://seld.be"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Utilities to scan PHP code and generate class maps.",
|
||||||
|
"keywords": [
|
||||||
|
"classmap"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/composer/class-map-generator/issues",
|
||||||
|
"source": "https://github.com/composer/class-map-generator/tree/1.6.2"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://packagist.com",
|
||||||
|
"type": "custom"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/composer",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2025-08-20T18:52:43+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "composer/pcre",
|
||||||
|
"version": "3.3.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/composer/pcre.git",
|
||||||
|
"reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e",
|
||||||
|
"reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^7.4 || ^8.0"
|
||||||
|
},
|
||||||
|
"conflict": {
|
||||||
|
"phpstan/phpstan": "<1.11.10"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpstan/phpstan": "^1.12 || ^2",
|
||||||
|
"phpstan/phpstan-strict-rules": "^1 || ^2",
|
||||||
|
"phpunit/phpunit": "^8 || ^9"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"phpstan": {
|
||||||
|
"includes": [
|
||||||
|
"extension.neon"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-main": "3.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Composer\\Pcre\\": "src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Jordi Boggiano",
|
||||||
|
"email": "j.boggiano@seld.be",
|
||||||
|
"homepage": "http://seld.be"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "PCRE wrapping library that offers type-safe preg_* replacements.",
|
||||||
|
"keywords": [
|
||||||
|
"PCRE",
|
||||||
|
"preg",
|
||||||
|
"regex",
|
||||||
|
"regular expression"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/composer/pcre/issues",
|
||||||
|
"source": "https://github.com/composer/pcre/tree/3.3.2"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://packagist.com",
|
||||||
|
"type": "custom"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/composer",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
|
||||||
|
"type": "tidelift"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2024-11-12T16:29:46+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "fakerphp/faker",
|
"name": "fakerphp/faker",
|
||||||
"version": "v1.24.1",
|
"version": "v1.24.1",
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ return new class extends Migration
|
|||||||
$table->string('identifier')->unique();
|
$table->string('identifier')->unique();
|
||||||
$table->string('name');
|
$table->string('name');
|
||||||
$table->string('description')->nullable();
|
$table->string('description')->nullable();
|
||||||
|
$table->decimal('price', 10)->default(0);
|
||||||
$table->boolean('is_active')->default(true);
|
$table->boolean('is_active')->default(true);
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
$table->softDeletes();
|
$table->softDeletes();
|
||||||
|
|||||||
@@ -49,16 +49,19 @@ class DatabaseSeeder extends Seeder
|
|||||||
'identifier' => 'custom',
|
'identifier' => 'custom',
|
||||||
'name' => 'Sur-mesure',
|
'name' => 'Sur-mesure',
|
||||||
'description' => 'Calcul du nombre de mois restant dans l\'année',
|
'description' => 'Calcul du nombre de mois restant dans l\'année',
|
||||||
|
'price' => '1.00'
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'identifier' => 'one-year',
|
'identifier' => 'one-year',
|
||||||
'name' => 'Un an',
|
'name' => 'Un an',
|
||||||
'description' => '12 mois à compter de la date de validation de l\'adhésion du membre',
|
'description' => '12 mois à compter de la date de validation de l\'adhésion du membre',
|
||||||
|
'price' => '12.00'
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'identifier' => 'two-years',
|
'identifier' => 'two-years',
|
||||||
'name' => 'Deux ans',
|
'name' => 'Deux ans',
|
||||||
'description' => '24 mois à compter de la date de validation de l\'adhésion du membre',
|
'description' => '24 mois à compter de la date de validation de l\'adhésion du membre',
|
||||||
|
'price' => '24.00'
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -68,6 +71,7 @@ class DatabaseSeeder extends Seeder
|
|||||||
], [
|
], [
|
||||||
'name' => $package['name'],
|
'name' => $package['name'],
|
||||||
'description' => $package['description'],
|
'description' => $package['description'],
|
||||||
|
'price' => $package['price'],
|
||||||
'is_active' => true,
|
'is_active' => true,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
@@ -79,35 +83,35 @@ class DatabaseSeeder extends Seeder
|
|||||||
'name' => 'Mail RoundCube',
|
'name' => 'Mail RoundCube',
|
||||||
'description' => 'Service de messagerie',
|
'description' => 'Service de messagerie',
|
||||||
'url' => '#',
|
'url' => '#',
|
||||||
'icon' => 'fa-solid fa-envelope',
|
'icon' => 'mail',
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'identifier' => 'file2link',
|
'identifier' => 'file2link',
|
||||||
'name' => 'File2Link',
|
'name' => 'File2Link',
|
||||||
'description' => 'Service de partage de fichiers',
|
'description' => 'Service de partage de fichiers',
|
||||||
'url' => '#',
|
'url' => '#',
|
||||||
'icon' => 'fa-solid fa-file-arrow-up',
|
'icon' => 'document-add',
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'identifier' => 'nextcloud',
|
'identifier' => 'nextcloud',
|
||||||
'name' => 'Nextcloud',
|
'name' => 'Nextcloud',
|
||||||
'description' => 'Service de stockage de fichiers',
|
'description' => 'Service de stockage de fichiers',
|
||||||
'url' => '#',
|
'url' => '#',
|
||||||
'icon' => 'fa-solid fa-cloud',
|
'icon' => 'cloud-upload',
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'identifier' => 'sympa',
|
'identifier' => 'sympa',
|
||||||
'name' => 'Sympa',
|
'name' => 'Sympa',
|
||||||
'description' => 'Service de gestion de listes de diffusion',
|
'description' => 'Service de gestion de listes de diffusion',
|
||||||
'url' => '#',
|
'url' => '#',
|
||||||
'icon' => 'fa-solid fa-envelope-open-text',
|
'icon' => 'clipboard-list',
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'identifier' => 'webhosting',
|
'identifier' => 'webhosting',
|
||||||
'name' => 'Hébergement web',
|
'name' => 'Hébergement web',
|
||||||
'description' => 'Service d\'hébergement web',
|
'description' => 'Service d\'hébergement web',
|
||||||
'url' => '#',
|
'url' => '#',
|
||||||
'icon' => 'fa-solid fa-server',
|
'icon' => 'database',
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -20,4 +20,8 @@ return [
|
|||||||
'partial' => 'Partially paid',
|
'partial' => 'Partially paid',
|
||||||
'created_at' => 'Created at',
|
'created_at' => 'Created at',
|
||||||
'updated_at' => 'Updated at',
|
'updated_at' => 'Updated at',
|
||||||
|
'subscription' => [
|
||||||
|
'success' => 'Your subscription has been successfully sent. We will contact you as soon as possible.',
|
||||||
|
'failed' => 'An error occurred while sending your subscription.',
|
||||||
|
]
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -25,6 +25,10 @@ return [
|
|||||||
'partial' => 'Paiement partiel',
|
'partial' => 'Paiement partiel',
|
||||||
'created_at' => 'Créée le',
|
'created_at' => 'Créée le',
|
||||||
'updated_at' => 'Mise à jour le',
|
'updated_at' => 'Mise à jour le',
|
||||||
|
'subscription' => [
|
||||||
|
'success' => 'Votre inscription a bien été envoyée. Nous vous recontacterons dans les plus brefs délais.',
|
||||||
|
'failed' => 'Une erreur est survenue lors de l\'envoi de votre inscription.',
|
||||||
|
]
|
||||||
],
|
],
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -0,0 +1,83 @@
|
|||||||
|
import { queryParams, type RouteQueryOptions, type RouteDefinition, type RouteFormDefinition } from './../../../../../../wayfinder'
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\CreateUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/CreateUser.php:7
|
||||||
|
* @route '/admin/users/create'
|
||||||
|
*/
|
||||||
|
const CreateUser = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
|
||||||
|
url: CreateUser.url(options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
CreateUser.definition = {
|
||||||
|
methods: ["get","head"],
|
||||||
|
url: '/admin/users/create',
|
||||||
|
} satisfies RouteDefinition<["get","head"]>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\CreateUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/CreateUser.php:7
|
||||||
|
* @route '/admin/users/create'
|
||||||
|
*/
|
||||||
|
CreateUser.url = (options?: RouteQueryOptions) => {
|
||||||
|
return CreateUser.definition.url + queryParams(options)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\CreateUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/CreateUser.php:7
|
||||||
|
* @route '/admin/users/create'
|
||||||
|
*/
|
||||||
|
CreateUser.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
|
||||||
|
url: CreateUser.url(options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\CreateUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/CreateUser.php:7
|
||||||
|
* @route '/admin/users/create'
|
||||||
|
*/
|
||||||
|
CreateUser.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
|
||||||
|
url: CreateUser.url(options),
|
||||||
|
method: 'head',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\CreateUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/CreateUser.php:7
|
||||||
|
* @route '/admin/users/create'
|
||||||
|
*/
|
||||||
|
const CreateUserForm = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
|
action: CreateUser.url(options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\CreateUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/CreateUser.php:7
|
||||||
|
* @route '/admin/users/create'
|
||||||
|
*/
|
||||||
|
CreateUserForm.get = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
|
action: CreateUser.url(options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\CreateUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/CreateUser.php:7
|
||||||
|
* @route '/admin/users/create'
|
||||||
|
*/
|
||||||
|
CreateUserForm.head = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
|
action: CreateUser.url({
|
||||||
|
[options?.mergeQuery ? 'mergeQuery' : 'query']: {
|
||||||
|
_method: 'HEAD',
|
||||||
|
...(options?.query ?? options?.mergeQuery ?? {}),
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
CreateUser.form = CreateUserForm
|
||||||
|
|
||||||
|
export default CreateUser
|
||||||
@@ -0,0 +1,101 @@
|
|||||||
|
import { queryParams, type RouteQueryOptions, type RouteDefinition, type RouteFormDefinition, applyUrlDefaults } from './../../../../../../wayfinder'
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\EditUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/EditUser.php:7
|
||||||
|
* @route '/admin/users/{record}/edit'
|
||||||
|
*/
|
||||||
|
const EditUser = (args: { record: string | number } | [record: string | number ] | string | number, options?: RouteQueryOptions): RouteDefinition<'get'> => ({
|
||||||
|
url: EditUser.url(args, options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
EditUser.definition = {
|
||||||
|
methods: ["get","head"],
|
||||||
|
url: '/admin/users/{record}/edit',
|
||||||
|
} satisfies RouteDefinition<["get","head"]>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\EditUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/EditUser.php:7
|
||||||
|
* @route '/admin/users/{record}/edit'
|
||||||
|
*/
|
||||||
|
EditUser.url = (args: { record: string | number } | [record: string | number ] | string | number, options?: RouteQueryOptions) => {
|
||||||
|
if (typeof args === 'string' || typeof args === 'number') {
|
||||||
|
args = { record: args }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Array.isArray(args)) {
|
||||||
|
args = {
|
||||||
|
record: args[0],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
args = applyUrlDefaults(args)
|
||||||
|
|
||||||
|
const parsedArgs = {
|
||||||
|
record: args.record,
|
||||||
|
}
|
||||||
|
|
||||||
|
return EditUser.definition.url
|
||||||
|
.replace('{record}', parsedArgs.record.toString())
|
||||||
|
.replace(/\/+$/, '') + queryParams(options)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\EditUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/EditUser.php:7
|
||||||
|
* @route '/admin/users/{record}/edit'
|
||||||
|
*/
|
||||||
|
EditUser.get = (args: { record: string | number } | [record: string | number ] | string | number, options?: RouteQueryOptions): RouteDefinition<'get'> => ({
|
||||||
|
url: EditUser.url(args, options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\EditUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/EditUser.php:7
|
||||||
|
* @route '/admin/users/{record}/edit'
|
||||||
|
*/
|
||||||
|
EditUser.head = (args: { record: string | number } | [record: string | number ] | string | number, options?: RouteQueryOptions): RouteDefinition<'head'> => ({
|
||||||
|
url: EditUser.url(args, options),
|
||||||
|
method: 'head',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\EditUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/EditUser.php:7
|
||||||
|
* @route '/admin/users/{record}/edit'
|
||||||
|
*/
|
||||||
|
const EditUserForm = (args: { record: string | number } | [record: string | number ] | string | number, options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
|
action: EditUser.url(args, options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\EditUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/EditUser.php:7
|
||||||
|
* @route '/admin/users/{record}/edit'
|
||||||
|
*/
|
||||||
|
EditUserForm.get = (args: { record: string | number } | [record: string | number ] | string | number, options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
|
action: EditUser.url(args, options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\EditUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/EditUser.php:7
|
||||||
|
* @route '/admin/users/{record}/edit'
|
||||||
|
*/
|
||||||
|
EditUserForm.head = (args: { record: string | number } | [record: string | number ] | string | number, options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
|
action: EditUser.url(args, {
|
||||||
|
[options?.mergeQuery ? 'mergeQuery' : 'query']: {
|
||||||
|
_method: 'HEAD',
|
||||||
|
...(options?.query ?? options?.mergeQuery ?? {}),
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
EditUser.form = EditUserForm
|
||||||
|
|
||||||
|
export default EditUser
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
import { queryParams, type RouteQueryOptions, type RouteDefinition, type RouteFormDefinition } from './../../../../../../wayfinder'
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\ListUsers::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/ListUsers.php:7
|
||||||
|
* @route '/admin/users'
|
||||||
|
*/
|
||||||
|
const ListUsers = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
|
||||||
|
url: ListUsers.url(options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
ListUsers.definition = {
|
||||||
|
methods: ["get","head"],
|
||||||
|
url: '/admin/users',
|
||||||
|
} satisfies RouteDefinition<["get","head"]>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\ListUsers::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/ListUsers.php:7
|
||||||
|
* @route '/admin/users'
|
||||||
|
*/
|
||||||
|
ListUsers.url = (options?: RouteQueryOptions) => {
|
||||||
|
return ListUsers.definition.url + queryParams(options)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\ListUsers::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/ListUsers.php:7
|
||||||
|
* @route '/admin/users'
|
||||||
|
*/
|
||||||
|
ListUsers.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
|
||||||
|
url: ListUsers.url(options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\ListUsers::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/ListUsers.php:7
|
||||||
|
* @route '/admin/users'
|
||||||
|
*/
|
||||||
|
ListUsers.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
|
||||||
|
url: ListUsers.url(options),
|
||||||
|
method: 'head',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\ListUsers::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/ListUsers.php:7
|
||||||
|
* @route '/admin/users'
|
||||||
|
*/
|
||||||
|
const ListUsersForm = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
|
action: ListUsers.url(options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\ListUsers::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/ListUsers.php:7
|
||||||
|
* @route '/admin/users'
|
||||||
|
*/
|
||||||
|
ListUsersForm.get = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
|
action: ListUsers.url(options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\ListUsers::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/ListUsers.php:7
|
||||||
|
* @route '/admin/users'
|
||||||
|
*/
|
||||||
|
ListUsersForm.head = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
|
action: ListUsers.url({
|
||||||
|
[options?.mergeQuery ? 'mergeQuery' : 'query']: {
|
||||||
|
_method: 'HEAD',
|
||||||
|
...(options?.query ?? options?.mergeQuery ?? {}),
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
ListUsers.form = ListUsersForm
|
||||||
|
|
||||||
|
export default ListUsers
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
import ListUsers from './ListUsers'
|
||||||
|
import CreateUser from './CreateUser'
|
||||||
|
import EditUser from './EditUser'
|
||||||
|
|
||||||
|
const Pages = {
|
||||||
|
ListUsers: Object.assign(ListUsers, ListUsers),
|
||||||
|
CreateUser: Object.assign(CreateUser, CreateUser),
|
||||||
|
EditUser: Object.assign(EditUser, EditUser),
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Pages
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
import Pages from './Pages'
|
||||||
|
|
||||||
|
const Users = {
|
||||||
|
Pages: Object.assign(Pages, Pages),
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Users
|
||||||
@@ -3,6 +3,7 @@ import Members from './Members'
|
|||||||
import Memberships from './Memberships'
|
import Memberships from './Memberships'
|
||||||
import Packages from './Packages'
|
import Packages from './Packages'
|
||||||
import Services from './Services'
|
import Services from './Services'
|
||||||
|
import Users from './Users'
|
||||||
|
|
||||||
const Resources = {
|
const Resources = {
|
||||||
MemberGroups: Object.assign(MemberGroups, MemberGroups),
|
MemberGroups: Object.assign(MemberGroups, MemberGroups),
|
||||||
@@ -10,6 +11,7 @@ const Resources = {
|
|||||||
Memberships: Object.assign(Memberships, Memberships),
|
Memberships: Object.assign(Memberships, Memberships),
|
||||||
Packages: Object.assign(Packages, Packages),
|
Packages: Object.assign(Packages, Packages),
|
||||||
Services: Object.assign(Services, Services),
|
Services: Object.assign(Services, Services),
|
||||||
|
Users: Object.assign(Users, Users),
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Resources
|
export default Resources
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import { queryParams, type RouteQueryOptions, type RouteDefinition, type RouteFormDefinition } from './../../../../../wayfinder'
|
import { queryParams, type RouteQueryOptions, type RouteDefinition, type RouteFormDefinition } from './../../../../../wayfinder'
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::create
|
* @see \App\Http\Controllers\Forms\MembershipFormController::create
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:18
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:23
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
export const create = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
|
export const create = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
|
||||||
@@ -16,7 +16,7 @@ create.definition = {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::create
|
* @see \App\Http\Controllers\Forms\MembershipFormController::create
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:18
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:23
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
create.url = (options?: RouteQueryOptions) => {
|
create.url = (options?: RouteQueryOptions) => {
|
||||||
@@ -25,7 +25,7 @@ create.url = (options?: RouteQueryOptions) => {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::create
|
* @see \App\Http\Controllers\Forms\MembershipFormController::create
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:18
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:23
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
create.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
|
create.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
|
||||||
@@ -35,7 +35,7 @@ create.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::create
|
* @see \App\Http\Controllers\Forms\MembershipFormController::create
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:18
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:23
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
create.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
|
create.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
|
||||||
@@ -45,7 +45,7 @@ create.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::create
|
* @see \App\Http\Controllers\Forms\MembershipFormController::create
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:18
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:23
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
const createForm = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
const createForm = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
@@ -55,7 +55,7 @@ const createForm = (options?: RouteQueryOptions): RouteFormDefinition<'get'> =>
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::create
|
* @see \App\Http\Controllers\Forms\MembershipFormController::create
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:18
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:23
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
createForm.get = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
createForm.get = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
@@ -65,7 +65,7 @@ createForm.get = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::create
|
* @see \App\Http\Controllers\Forms\MembershipFormController::create
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:18
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:23
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
createForm.head = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
createForm.head = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
@@ -82,7 +82,7 @@ create.form = createForm
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::store
|
* @see \App\Http\Controllers\Forms\MembershipFormController::store
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:28
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:37
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
export const store = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
|
export const store = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
|
||||||
@@ -97,7 +97,7 @@ store.definition = {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::store
|
* @see \App\Http\Controllers\Forms\MembershipFormController::store
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:28
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:37
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
store.url = (options?: RouteQueryOptions) => {
|
store.url = (options?: RouteQueryOptions) => {
|
||||||
@@ -106,7 +106,7 @@ store.url = (options?: RouteQueryOptions) => {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::store
|
* @see \App\Http\Controllers\Forms\MembershipFormController::store
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:28
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:37
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
store.post = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
|
store.post = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
|
||||||
@@ -116,7 +116,7 @@ store.post = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::store
|
* @see \App\Http\Controllers\Forms\MembershipFormController::store
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:28
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:37
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
const storeForm = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
|
const storeForm = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
|
||||||
@@ -126,7 +126,7 @@ const storeForm = (options?: RouteQueryOptions): RouteFormDefinition<'post'> =>
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::store
|
* @see \App\Http\Controllers\Forms\MembershipFormController::store
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:28
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:37
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
storeForm.post = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
|
storeForm.post = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ export default function NavGuestLayout() {
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<header
|
<header
|
||||||
className="flex justify-between mb-6 w-full max-w-[335px] text-sm not-has-[nav]:hidden lg:max-w-7xl">
|
className="flex justify-between my-6 w-full max-w-[335px] text-sm not-has-[nav]:hidden lg:max-w-7xl">
|
||||||
<div className="flex items-center justify-start">
|
<div className="flex items-center justify-start">
|
||||||
<Link
|
<Link
|
||||||
href={home()}
|
href={home()}
|
||||||
|
|||||||
@@ -1,31 +1,60 @@
|
|||||||
import {Form, Head} from "@inertiajs/react";
|
import {Form, Head} from "@inertiajs/react";
|
||||||
import {LoaderCircle} from 'lucide-react';
|
import {cn} from "@/lib/utils";
|
||||||
|
import {CheckIcon, LoaderCircle} from 'lucide-react';
|
||||||
import MembershipFormController from "@/actions/App/Http/Controllers/Forms/MembershipFormController";
|
import MembershipFormController from "@/actions/App/Http/Controllers/Forms/MembershipFormController";
|
||||||
import {Label} from "@/components/ui/label";
|
import {Label} from "@/components/ui/label";
|
||||||
import {Input} from "@/components/ui/input";
|
import {Input} from "@/components/ui/input";
|
||||||
import InputError from "@/components/input-error";
|
import InputError from "@/components/input-error";
|
||||||
import {Button} from "@/components/ui/button";
|
import {Button} from "@/components/ui/button";
|
||||||
import {
|
|
||||||
Select,
|
|
||||||
SelectContent,
|
|
||||||
SelectGroup,
|
|
||||||
SelectItem,
|
|
||||||
SelectLabel,
|
|
||||||
SelectTrigger,
|
|
||||||
SelectValue
|
|
||||||
} from "@/components/ui/select";
|
|
||||||
import NavGuestLayout from "@/layouts/nav-guest-layout";
|
import NavGuestLayout from "@/layouts/nav-guest-layout";
|
||||||
import {RadioGroup, RadioGroupItem} from "@/components/ui/radio-group";
|
|
||||||
import {Switch} from "@/components/ui/switch";
|
|
||||||
import {Checkbox} from "@/components/ui/checkbox";
|
import {Checkbox} from "@/components/ui/checkbox";
|
||||||
|
import {useState} from "react";
|
||||||
|
|
||||||
export default function Membership() {
|
export default function Membership() {
|
||||||
|
const today = new Date();
|
||||||
|
const actualMonth = today.getMonth() + 1;
|
||||||
|
const leftMonths = 12 - actualMonth;
|
||||||
|
|
||||||
|
|
||||||
|
const [selectedPlan, setSelectedPlan] = useState<
|
||||||
|
"custom" | "one-year" | "two-year"
|
||||||
|
>("one-year");
|
||||||
|
|
||||||
|
const plans = [
|
||||||
|
{
|
||||||
|
id: "custom" as const,
|
||||||
|
name: "Sur-mesure",
|
||||||
|
price: `${leftMonths}€`,
|
||||||
|
description: "Derniers mois de l'année.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "one-year" as const,
|
||||||
|
name: "Un an",
|
||||||
|
price: "12€",
|
||||||
|
description: "Pour nous soutenir durant un an.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "two-year" as const,
|
||||||
|
name: "Deux ans",
|
||||||
|
price: "24€",
|
||||||
|
description: "Pour nous soutenir durant deux ans.",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
const features = [
|
||||||
|
"Boîte Mail",
|
||||||
|
"NextCloud",
|
||||||
|
"Mailing list",
|
||||||
|
"Hébergement de site",
|
||||||
|
"Sondage",
|
||||||
|
"Et plus encore ...",
|
||||||
|
];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Head title="Adhérer au Retzien Libre"/>
|
<Head title="Adhérer au Retzien Libre"/>
|
||||||
<div
|
<div
|
||||||
className="flex min-h-screen flex-col items-center bg-[#F5F5F5] p-6 text-[#1b1b18] lg:justify-center lg:p-8 dark:bg-[#0a0a0a]">
|
className="flex min-h-screen flex-col items-center bg-[#F5F5F5] p-6 text-[#1b1b18] lg:justify-center lg:p-8 dark:bg-[#0a0a0a]">
|
||||||
<NavGuestLayout />
|
<NavGuestLayout/>
|
||||||
|
|
||||||
<div className="flex flex-col items-center justify-center gap-4">
|
<div className="flex flex-col items-center justify-center gap-4">
|
||||||
<div>
|
<div>
|
||||||
@@ -56,7 +85,7 @@ export default function Membership() {
|
|||||||
placeholder="Votre Nom"
|
placeholder="Votre Nom"
|
||||||
/>
|
/>
|
||||||
<InputError
|
<InputError
|
||||||
message={errors.name}
|
message={errors.lastname}
|
||||||
className="mt-2"
|
className="mt-2"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -74,7 +103,7 @@ export default function Membership() {
|
|||||||
placeholder="Votre Prénom"
|
placeholder="Votre Prénom"
|
||||||
/>
|
/>
|
||||||
<InputError
|
<InputError
|
||||||
message={errors.name}
|
message={errors.firstname}
|
||||||
className="mt-2"
|
className="mt-2"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -94,21 +123,21 @@ export default function Membership() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="grid gap-2">
|
<div className="grid gap-2">
|
||||||
<Label htmlFor="phone">Téléphone*</Label>
|
<Label htmlFor="phone1">Téléphone*</Label>
|
||||||
<Input
|
<Input
|
||||||
id="phone"
|
id="phone1"
|
||||||
type="phone"
|
type="phone"
|
||||||
required
|
required
|
||||||
tabIndex={4}
|
tabIndex={4}
|
||||||
autoComplete="phone"
|
autoComplete="phone"
|
||||||
name="phone"
|
name="phone1"
|
||||||
placeholder="Votre numéro de téléphone"
|
placeholder="Votre numéro de téléphone"
|
||||||
/>
|
/>
|
||||||
<InputError message={errors.email}/>
|
<InputError message={errors.phone}/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="grid gap-2">
|
<div className="grid gap-2">
|
||||||
<Label htmlFor="address">Votre adresse postale*</Label>
|
<Label htmlFor="address">Votre adresse*</Label>
|
||||||
<Input
|
<Input
|
||||||
id="address"
|
id="address"
|
||||||
type="text"
|
type="text"
|
||||||
@@ -117,42 +146,92 @@ export default function Membership() {
|
|||||||
tabIndex={5}
|
tabIndex={5}
|
||||||
autoComplete="address"
|
autoComplete="address"
|
||||||
name="address"
|
name="address"
|
||||||
placeholder="Votre adresse postale"
|
placeholder="Votre adresse"
|
||||||
/>
|
/>
|
||||||
<InputError
|
<InputError
|
||||||
message={errors.name}
|
message={errors.address}
|
||||||
className="mt-2"
|
className="mt-2"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="grid gap-2">
|
<div className="grid gap-2">
|
||||||
<Label htmlFor="subject">Formule d'adhésion*</Label>
|
<Label htmlFor="zipcode">Votre code postale*</Label>
|
||||||
<RadioGroup
|
<Input
|
||||||
defaultValue="comfortable"
|
id="zipcode"
|
||||||
|
type="text"
|
||||||
required
|
required
|
||||||
|
autoFocus
|
||||||
tabIndex={6}
|
tabIndex={6}
|
||||||
>
|
autoComplete="zipcode"
|
||||||
<div className="flex items-center gap-3">
|
name="zipcode"
|
||||||
<RadioGroupItem value="default" id="r1" />
|
placeholder="Votre code postale"
|
||||||
<Label htmlFor="short">2 mois</Label>
|
/>
|
||||||
</div>
|
<InputError
|
||||||
<div className="flex items-center gap-3">
|
message={errors.zipcode}
|
||||||
<RadioGroupItem value="comfortable" id="r2" />
|
className="mt-2"
|
||||||
<Label htmlFor="one-year">1 an</Label>
|
/>
|
||||||
</div>
|
|
||||||
<div className="flex items-center gap-3">
|
|
||||||
<RadioGroupItem value="compact" id="r3" />
|
|
||||||
<Label htmlFor="two-year">2 ans</Label>
|
|
||||||
</div>
|
|
||||||
</RadioGroup>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="grid gap-2">
|
<div className="grid gap-2">
|
||||||
|
<Label htmlFor="city">Votre ville*</Label>
|
||||||
|
<Input
|
||||||
|
id="city"
|
||||||
|
type="text"
|
||||||
|
required
|
||||||
|
autoFocus
|
||||||
|
tabIndex={6}
|
||||||
|
autoComplete="city"
|
||||||
|
name="city"
|
||||||
|
placeholder="Votre ville"
|
||||||
|
/>
|
||||||
|
<InputError
|
||||||
|
message={errors.city}
|
||||||
|
className="mt-2"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="space-y-4">
|
||||||
|
<Label htmlFor="package">Formule d'adhésion*</Label>
|
||||||
|
<div className="grid grid-cols-3 gap-2">
|
||||||
|
{plans.map((plan) => (
|
||||||
|
<button
|
||||||
|
className={cn(
|
||||||
|
"flex flex-col items-center justify-center rounded border-3 p-4 transition-colors",
|
||||||
|
selectedPlan === plan.id
|
||||||
|
? "border-primary"
|
||||||
|
: "border-black hover:border-primary"
|
||||||
|
)}
|
||||||
|
key={plan.id}
|
||||||
|
onClick={() => setSelectedPlan(plan.id)}
|
||||||
|
type="button"
|
||||||
|
>
|
||||||
|
<span className="font-semibold">{plan.name}</span>
|
||||||
|
<span className="font-bold text-lg">{plan.price}</span>
|
||||||
|
<span className="text-center text-muted-foreground text-xs">
|
||||||
|
{plan.description}
|
||||||
|
</span>
|
||||||
|
</button>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
<div className="space-y-2">
|
||||||
|
<h4 className="font-semibold text-sm">Fonctionnalités inclues :</h4>
|
||||||
|
<ul className="space-y-2">
|
||||||
|
{features.map((feature, index) => (
|
||||||
|
<li className="flex items-center gap-2 text-sm" key={index}>
|
||||||
|
<CheckIcon className="h-4 w-4 text-primary"/>
|
||||||
|
<span>{feature}</span>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/*<div className="grid gap-2">
|
||||||
<div className="flex items-center space-x-2">
|
<div className="flex items-center space-x-2">
|
||||||
<Switch id="cloud-access" tabIndex={7}/>
|
<Switch id="cloud-access" tabIndex={8}/>
|
||||||
<Label htmlFor="cloud-access">Me créer un accès au service du "cloud" ?</Label>
|
<Label htmlFor="cloud-access">Me créer un accès au service du "cloud" ?</Label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>*/}
|
||||||
|
|
||||||
<div className="grid gap-2">
|
<div className="grid gap-2">
|
||||||
<Label htmlFor="captcha">Captcha</Label>
|
<Label htmlFor="captcha">Captcha</Label>
|
||||||
@@ -160,7 +239,7 @@ export default function Membership() {
|
|||||||
id="captcha"
|
id="captcha"
|
||||||
type="text"
|
type="text"
|
||||||
autoFocus
|
autoFocus
|
||||||
tabIndex={8}
|
tabIndex={9}
|
||||||
name="captcha"
|
name="captcha"
|
||||||
placeholder="Entrez le captcha ci-dessous"
|
placeholder="Entrez le captcha ci-dessous"
|
||||||
/>
|
/>
|
||||||
@@ -171,9 +250,12 @@ export default function Membership() {
|
|||||||
<Checkbox
|
<Checkbox
|
||||||
id="cgu"
|
id="cgu"
|
||||||
name="cgu"
|
name="cgu"
|
||||||
tabIndex={9}
|
tabIndex={10}
|
||||||
|
required
|
||||||
/>
|
/>
|
||||||
<Label htmlFor="remember">J'ai lu et j'accepte les <a href="#">C.G.U.</a>, je comprends la nécessité des enregistrements de mes données personnelles.</Label>
|
<Label htmlFor="remember">J'ai lu et j'accepte les <a href="#">C.G.U.</a>,
|
||||||
|
je comprends la nécessité des enregistrements de mes données
|
||||||
|
personnelles.</Label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -181,7 +263,7 @@ export default function Membership() {
|
|||||||
variant="outline"
|
variant="outline"
|
||||||
type="submit"
|
type="submit"
|
||||||
className="mt-2 w-full"
|
className="mt-2 w-full"
|
||||||
tabIndex={5}
|
tabIndex={11}
|
||||||
data-test="register-user-button"
|
data-test="register-user-button"
|
||||||
>
|
>
|
||||||
{processing && (
|
{processing && (
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ export default function Welcome() {
|
|||||||
/>
|
/>
|
||||||
</Head>
|
</Head>
|
||||||
<div
|
<div
|
||||||
className="flex min-h-screen flex-col items-center bg-[#F5F5F5] p-6 text-[#1b1b18] lg:justify-center lg:p-8 dark:bg-[#0a0a0a]">
|
className="flex min-h-screen flex-col items-center bg-[#F5F5F5] text-[#1b1b18] lg:justify-center dark:bg-[#0a0a0a]">
|
||||||
<NavGuestLayout />
|
<NavGuestLayout />
|
||||||
<section className="flex items-center justify-center gap-4 w-full max-w-[335px] lg:max-w-7xl">
|
<section className="flex items-center justify-center gap-4 w-full max-w-[335px] lg:max-w-7xl">
|
||||||
<div className="flex w-full items-center justify-center gap-4">
|
<div className="flex w-full items-center justify-center gap-4">
|
||||||
@@ -42,8 +42,77 @@ export default function Welcome() {
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
|
<div
|
||||||
|
className="flex flex-col items-center bg-[#F5F5F5] text-[#1b1b18] lg:justify-center dark:bg-[#0a0a0a]">
|
||||||
|
|
||||||
<section className="flex bg-accent items-center justify-center p-6 w-full max-w-[335px] lg:max-w-7xl lg:justify-center lg:p-8">TEST</section>
|
<section className="w-full bg-accent pr-0 py-16">
|
||||||
|
<div className="flex flex-col items-center gap-8 w-full max-w-7xl mx-auto">
|
||||||
|
<h2 className="text-3xl font-bold text-center mb-10">Nos services numériques éthiques, libres,
|
||||||
|
ouverts et locaux</h2>
|
||||||
|
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||||
|
{[
|
||||||
|
{
|
||||||
|
title: 'Boîte mail',
|
||||||
|
description: 'Service de messagerie électronique sécurisé et respectueux de votre vie privée'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Cloud (Nextcloud)',
|
||||||
|
description: 'Stockage en ligne et collaboration avec vos données hébergées localement'
|
||||||
|
},
|
||||||
|
{title: 'File2link', description: 'Partage de fichiers simplifié et sécurisé'},
|
||||||
|
{
|
||||||
|
title: 'Hébergement web',
|
||||||
|
description: 'Solutions d\'hébergement web éthiques et performantes'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Sondage',
|
||||||
|
description: 'Créez et partagez des sondages en ligne en toute confidentialité'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Liste de diffusion Mail',
|
||||||
|
description: 'Gérez vos communications de groupe efficacement'
|
||||||
|
}
|
||||||
|
].map((service, index) => (
|
||||||
|
<div key={index} className="bg-white dark:bg-gray-800 p-6 rounded-lg shadow-lg">
|
||||||
|
<h3 className="text-xl font-semibold mb-3">{service.title}</h3>
|
||||||
|
<p>{service.description}</p>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section className="w-full max-w-7xl py-16 bg-gray-50 dark:bg-gray-900">
|
||||||
|
<h2 className="text-3xl font-bold text-center mb-10">GAFAM : Quels dangers ?</h2>
|
||||||
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-8">
|
||||||
|
<div className="bg-white dark:bg-gray-800 p-6 rounded-lg shadow-lg">
|
||||||
|
<h3 className="text-xl font-semibold mb-3">Surveillance massive</h3>
|
||||||
|
<p>Les GAFAM collectent et exploitent vos données personnelles à des fins commerciales</p>
|
||||||
|
</div>
|
||||||
|
<div className="bg-white dark:bg-gray-800 p-6 rounded-lg shadow-lg">
|
||||||
|
<h3 className="text-xl font-semibold mb-3">Monopole numérique</h3>
|
||||||
|
<p>Concentration excessive du pouvoir et dépendance aux services centralisés</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section className="w-full max-w-7xl py-16">
|
||||||
|
<div className="flex flex-col lg:flex-row items-center gap-8">
|
||||||
|
<div className="lg:w-1/2">
|
||||||
|
<h2 className="text-3xl font-bold mb-6">Notre alternative : Le Retzien Libre</h2>
|
||||||
|
<p className="mb-6">Une association locale engagée pour la promotion du logiciel libre et la
|
||||||
|
protection de vos données personnelles.</p>
|
||||||
|
<Link href={register()}>
|
||||||
|
<Button variant="default">Rejoignez-nous</Button>
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
<div className="lg:w-1/2">
|
||||||
|
<img src={illustrationImage} alt="Le Retzien Libre" className="rounded-lg"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import members from './members'
|
|||||||
import memberships from './memberships'
|
import memberships from './memberships'
|
||||||
import packages from './packages'
|
import packages from './packages'
|
||||||
import services from './services'
|
import services from './services'
|
||||||
|
import users from './users'
|
||||||
|
|
||||||
const resources = {
|
const resources = {
|
||||||
memberGroups: Object.assign(memberGroups, memberGroups),
|
memberGroups: Object.assign(memberGroups, memberGroups),
|
||||||
@@ -10,6 +11,7 @@ const resources = {
|
|||||||
memberships: Object.assign(memberships, memberships),
|
memberships: Object.assign(memberships, memberships),
|
||||||
packages: Object.assign(packages, packages),
|
packages: Object.assign(packages, packages),
|
||||||
services: Object.assign(services, services),
|
services: Object.assign(services, services),
|
||||||
|
users: Object.assign(users, users),
|
||||||
}
|
}
|
||||||
|
|
||||||
export default resources
|
export default resources
|
||||||
269
resources/js/routes/filament/admin/resources/users/index.ts
Normal file
269
resources/js/routes/filament/admin/resources/users/index.ts
Normal file
@@ -0,0 +1,269 @@
|
|||||||
|
import { queryParams, type RouteQueryOptions, type RouteDefinition, type RouteFormDefinition, applyUrlDefaults } from './../../../../../wayfinder'
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\ListUsers::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/ListUsers.php:7
|
||||||
|
* @route '/admin/users'
|
||||||
|
*/
|
||||||
|
export const index = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
|
||||||
|
url: index.url(options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
index.definition = {
|
||||||
|
methods: ["get","head"],
|
||||||
|
url: '/admin/users',
|
||||||
|
} satisfies RouteDefinition<["get","head"]>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\ListUsers::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/ListUsers.php:7
|
||||||
|
* @route '/admin/users'
|
||||||
|
*/
|
||||||
|
index.url = (options?: RouteQueryOptions) => {
|
||||||
|
return index.definition.url + queryParams(options)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\ListUsers::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/ListUsers.php:7
|
||||||
|
* @route '/admin/users'
|
||||||
|
*/
|
||||||
|
index.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
|
||||||
|
url: index.url(options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\ListUsers::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/ListUsers.php:7
|
||||||
|
* @route '/admin/users'
|
||||||
|
*/
|
||||||
|
index.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
|
||||||
|
url: index.url(options),
|
||||||
|
method: 'head',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\ListUsers::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/ListUsers.php:7
|
||||||
|
* @route '/admin/users'
|
||||||
|
*/
|
||||||
|
const indexForm = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
|
action: index.url(options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\ListUsers::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/ListUsers.php:7
|
||||||
|
* @route '/admin/users'
|
||||||
|
*/
|
||||||
|
indexForm.get = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
|
action: index.url(options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\ListUsers::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/ListUsers.php:7
|
||||||
|
* @route '/admin/users'
|
||||||
|
*/
|
||||||
|
indexForm.head = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
|
action: index.url({
|
||||||
|
[options?.mergeQuery ? 'mergeQuery' : 'query']: {
|
||||||
|
_method: 'HEAD',
|
||||||
|
...(options?.query ?? options?.mergeQuery ?? {}),
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
index.form = indexForm
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\CreateUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/CreateUser.php:7
|
||||||
|
* @route '/admin/users/create'
|
||||||
|
*/
|
||||||
|
export const create = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
|
||||||
|
url: create.url(options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
create.definition = {
|
||||||
|
methods: ["get","head"],
|
||||||
|
url: '/admin/users/create',
|
||||||
|
} satisfies RouteDefinition<["get","head"]>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\CreateUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/CreateUser.php:7
|
||||||
|
* @route '/admin/users/create'
|
||||||
|
*/
|
||||||
|
create.url = (options?: RouteQueryOptions) => {
|
||||||
|
return create.definition.url + queryParams(options)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\CreateUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/CreateUser.php:7
|
||||||
|
* @route '/admin/users/create'
|
||||||
|
*/
|
||||||
|
create.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
|
||||||
|
url: create.url(options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\CreateUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/CreateUser.php:7
|
||||||
|
* @route '/admin/users/create'
|
||||||
|
*/
|
||||||
|
create.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
|
||||||
|
url: create.url(options),
|
||||||
|
method: 'head',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\CreateUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/CreateUser.php:7
|
||||||
|
* @route '/admin/users/create'
|
||||||
|
*/
|
||||||
|
const createForm = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
|
action: create.url(options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\CreateUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/CreateUser.php:7
|
||||||
|
* @route '/admin/users/create'
|
||||||
|
*/
|
||||||
|
createForm.get = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
|
action: create.url(options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\CreateUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/CreateUser.php:7
|
||||||
|
* @route '/admin/users/create'
|
||||||
|
*/
|
||||||
|
createForm.head = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
|
action: create.url({
|
||||||
|
[options?.mergeQuery ? 'mergeQuery' : 'query']: {
|
||||||
|
_method: 'HEAD',
|
||||||
|
...(options?.query ?? options?.mergeQuery ?? {}),
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
create.form = createForm
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\EditUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/EditUser.php:7
|
||||||
|
* @route '/admin/users/{record}/edit'
|
||||||
|
*/
|
||||||
|
export const edit = (args: { record: string | number } | [record: string | number ] | string | number, options?: RouteQueryOptions): RouteDefinition<'get'> => ({
|
||||||
|
url: edit.url(args, options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
edit.definition = {
|
||||||
|
methods: ["get","head"],
|
||||||
|
url: '/admin/users/{record}/edit',
|
||||||
|
} satisfies RouteDefinition<["get","head"]>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\EditUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/EditUser.php:7
|
||||||
|
* @route '/admin/users/{record}/edit'
|
||||||
|
*/
|
||||||
|
edit.url = (args: { record: string | number } | [record: string | number ] | string | number, options?: RouteQueryOptions) => {
|
||||||
|
if (typeof args === 'string' || typeof args === 'number') {
|
||||||
|
args = { record: args }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Array.isArray(args)) {
|
||||||
|
args = {
|
||||||
|
record: args[0],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
args = applyUrlDefaults(args)
|
||||||
|
|
||||||
|
const parsedArgs = {
|
||||||
|
record: args.record,
|
||||||
|
}
|
||||||
|
|
||||||
|
return edit.definition.url
|
||||||
|
.replace('{record}', parsedArgs.record.toString())
|
||||||
|
.replace(/\/+$/, '') + queryParams(options)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\EditUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/EditUser.php:7
|
||||||
|
* @route '/admin/users/{record}/edit'
|
||||||
|
*/
|
||||||
|
edit.get = (args: { record: string | number } | [record: string | number ] | string | number, options?: RouteQueryOptions): RouteDefinition<'get'> => ({
|
||||||
|
url: edit.url(args, options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\EditUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/EditUser.php:7
|
||||||
|
* @route '/admin/users/{record}/edit'
|
||||||
|
*/
|
||||||
|
edit.head = (args: { record: string | number } | [record: string | number ] | string | number, options?: RouteQueryOptions): RouteDefinition<'head'> => ({
|
||||||
|
url: edit.url(args, options),
|
||||||
|
method: 'head',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\EditUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/EditUser.php:7
|
||||||
|
* @route '/admin/users/{record}/edit'
|
||||||
|
*/
|
||||||
|
const editForm = (args: { record: string | number } | [record: string | number ] | string | number, options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
|
action: edit.url(args, options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\EditUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/EditUser.php:7
|
||||||
|
* @route '/admin/users/{record}/edit'
|
||||||
|
*/
|
||||||
|
editForm.get = (args: { record: string | number } | [record: string | number ] | string | number, options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
|
action: edit.url(args, options),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see \App\Filament\Resources\Users\Pages\EditUser::__invoke
|
||||||
|
* @see app/Filament/Resources/Users/Pages/EditUser.php:7
|
||||||
|
* @route '/admin/users/{record}/edit'
|
||||||
|
*/
|
||||||
|
editForm.head = (args: { record: string | number } | [record: string | number ] | string | number, options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
|
action: edit.url(args, {
|
||||||
|
[options?.mergeQuery ? 'mergeQuery' : 'query']: {
|
||||||
|
_method: 'HEAD',
|
||||||
|
...(options?.query ?? options?.mergeQuery ?? {}),
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
|
||||||
|
edit.form = editForm
|
||||||
|
|
||||||
|
const users = {
|
||||||
|
index: Object.assign(index, index),
|
||||||
|
create: Object.assign(create, create),
|
||||||
|
edit: Object.assign(edit, edit),
|
||||||
|
}
|
||||||
|
|
||||||
|
export default users
|
||||||
@@ -448,7 +448,7 @@ contact.form = contactForm
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::membership
|
* @see \App\Http\Controllers\Forms\MembershipFormController::membership
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:18
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:23
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
export const membership = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
|
export const membership = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
|
||||||
@@ -463,7 +463,7 @@ membership.definition = {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::membership
|
* @see \App\Http\Controllers\Forms\MembershipFormController::membership
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:18
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:23
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
membership.url = (options?: RouteQueryOptions) => {
|
membership.url = (options?: RouteQueryOptions) => {
|
||||||
@@ -472,7 +472,7 @@ membership.url = (options?: RouteQueryOptions) => {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::membership
|
* @see \App\Http\Controllers\Forms\MembershipFormController::membership
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:18
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:23
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
membership.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
|
membership.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
|
||||||
@@ -482,7 +482,7 @@ membership.get = (options?: RouteQueryOptions): RouteDefinition<'get'> => ({
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::membership
|
* @see \App\Http\Controllers\Forms\MembershipFormController::membership
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:18
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:23
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
membership.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
|
membership.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
|
||||||
@@ -492,7 +492,7 @@ membership.head = (options?: RouteQueryOptions): RouteDefinition<'head'> => ({
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::membership
|
* @see \App\Http\Controllers\Forms\MembershipFormController::membership
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:18
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:23
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
const membershipForm = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
const membershipForm = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
@@ -502,7 +502,7 @@ const membershipForm = (options?: RouteQueryOptions): RouteFormDefinition<'get'>
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::membership
|
* @see \App\Http\Controllers\Forms\MembershipFormController::membership
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:18
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:23
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
membershipForm.get = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
membershipForm.get = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
@@ -512,7 +512,7 @@ membershipForm.get = (options?: RouteQueryOptions): RouteFormDefinition<'get'> =
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::membership
|
* @see \App\Http\Controllers\Forms\MembershipFormController::membership
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:18
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:23
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
membershipForm.head = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
membershipForm.head = (options?: RouteQueryOptions): RouteFormDefinition<'get'> => ({
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { queryParams, type RouteQueryOptions, type RouteDefinition, type RouteFormDefinition } from './../../wayfinder'
|
import { queryParams, type RouteQueryOptions, type RouteDefinition, type RouteFormDefinition } from './../../wayfinder'
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::store
|
* @see \App\Http\Controllers\Forms\MembershipFormController::store
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:28
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:37
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
export const store = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
|
export const store = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
|
||||||
@@ -16,7 +16,7 @@ store.definition = {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::store
|
* @see \App\Http\Controllers\Forms\MembershipFormController::store
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:28
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:37
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
store.url = (options?: RouteQueryOptions) => {
|
store.url = (options?: RouteQueryOptions) => {
|
||||||
@@ -25,7 +25,7 @@ store.url = (options?: RouteQueryOptions) => {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::store
|
* @see \App\Http\Controllers\Forms\MembershipFormController::store
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:28
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:37
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
store.post = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
|
store.post = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
|
||||||
@@ -35,7 +35,7 @@ store.post = (options?: RouteQueryOptions): RouteDefinition<'post'> => ({
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::store
|
* @see \App\Http\Controllers\Forms\MembershipFormController::store
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:28
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:37
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
const storeForm = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
|
const storeForm = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
|
||||||
@@ -45,7 +45,7 @@ const storeForm = (options?: RouteQueryOptions): RouteFormDefinition<'post'> =>
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see \App\Http\Controllers\Forms\MembershipFormController::store
|
* @see \App\Http\Controllers\Forms\MembershipFormController::store
|
||||||
* @see app/Http/Controllers/Forms/MembershipFormController.php:28
|
* @see app/Http/Controllers/Forms/MembershipFormController.php:37
|
||||||
* @route '/membership'
|
* @route '/membership'
|
||||||
*/
|
*/
|
||||||
storeForm.post = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
|
storeForm.post = (options?: RouteQueryOptions): RouteFormDefinition<'post'> => ({
|
||||||
|
|||||||
Reference in New Issue
Block a user