Skip to content

Commit b8e4adb

Browse files
committed
Refactor CreateSellerController to use GenerateUniqueShopKeyJob and update generateShopNameService for unique shop key generation
This commit modifies the CreateSellerController to dispatch a job for generating a unique shop key instead of generating it directly within the controller. Additionally, the generateShopNameService is refactored to ensure the generated shop key is unique by checking against existing shop keys in the database, enhancing the reliability of shop key creation.
1 parent fd7bd7b commit b8e4adb

File tree

3 files changed

+57
-17
lines changed

3 files changed

+57
-17
lines changed

app/Http/Controllers/Seller/CreateSellerController.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
use Illuminate\Support\Facades\Log;
1010
use App\Http\Controllers\Controller;
1111
use Illuminate\Support\Facades\Hash;
12+
use App\Jobs\GenerateUniqueShopKeyJob;
1213
use App\Http\Requests\NewSellerRequest;
1314
use Illuminate\Support\Facades\Storage;
14-
use App\Services\Shop\generateShopNameService;
1515
use App\Services\Auth\CreateAccountSyncService;
1616

1717
class CreateSellerController extends Controller
@@ -47,7 +47,6 @@ public function create(Request $request){
4747
if( $seller->save()){
4848
$shop=new Shop;
4949
$shop->shop_name=$request->shop_name;
50-
$shop->shop_key=(new generateShopNameService)->generateUniqueShopName($request->shop_name);
5150
$shop->shop_description=$request->shop_description;
5251
$shop->user_id=$seller->id;
5352
$shop->town_id=intval($request->town_id);
@@ -62,6 +61,7 @@ public function create(Request $request){
6261
Log::info('PaymentProcessingJob: Payment complete',[
6362
'cat'=>$request->categories
6463
]);
64+
GenerateUniqueShopKeyJob::dispatch($shop->id);
6565
//$urlShop=$this->getUrlSyncAccount();
6666
//$accountId=(new CreateAccountSyncService())->createSyncAccount(
6767
//$request->shop_name,
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
3+
namespace App\Jobs;
4+
5+
use App\Models\Shop;
6+
use Illuminate\Bus\Queueable;
7+
use Illuminate\Queue\SerializesModels;
8+
use Illuminate\Queue\InteractsWithQueue;
9+
use Illuminate\Contracts\Queue\ShouldQueue;
10+
use Illuminate\Foundation\Bus\Dispatchable;
11+
use App\Services\Shop\generateShopNameService;
12+
13+
class GenerateUniqueShopKeyJob implements ShouldQueue
14+
{
15+
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
16+
17+
/**
18+
* Create a new job instance.
19+
*/
20+
21+
protected $shopId;
22+
public function __construct($shopId)
23+
{
24+
$this->shopId=$shopId;
25+
}
26+
27+
/**
28+
* Execute the job.
29+
*/
30+
public function handle(): void
31+
{
32+
$shop=Shop::find($this->shopId);
33+
$shop->shop_key=(new generateShopNameService)->generateUniqueShopName($shop->shop_name);
34+
$shop->save();
35+
}
36+
}

app/Services/Shop/generateShopNameService.php

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,25 @@
11
<?php
22

33
namespace App\Services\Shop;
4+
45
use App\Models\Shop;
5-
class generateShopNameService{
66

7-
function generateUniqueShopName(string $shopName) {
8-
// Nettoyer et préparer le préfixe à partir du nom de la boutique
9-
$prefix = strtolower($shopName); // Conversion en minuscules
10-
$prefix = preg_replace('/[^a-z0-9]/', '', $prefix); // Supprime les caractères spéciaux
11-
$prefix = substr($prefix, 0, 4); // Prend les 4 premiers caractères
12-
$prefix .= '-'; // Ajoute le tiret
13-
14-
// Générer une chaîne aléatoire de 5 caractères
15-
$characters = 'abcdefghijklmnopqrstuvwxyz0123456789';
16-
$randomString = substr(str_shuffle($characters), 0, 5);
17-
18-
// Combiner le préfixe avec la chaîne aléatoire
19-
return $prefix . $randomString;
7+
function generateUniqueShopName(string $shopName) {
8+
$shopKey = '';
9+
do {
10+
// Nettoyer et préparer le préfixe à partir du nom de la boutique
11+
$prefix = strtolower($shopName); // Conversion en minuscules
12+
$prefix = preg_replace('/[^a-z0-9]/', '', $prefix); // Supprime les caractères spéciaux
13+
$prefix = substr($prefix, 0, 4); // Prend les 4 premiers caractères
14+
$prefix .= '-'; // Ajoute le tiret
15+
16+
// Générer une chaîne aléatoire de 5 caractères
17+
$characters = 'abcdefghijklmnopqrstuvwxyz0123456789';
18+
$randomString = substr(str_shuffle($characters), 0, 5);
19+
20+
// Combiner le préfixe avec la chaîne aléatoire
21+
$shopKey = $prefix . $randomString;
22+
} while (Shop::where('shop_key', $shopKey)->exists());
23+
24+
return $shopKey;
2025
}
21-
}

0 commit comments

Comments
 (0)