From 2162669b1c392e3c7f0fc57f62b5d9cfae313c5f Mon Sep 17 00:00:00 2001 From: Mazarin Date: Mon, 18 Dec 2023 20:21:41 -0500 Subject: [PATCH] feat: popular names (#7) --- app/Console/Commands/FetchMetaData.php | 6 +- app/Helpers/StringHelper.php | 4 +- app/Http/Controllers/NameController.php | 10 ++ app/Http/ViewModels/Names/NameViewModel.php | 72 +++++++++++ bun.lockb | Bin 88880 -> 90684 bytes composer.lock | 132 ++++++++++---------- package.json | 3 +- resources/css/app.css | 11 ++ resources/js/app.js | 1 + resources/views/home/index.blade.php | 12 +- resources/views/names/show.blade.php | 34 +++-- 11 files changed, 201 insertions(+), 84 deletions(-) diff --git a/app/Console/Commands/FetchMetaData.php b/app/Console/Commands/FetchMetaData.php index 5bbffba..3a59eb1 100644 --- a/app/Console/Commands/FetchMetaData.php +++ b/app/Console/Commands/FetchMetaData.php @@ -72,9 +72,9 @@ public function handle(): void //ProcessKlingonName::dispatch($name); } - if (is_null($name->unisex)) { - ProcessMixte::dispatch($name); - } + // if (is_null($name->unisex)) { + // ProcessMixte::dispatch($name); + // } } } } diff --git a/app/Helpers/StringHelper.php b/app/Helpers/StringHelper.php index 41f7ed2..3245922 100644 --- a/app/Helpers/StringHelper.php +++ b/app/Helpers/StringHelper.php @@ -2,6 +2,8 @@ namespace App\Helpers; +use Illuminate\Support\Str; + class StringHelper { public static function sanitizeNameForURL(string $name): string @@ -18,7 +20,7 @@ public static function sanitizeNameForURL(string $name): string public static function getProperName(string $name): string { - $formattedName = ucwords(strtolower($name)); + $formattedName = Str::ucfirst(Str::lower($name)); $separator = [' ', '-', '+', "'"]; foreach ($separator as $s) { diff --git a/app/Http/Controllers/NameController.php b/app/Http/Controllers/NameController.php index aeaa028..82caf1f 100644 --- a/app/Http/Controllers/NameController.php +++ b/app/Http/Controllers/NameController.php @@ -63,10 +63,20 @@ public function show(Request $request): View return NameViewModel::relatedNames($requestedName); }); + $popularity = Cache::remember('popularity-' . $requestedName->name, 604800, function () use ($requestedName) { + return NameViewModel::popularity($requestedName); + }); + + $numerology = Cache::remember('numerology-' . $requestedName->name, 604800, function () use ($requestedName) { + return NameViewModel::numerology($requestedName); + }); + return view('names.show', [ 'name' => $name, + 'popularity' => $popularity, 'relatedNames' => $relatedNames, 'jsonLdSchema' => NameViewModel::jsonLdSchema($requestedName), + 'numerology' => $numerology, ]); } diff --git a/app/Http/ViewModels/Names/NameViewModel.php b/app/Http/ViewModels/Names/NameViewModel.php index 435f0f8..c6bbca3 100644 --- a/app/Http/ViewModels/Names/NameViewModel.php +++ b/app/Http/ViewModels/Names/NameViewModel.php @@ -7,6 +7,7 @@ use Carbon\Carbon; use Illuminate\Support\Collection; use Illuminate\Support\Str; +use Illuminate\Support\Number; class NameViewModel { @@ -33,6 +34,36 @@ public static function details(Name $name): array ]; } + public static function popularity(Name $name): array + { + $decades = range(1900, Carbon::now()->year, 10); + + $decadesCollection = collect(); + foreach ($decades as $decade) { + $popularity = $name->nameStatistics() + ->where('year', '>=', $decade) + ->where('year', '<', $decade + 9) + ->sum('count'); + + $decadesCollection->push([ + 'decade' => $decade . 's', + 'popularity' => $popularity, + 'percentage' => 0, + ]); + } + + // now we need to add the percentage of popularity for each decade + $total = $decadesCollection->sum('popularity'); + $decadesCollection = $decadesCollection->map(function ($decade) use ($total) { + $decade['percentage'] = Number::format(round($decade['popularity'] / $total * 100), locale: 'fr'); + return $decade; + }); + + return [ + 'decades' => $decadesCollection, + ]; + } + public static function jsonLdSchema(Name $name): array { return [ @@ -64,4 +95,45 @@ public static function relatedNames(Name $name): Collection ]), ]); } + + public static function numerology(Name $name): int + { + // for each letter in the name, we need to get the corresponding number + // letter A is 1, letter B is 2, etc... until letter I is 9 + // then we start over, letter J is 1, letter K is 2, etc... until letter R is 9 + // then we start over, letter S is 1, letter T is 2, etc... until letter Z is 8 + // then we add all the numbers together and we get the number for the name + // if the number is greater than 9, we add the digits together until we get a number between 1 and 9 + // if the number is 11, 22 or 33, we keep it as is + + $letters = str_split($name->name); + $numbers = []; + foreach ($letters as $letter) { + if ($letter === '_' || $letter === ' ' || $letter === '-' || $letter === "'") { + continue; + } + + $number = match ($letter) { + 'A', 'J', 'S' => 1, + 'B', 'K', 'T' => 2, + 'C', 'L', 'U' => 3, + 'D', 'M', 'V' => 4, + 'E', 'N', 'W' => 5, + 'F', 'O', 'X' => 6, + 'G', 'P', 'Y' => 7, + 'H', 'Q', 'Z' => 8, + 'I', 'R' => 9, + default => 0, + }; + + $numbers[] = $number; + } + + $number = array_sum($numbers); + while ($number > 9) { + $number = array_sum(str_split($number)); + } + + return $number; + } } diff --git a/bun.lockb b/bun.lockb index 9253624a40804adc259f5c1b149673cae3fb8776..231202635e738e28147aeecd3f00995e41b1cf43 100755 GIT binary patch delta 16191 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
    X*bu-xr`HKMVZ!y5} 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 -
    +
    -
    +
    @@ -14,7 +14,7 @@

    Choisissez le prénom parfait pour votre futur enfant

    Parcourez le site de fiches de prénoms le plus complet. Créez des listes et faites voter vos proches. Un site qui vous respecte, sans pub, sans tracking et open source.

    -

    +

    Parcourir tous les prénoms

    @@ -52,7 +52,7 @@

    Recherche instantanée

    - +
    @@ -61,9 +61,9 @@
    -
    +
    -
    +

    Prénoms masculins populaires

    diff --git a/resources/views/names/show.blade.php b/resources/views/names/show.blade.php index 35e35b6..ab88b2c 100644 --- a/resources/views/names/show.blade.php +++ b/resources/views/names/show.blade.php @@ -49,8 +49,8 @@
    -
    -
    +
    +
    @@ -87,17 +87,17 @@
    -
    +

    Pays d'origine

    {!! $name['country_of_origin'] !!}
    -
    +

    Numérologie

    -
    {!! $name['country_of_origin'] !!}
    +
    {{ $numerology }}
    -
    +

    {!! $name['country_of_origin'] !!}
    @@ -173,9 +173,29 @@
    +
    +

    Popularités par décennies

    + + + + + @foreach ($popularity['decades'] as $popularityItem) + + + + + @endforeach + +
    Front End Developer Salary
    + {{ $popularityItem['decade'] }} + + {{ $popularityItem['popularity'] }} +
    +
    +
    -

    D'autres idées de prénoms

    +

    D'autres idées de prénoms

      @foreach ($relatedNames as $name)