Win page form proof ok

This commit is contained in:
Jérémy Munsch 2023-12-06 16:01:23 +01:00
parent 58a90547fe
commit 42c4cc0817
No known key found for this signature in database
GPG key ID: 18361AF3BFEC0FEC
7 changed files with 348 additions and 94 deletions

View file

@ -6,4 +6,22 @@
width: 16rem;
margin: 0 auto;
}
@include media-breakpoint-up(md) {
.prize-rotate {
transform: rotateZ(-3deg);
}
.anti-rotate {
transform: rotateZ(3deg);
}
}
.wide-banner {
position: relative;
@include media-breakpoint-up(md) {
right: -2rem;
}
}
}

View file

@ -7,7 +7,8 @@ document.addEventListener("DOMContentLoaded", function () {
spinWheelInner = wheelWrapper?.querySelector(".wheel-inner") as HTMLElement | null | undefined,
spinWheelBtnList = wheelWrapper?.querySelectorAll(".wheel-spin") as NodeListOf<HTMLElement> | undefined,
prizeSection = document.getElementById("prize-section"),
discountSection = document.getElementById("discount-section");
discountSection = document.getElementById("discount-section"),
winningProofSection = document.getElementById("winning-proof-section");
/** Hide animation and show win sections */
const toggleAnimationPhase = () => {
@ -21,6 +22,9 @@ document.addEventListener("DOMContentLoaded", function () {
} else {
throw new Error("No section to toggle");
}
if (winningProofSection) {
winningProofSection.classList.remove("d-none");
}
};
if (wheelWrapper && spinWheelInner && spinWheelBtnList && spinWheelBtnList.length) {

View file

@ -1,15 +1,16 @@
<section class="container pb-5 pt-5 text-center" id="{{ $sectionId }}">
<section class="container-fluid d-none overflow-x-hidden pb-5 pt-5 text-center" id="{{ $sectionId }}">
<div class="row">
<div class="col-12 col-md-6">
<img class="img-fluid" src="{{ asset($prizeModel->picture) }}" title="{{ $prizeModel->picture_title }}"
alt="{{ $prizeModel->picture_alt }}">
</div>
<div class="col">
<div class="text-bg-tertiary">
<span class="fs-1">{{ __("Félicitations\u{00A0}!") }}</span>
<p>{{ __('Vous avez gagné un :model !', [
'model' => $prizeModel->label,
]) }}
<div class="col position-relative g-0 d-flex align-items-center">
<div class="@if ($prizeModel->id % 2 === 0) text-bg-quint @else text-bg-tertiary @endif prize-rotate wide-banner p-5">
<span class="fs-1 anti-rotate d-block">{{ __("Félicitations\u{00A0}!") }}</span>
<p class="anti-rotate">
{{ __('Vous avez gagné un :model !', [
'model' => $prizeModel->label,
]) }}
<br>
@if ($settingsGlobal->winning_proof)
{{ __('Pour recevoir votre cadeau, vous devez envoyer vos preuves d\'achat. Voir modalités ci dessous.') }}
@ -18,7 +19,8 @@
@endif
</p>
@if ($settingsGlobal->winning_proof)
<a href="#{{ $winProofAnchor }}">&raquo;</a>
<a class="anti-rotate btn btn-lg btn-white" href="#{{ $winProofAnchor }}"
title="{{ __('Aller à la section preuve de gains') }}">&raquo;</a>
@endif
</div>
</div>

View file

@ -0,0 +1,176 @@
<fieldset class="row justify-content-center mb-5">
<legend class="col-md-auto fw-bold">{{ __('Vos coordonées') }}</legend>
{{-- Force next columns to break to new line --}}
<div class="w-100"></div>
{{-- FIRST_NAME --}}
<div class="col-12 col-md-6 py-2">
<div class="form-floating mb-3">
<input id="first_name" name="first_name" type="text" value="{{ old('first_name') }}"
placeholder="{{ __('Votre :attribute', [
'attribute' => __('validation.attributes.first_name'),
]) }}"
@class([
'form-control',
'mx-auto',
'is-invalid' => $errors->has('first_name'),
]) autocomplete="given-name" />
<label for="first_name">{{ Str::ucfirst(__('validation.attributes.first_name')) }}</label>
@foreach ($errors->get('first_name') as $message)
<div class="invalid-feedback">{{ $message }}</div>
@endforeach
</div>
</div>
{{-- LAST_NAME --}}
<div class="col-12 col-md-6 py-2">
<div class="form-floating mb-3">
<input id="last_name" name="last_name" type="text" value="{{ old('last_name') }}"
placeholder="{{ __('Votre :attribute', [
'attribute' => __('validation.attributes.last_name'),
]) }}"
@class([
'form-control',
'mx-auto',
'is-invalid' => $errors->has('last_name'),
]) autocomplete="given-name" />
<label for="last_name">{{ Str::ucfirst(__('validation.attributes.last_name')) }}</label>
@foreach ($errors->get('last_name') as $message)
<div class="invalid-feedback">{{ $message }}</div>
@endforeach
</div>
</div>
{{-- ADDRESS --}}
<div class="col-12 col-md-6 py-2">
<div class="form-floating mb-3">
<input id="address" name="address" type="text" value="{{ old('address') }}"
placeholder="{{ __('Votre :attribute', [
'attribute' => __('validation.attributes.line_address_1'),
]) }}"
@class([
'form-control',
'mx-auto',
'is-invalid' => $errors->has('address'),
]) autocomplete="address-line1" />
<label for="address">{{ Str::ucfirst(__('validation.attributes.line_address_1')) }}</label>
@foreach ($errors->get('address') as $message)
<div class="invalid-feedback">{{ $message }}</div>
@endforeach
</div>
</div>
{{-- ADDRESS2 --}}
<div class="col-12 col-md-6 py-2">
<div class="form-floating mb-3">
<input id="address2" name="address2" type="text" value="{{ old('address2') }}"
placeholder="{{ __('Votre :attribute', [
'attribute' => __('validation.attributes.line_address_2'),
]) }}"
@class([
'form-control',
'mx-auto',
'is-invalid' => $errors->has('address2'),
]) autocomplete="address-line2" />
<label for="address2">{{ Str::ucfirst(__('validation.attributes.line_address_2')) }}</label>
@foreach ($errors->get('address2') as $message)
<div class="invalid-feedback">{{ $message }}</div>
@endforeach
</div>
</div>
{{-- POSTAL_CODE --}}
<div class="col-12 col-md-6 py-2">
<div class="form-floating mb-3">
<input id="postal_code" name="postal_code" type="text" value="{{ old('postal_code') }}"
placeholder="{{ __('Votre :attribute', [
'attribute' => __('validation.attributes.postal_code'),
]) }}"
@class([
'form-control',
'mx-auto',
'is-invalid' => $errors->has('postal_code'),
]) autocomplete="postal-code" />
<label for="postal_code">{{ Str::ucfirst(__('validation.attributes.postal_code')) }}</label>
@foreach ($errors->get('postal_code') as $message)
<div class="invalid-feedback">{{ $message }}</div>
@endforeach
</div>
</div>
{{-- CITY --}}
<div class="col-12 col-md-6 py-2">
<div class="form-floating mb-3">
<input id="city" name="city" type="text" value="{{ old('city') }}"
placeholder="{{ __('Votre :attribute', [
'attribute' => __('validation.attributes.city'),
]) }}"
@class([
'form-control',
'mx-auto',
'is-invalid' => $errors->has('city'),
]) autocomplete="address-level2" />
<label for="city">{{ Str::ucfirst(__('validation.attributes.city')) }}</label>
@foreach ($errors->get('city') as $message)
<div class="invalid-feedback">{{ $message }}</div>
@endforeach
</div>
</div>
{{-- COUNTRY --}}
<div class="col-12 col-md-6 py-2">
<div class="form-floating mb-3">
@php
// * Avoir les DROM-COM + France
$franceCountries = collect(\LDC\LDCCRM\Enums\Country::getValidCountries())->filter(fn($enum) => !in_array($enum, [LDC\LDCCRM\Enums\Country::belgium(), LDC\LDCCRM\Enums\Country::luxembourg()]));
$countries = collect(\LDC\LDCCRM\Enums\Country::toArray())->filter(fn($enum) => !$franceCountries->contains($enum));
@endphp
<select id="country" aria-label="{{ Str::ucfirst(__('validation.attributes.country')) }}" @class([
'form-select',
'mx-auto',
'is-invalid' => $errors->has('country'),
])>
<option @selected(!old('country')) disabled>
{{ __('Votre :attribute', [
'attribute' => __('validation.attributes.country'),
]) }}
</option>
@foreach ($franceCountries as $countryEnum)
<option value="{{ $countryEnum->value }}" @selected(old('country') == $countryEnum->value)>
{{ Str::ucfirst($countryEnum->label) }}
</option>
@endforeach
@foreach ($countries as $countryEnum)
<option value="{{ $countryEnum->value }}" @selected(old('country') == $countryEnum->value)>
{{ Str::ucfirst($countryEnum->label) }}
</option>
@endforeach
</select>
<label for="country">{{ Str::ucfirst(__('validation.attributes.country')) }}</label>
@foreach ($errors->get('country') as $message)
<div class="invalid-feedback">{{ $message }}</div>
@endforeach
</div>
</div>
{{-- PHONE --}}
<div class="col-12 col-md-6 py-2">
<div class="form-floating mb-3">
<input id="phone" name="phone" type="text" value="{{ old('phone') }}"
placeholder="{{ __('Votre :attribute', [
'attribute' => __('validation.attributes.phone'),
]) }}"
@class([
'form-control',
'mx-auto',
'is-invalid' => $errors->has('phone'),
]) autocomplete="tel" />
<label for="phone">{{ Str::ucfirst(__('validation.attributes.phone')) }}</label>
@foreach ($errors->get('phone') as $message)
<div class="invalid-feedback">{{ $message }}</div>
@endforeach
</div>
</div>
</fieldset>

