--- /dev/null
+<?php
+
+namespace App\Nova\Filters;
+
+use Illuminate\Http\Request;
+use Laravel\Nova\Filters\BooleanFilter;
+
+class ProfileComplete extends BooleanFilter
+{
+ public $name = "Remplissage profils";
+ /**
+ * Apply the filter to the given query.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @param \Illuminate\Database\Eloquent\Builder $query
+ * @param mixed $value
+ * @return \Illuminate\Database\Eloquent\Builder
+ */
+ public function apply(Request $request, $query, $value)
+ {
+ if ($value['complete']) {
+ $query->completeProfiles();
+ }
+ if ($value['incomplete']) {
+ $query->inCompleteProfiles();
+ }
+ }
+
+ /**
+ * Get the filter's available options.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @return array
+ */
+ public function options(Request $request)
+ {
+ return [
+ 'Profils complets' => 'complete',
+ 'Profils incomplets' => 'incomplete',
+ ];
+ }
+}
--- /dev/null
+<?php
+
+namespace App\Nova\Lenses;
+
+use App\Nova\Filters\ProfileComplete;
+use Illuminate\Http\Request;
+use Laravel\Nova\Fields\Boolean;
+use Laravel\Nova\Fields\DateTime;
+use Laravel\Nova\Fields\ID;
+use Laravel\Nova\Fields\Text;
+use Laravel\Nova\Http\Requests\LensRequest;
+use Laravel\Nova\Lenses\Lens;
+
+class UsersDetails extends Lens
+{
+
+ public $name = "Détails profils";
+ /**
+ * Get the query builder / paginator for the lens.
+ *
+ * @param \Laravel\Nova\Http\Requests\LensRequest $request
+ * @param \Illuminate\Database\Eloquent\Builder $query
+ * @return mixed
+ */
+ public static function query(LensRequest $request, $query)
+ {
+ return $request->withOrdering($request->withFilters(
+ $query->orderBy('updated_at', 'desc')
+ ));
+ }
+
+ /**
+ * Get the fields available to the lens.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @return array
+ */
+ public function fields(Request $request)
+ {
+ return [
+ Text::make('Prénom', 'first_name'),
+ Text::make('Nom', 'last_name'),
+ Text::make('Email'),
+ Text::make('Fonction', 'position'),
+ Text::make('Service'),
+ Text::make('Téléphone', 'phone'),
+
+ DateTime::make('Mis à jour', 'updated_at')->format('DD/MM/YYYY à HH:mm:ss'),
+ Boolean::make('Profil rempli', 'profileFilled')->readonly(),
+
+
+ ];
+ }
+
+ /**
+ * Get the cards available on the lens.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @return array
+ */
+ public function cards(Request $request)
+ {
+ return [];
+ }
+
+ /**
+ * Get the filters available for the lens.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @return array
+ */
+ public function filters(Request $request)
+ {
+ return [
+ new ProfileComplete,
+ ];
+ }
+
+ /**
+ * Get the actions available on the lens.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @return array
+ */
+ public function actions(Request $request)
+ {
+ return parent::actions($request);
+ }
+
+ /**
+ * Get the URI key for the lens.
+ *
+ * @return string
+ */
+ public function uriKey()
+ {
+ return 'users-details';
+ }
+}
use App\Nova\Lenses\FailedMailgun;
use App\Nova\Lenses\MailgunStatus;
use App\Nova\Lenses\NonDeliverableAddresses;
+use App\Nova\Lenses\UsersDetails;
use App\Nova\Metrics\RegistrationCompletePartition;
use App\Nova\Metrics\SubscribedUsers;
use App\Nova\Metrics\TotalUsers;
public function lenses(Request $request)
{
return [
+ New UsersDetails,
new MailgunStatus,
new FailedMailgun,
new AllFailedMailgun,
];
+ protected array $profileFilledAttributes = [
+ 'position',
+ 'phone',
+// 'employer',
+ 'service'
+ ];
+
/**
* Trial duration in days
*/
$builder->where('reg_complete', 0);
}
+ /**
+ * @param Builder $builder
+ */
+ public function scopeIncompleteProfiles(Builder $builder): void
+ {
+ $builder->whereNull($this->profileFilledAttributes, 'or');
+ }
+
+ /**
+ * @param Builder $builder
+ */
+ public function scopeCompleteProfiles(Builder $builder): void
+ {
+ $builder->whereNotNull($this->profileFilledAttributes);
+ }
return $this->organization === null;
}
+ /**
+ * @return bool
+ * Returns true if all $profileFilledAttributes are filled
+ */
+ public function getProfileFilledAttribute(): bool
+ {
+ return !in_array(null, $this->only($this->profileFilledAttributes));
+ }
/**
* @return \Stripe\Customer
return $this->createOrGetStripeCustomer([
'name' => $this->name,
'phone' => $this->phone,
-
]);
}
/**
* @return string
*/
- public function __toString()
+ public function __toString(): string
{
return $this->name;
}
<label for="employer" class="col-md-4 col-form-label text-md-right">{{ __('Employeur') }}</label>
<div class="col-md-6">
+ @if($user->organization === null)
<input id="employer" type="text" class="form-control @error('employer') is-invalid @enderror" name="employer" value="{{ old('employer', $user->employer) }}" >
-
@error('employer')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
+ @else
+ <input id="employer" type="text" class="form-control" name="employer" value="{{ $user->organization }}" disabled readonly>
+
+ @endif
</div>
</div>
<div class="form-group row">