ldc-gen-game-web/resources/views/bo/codes/index.blade.php
2022-01-10 17:57:52 +01:00

109 lines
5.2 KiB
PHP

@extends('layouts.bo')
@section('content')
<div class="card">
<div class="card-header">
{{ __('Gestion des codes uniques') }}
<!-- Button modal -->
<button type="button" class="btn btn-sm btn-success float-right" data-toggle="modal" data-target="#exportModal">
<i class="fas fa-file-export"></i>&nbsp;{{ __('Export') }}
</button>
@include('bo.codes.search-form')
<!-- Modal -->
<div class="modal fade" id="exportModal" tabindex="-1" aria-labelledby="exportModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exportModalLabel">{{ __('Export des codes uniques') }}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<form method="POST" action="{{ route('bo.export-codes') }}">
@csrf
<div class="modal-body">
<div class="form-group form-row">
<label class="col-form-label col" for="nb_code_tot">{{ __('Nombre total de codes à exporter') }}</label>
<input type="number" name="nb_code_tot" id="nb_code_tot" class="form-control col" required>
</div>
<div class="form-group form-row">
<label class="col-form-label col" for="nb_code_fic">{{ __('Nombre de codes par fichier') }}</label>
<input type="number" name="nb_code_fic" id="nb_code_fic" class="form-control col" required>
</div>
<div class="form-group form-row">
<label class="col-form-label col" for="nb_code_ligne">{{ __('Nombre de codes par ligne') }}</label>
<input type="number" name="nb_code_ligne" id="nb_code_ligne" class="form-control col" required>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-sm btn-secondary" data-dismiss="modal">{{ __('Fermer') }}</button>
<button type="submit" class="btn btn-sm btn-success">{{ __('Lancer l\'export') }}</button>
</div>
</div>
</form>
</div>
</div>
</div>
<form action="{{route('bo.codes')}}" method="POST">
@csrf
<div class="card-body">
<p>{{__('Nombre de code(s)') }}</p>
<ul>
<li>{{ __('en base') }}&nbsp;:&nbsp;{{$nbCodeBase}}</li>
<li>{{ __('utilisé(s)') }}&nbsp;:&nbsp;{{$nbCodeUsed}}</li>
<li>{{ __('déjà exporté(s)') }}&nbsp;:&nbsp;{{ $nbCodeExported }}</li>
<li>{{ __('restant à exporté(s)') }}&nbsp;:&nbsp;{{$nbCodeRemainingToExport}}</li>
</ul>
<hr/>
<div class="form-group form-row">
<label class="col-form-label text-center col">{{ __('Nombre de codes à générer') }}&nbsp;<span class="required-asterisk">*</span></label>
<input class="form-control col" type="number" name="quantity" min="0">
<label class="col-form-label text-center col">{{__('Longueur des codes') }}&nbsp;<span class="required-asterisk">*</span></label>
<input id="codeLengthInput" class="form-control col" type="number" name="code_length" min="0" value="{{ $settings->code_length ?? config('codes.codeLength') }}" readonly>
</div>
<small >{{ __('Il est possible de générer') }}&nbsp;<span id="maxCodes" class="text-danger">0</span>&nbsp;{{ __('codes uniques.') }}</small><br>
<small class="text-muted">{{ __('!! Si la longueur des codes est changé l\'export pourra prendre plus de temps. !!') }}</small>
</div>
<div class="card-footer text-center">
<button type="submit" class="btn btn-success"><i class="fas fa-cog"></i>&nbsp;{{ __('Générer') }}</button>
</div>
</form>
</div>
@endsection
@push('scripts')
<script>
document.addEventListener('DOMContentLoaded', () => {
let codeLenghtInput = document.getElementById('codeLengthInput'),
smallWarning = document.getElementById('maxCodes')
/**
* Fonction factorielle
*/
let fact = (nbr) => {
let i, f = 1
for(i = 1; i <= nbr; i++)
{
f = f * i; // ou f *= i;
}
return f;
}
let calculateMax = () => {
let p = Number.parseInt({{ strlen(config('codes.codeCharList')) }}),
n = codeLenghtInput.value
return Math.pow(p, n)-1 - Number.parseInt({{ $nbCodeBase }});
}
let numberWithCommas = (x) => {
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
smallWarning.innerText = numberWithCommas(calculateMax())
codeLenghtInput.addEventListener('input', () => {
smallWarning.innerText = numberWithCommas(calculateMax())
})
});
</script>
@endpush