View file

@ -0,0 +1,55 @@
<fieldset class="row justify-content-center mb-5">
<legend class="col-md-auto fw-bold">{{ __('Vos preuves d\'achat') }}</legend>
{{-- Force next columns to break to new line --}}
<div class="w-100"></div>
{{-- FILE CODE --}}
<div class="col col-lg-8 col-xl-6 py-2">
<label class="form-label fw-bold" for="file-code">{{ __('Code-barres du produit *') }}</label>
<input class="form-control form-control-lg" id="file-code" name="file_code" type="file" @class([
'form-control',
'form-control-lg',
'is-invalid' => $errors->has('file_code'),
])
accept=".jpg,.jpeg,.png,.pdf" required>
@foreach ($errors->get('file_code') as $message)
<div class="invalid-feedback">{{ $message }}</div>
@endforeach
</div>
{{-- Force next columns to break to new line --}}
<div class="w-100"></div>
{{-- FILE RECEIPT --}}
<div class="col col-lg-8 col-xl-6 py-2">
<label class="form-label fw-bold" for="file-code">{{ __('Ticket de caisse avec la date *') }}</label>
<input class="form-control form-control-lg" id="file-code" name="file_receipt" type="file" @class([
'form-control',
'form-control-lg',
'is-invalid' => $errors->has('file_receipt'),
])
accept=".jpg,.jpeg,.png,.pdf" required>
@foreach ($errors->get('file_receipt') as $message)
<div class="invalid-feedback">{{ $message }}</div>
@endforeach
</div>
{{-- Force next columns to break to new line --}}
<div class="w-100"></div>
{{-- FILE STICKER --}}
<div class="col col-lg-8 col-xl-6 py-2">
<label class="form-label fw-bold" for="file-sticker">{{ __('Sticker du produit *') }}</label>
<input class="form-control form-control-lg" id="file-sticker" name="file_sticker" type="file" @class([
'form-control',
'form-control-lg',
'is-invalid' => $errors->has('file_sticker'),
])
accept=".jpg,.jpeg,.png,.pdf" required>
@foreach ($errors->get('file_sticker') as $message)
<div class="invalid-feedback">{{ $message }}</div>
@endforeach
</div>
</fieldset>

View file

@ -1,95 +1,87 @@
<div class="register floating grid">
<div class="head-bloc"></div>
<section class="main--bloc container" style="display:none;">
<div class="title-inscription1">
<a id="winproof"></a>
<h1 class="post-title">Envoyez vos preuves de gain</h1>
<section class="container-fluid d-none pb-5 pt-5" id="{{ $sectionId }}">
<div class="row mb-3">
<div class="col">
<span class="fs-1 fw-bold text-tertiary d-block text-center">{{ __('Envoyez vos preuves de gain') }}</span>
</div>
<div class="form-inscription1">
</div>
<div class="infos">
<h2>En ligne @</h3>
<p>Renseignez l'adresse à laquelle vous souhaitez recevoir votre gain et téléversez vos preuves d'achat.</p>
<div class="container">
{{-- ONLINE FORM --}}
<div class="row mb-1">
<div class="col g-0">
<span class="fs-2 fw-bold d-block text-center">{{ __('En ligne @') }}</span>
<span
class="d-block fs-3">{{ __('Renseignez l\'adresse à laquelle vous souhaitez recevoir votre gain et téléversez vos preuves d\'achat.') }}</span>
</div>
<form method="POST" action="{{ route('fo.send-winning-proof') }}" enctype="multipart/form-data">
@method('PUT')
@csrf
<div class="coordonnees grid">
<h4>Vos coordonnées</h4>
<input id="lastname" name="lastname" type="text" value="{{ Auth::user()->lastname ?? '' }}" placeholder="Nom*"
required maxlength="150">
<input id="firstname" name="firstname" type="text" value="{{ Auth::user()->firstname ?? '' }}" placeholder="Prénom*"
required maxlength="150">
<input id="addr1" name="address" type="text" value="{{ Auth::user()->address ?? '' }}" placeholder="Adresse*"
required maxlength="50">
<input id="addr2" name="address2" type="text" value="{{ Auth::user()->address2 ?? '' }}"
placeholder="Complément d'adresse" maxlength="50">
<div class="locate">
<input id="post_number" name="postal_code" type="number" value="{{ Auth::user()->postal_code ?? '' }}"
placeholder="Code Postal*" required min="1" max="99999">
<input id="town" name="town" type="text" value="{{ Auth::user()->town ?? '' }}" placeholder="Ville*"
required maxlength="50">
</div>
<input id="country" name="country" type="text" value="{{ Auth::user()->country ?? '' }}" placeholder="Pays*"
required maxlength="32">
<input id="phone" name="phone" type="tel" value="{{ Auth::user()->phone ?? '' }}"
placeholder="Numéro de téléphone*" required>
</div>
<div class="preuves">
<h4>Vos preuves d'achat</h4>
<div class="barres files-accepted">
<p>Code-barres du produit*</p><br><br>
<label class="lbl-code upload" for="file-code">Ajouter un fichier</label>
<input class="input-file" id="file-code" name="barcode" type="file" accept=".jpg,.jpeg,.png,.pdf" required>
</div>
<div class="ticket files-accepted">
<p>Ticket de caisse avec la date*</p><br><br>
<label class="lbl-ticket upload" for="ticket-prod">Ajouter un fichier</label>
<input class="input-file" id="ticket-prod" name="ticket" type="file" accept=".jpg,.jpeg,.png,.pdf" required>
</div>
<div class="sticker files-accepted">
<p>Sticker du produit*</p><br><br>
<label class="lbl-sticker upload" for="sticker-prod">Ajouter un fichier</label>
<input class="input-file" id="sticker-prod" name="sticker" type="file" accept=".jpg,.jpeg,.png,.pdf" required>
</div>
</div>
<div class="btn-form">
<input class="btn" id="send" type="submit" value="Envoyer mes preuves d'achat">
</div>
</form>
</div>
<div class="row justify-content-center mb-5">
<div class="col g-0">
<div class="container my-2 border py-3" method="POST" action="{{ route('fo.send-winning-proof') }}"
enctype="multipart/form-data">
@method('PUT')
@csrf
</div>
<div class="legals">
<p>*Champs obligatoires</p>
</div>
<div class="instructions">
<div class="contain-courrier">
<div class="courrier">
<div class="infos">
<h2>Ou Par courrier</h3>
<p>Merci de nous envoyer, sur papier libre (ou en utilisant le formulaire <a
href="{{ asset($prizeModel->pdf_winning_proof) }}" style="font-size: inherit;line-height:inherit;"
target="_blank"> téléchargeable ici</a>), vos
coordonnées ainsi que vos preuves d'achat originales. Le tout sous pli suffisamment affranchi sous dix jours
à l'adresse suivante :</p>
@include('theme::pages.participation.parts.winning-proof-form.coordinates')
@include('theme::pages.participation.parts.winning-proof-form.proof')
<div class="row mb-3">
<div class="col text-center">
<button class="btn btn-lg btn-tertiary py-md-3 px-md-4">{{ __('Envoyer mes preuves d\'achat') }}</button>
</div>
</div>
<div class="adress">
<p>Service Consommateurs LDC<br>Jeu "Gau'loisirs"<br>CS 50925<br>72302 SABL&Eacute; SUR SARTHE CEDEX</p>
</div>
<div class="coordonnees">
<p>Vos coordonnées<br>Nom, prénom, adresse complète,<br>n° de téléphone et E-mail</p>
</div>
<div class="preuves">
<p>Vos preuves d'achat<br>Code-barres original du produit,<br>ticket de caisse original avec la date,
<br>le sticker ou ou la partie de l'emballage contenant le code unique de jeu (code visible)
</p>
<div class="row">
<div class="col text-center">
<span>{{ __('*Champs obligatoires') }}</span>
</div>
</div>
</div>
</div>
</div>
</section>
{{-- POSTAL INSTRUCTIONS --}}
<div class="row">
<div class="col g-0 text-center">
<span class="fs-2 fw-bold d-block">{{ __('Ou Par courrier') }}</span>
<p class="fs-4">{!! clean(
__(
'Merci de nous envoyer, sur papier libre :printLinkComment, vos coordonnées ainsi que vos preuves d\'achat originales. Le tout sous pli suffisamment affranchi sous dix jours à l\'adresse suivante :',
[
// Optionnal winning proof pdf
'printLinkComment' => $prizeModel->pdf_winning_proof
? __('(ou en utilisant le formulaire :startA téléchargeable ici :endA)', [
'startA' =>
'<a target="_blank" href="' .
asset($prizeModel->pdf_winning_proof) .
'" title="' .
__('Télécharger le formualaire de gains') .
'">',
'endA' => '</a>',
])
: '',
],
),
) !!}
</p>
<address class="fw-bold fs-4">
Service Consommateurs LDC<br>
Jeu "Gau'loisirs"<br>
CS 50925<br>
72302 SABL&Eacute; SUR SARTHE CEDEX
</address>
<span class="d-block text-decoration-underline fs-5">{{ __("Avec\u{00A0}:") }}</span>
<dl class="fs-4">
<dt>{{ __('Vos coordonnées') }}</dt>
<dd>{{ __('Nom, prénom, adresse complète') }}</dd>
<dd>{{ __('N° de téléphone et E-mail') }}</dd>
</dl>
<dl class="fs-4">
<dt>{{ __('Vos preuves d\'achat') }}</dt>
<dd>{{ __('Code-barres original du produit') }}</dd>
<dd>{{ __('Ticket de caisse original avec la date') }}</dd>
<dd>{{ __('Le sticker ou ou la partie de l\'emballage contenant le code unique de jeu (code visible)') }}</dd>
</dl>
</div>
</div>
</div>
</div>
</section>

View file

@ -3,7 +3,7 @@
@section('title', __('Vous avez gagné !'))
@section('description', __('Vous avez gagné un Lot cliquez sur la roue pour découvrir lequel'))
@section('main-class', 'won-page')
@section('main-class', 'won-page g-0')
@section('content')
{{-- SPIN WHEEL --}}
@ -32,4 +32,11 @@
@endphp
@endif
@if ($settingsGlobal->winning_proof)
{{-- WINNING PROOF SUBMIT PART --}}
@include('theme::pages.participation.parts.winning-proof', [
'sectionId' => 'winning-proof-section',
])
@endif
@endsection