66use App \Models \User ;
77use App \Models \Image ;
88use Illuminate \Http \Request ;
9+ use App \Jobs \CreateSellerJob ;
910use Illuminate \Support \Facades \Log ;
1011use App \Http \Controllers \Controller ;
1112use Illuminate \Support \Facades \Hash ;
@@ -19,99 +20,58 @@ class CreateSellerController extends Controller
1920 public function create (Request $ request ){
2021
2122
22- try {
23- $ seller =new User ;
24- $ seller ->firstName =$ request ->firstName ;
25- $ seller ->lastName =$ request ->lastName ;
26- $ seller ->email =$ request ->email ;
27- $ seller ->phone_number =$ request ->phone_number ;
28- $ seller ->birthDate =$ request ->birthDate ;
29- $ seller ->isWholesaler =$ request ->isWholesaler ;
30- $ seller ->role_id =2 ;
31- $ seller ->nationality =$ request ->nationality ;
23+ try {
24+ Log::info ('CreateSellerController started ' , ['email ' => $ request ->email ]);
3225
33- $ file_cni_front = $ request ->file ('identity_card_in_front ' );
34- $ image_path_cni_front = $ file_cni_front ->store ('cni/front ' , 'public ' );
35- $ seller ->identity_card_in_front =$ image_path_cni_front ;
26+ // 🗂️ Sauvegarde temporaire des fichiers
27+ $ paths = [
28+ 'identity_card_in_front ' => $ this ->storeTempFile ($ request , 'identity_card_in_front ' ),
29+ 'identity_card_in_back ' => $ this ->storeTempFile ($ request , 'identity_card_in_back ' ),
30+ 'identity_card_with_the_person ' => $ this ->storeTempFile ($ request , 'identity_card_with_the_person ' ),
31+ 'shop_profile ' => $ this ->storeTempFile ($ request , 'shop_profile ' ),
32+ ];
3633
37- $ file_cni_back = $ request ->file ('identity_card_in_back ' );
38- $ image_path_cni_back = $ file_cni_back ->store ('cni/back ' , 'public ' );
39- $ seller ->identity_card_in_back =$ image_path_cni_back ;
34+ $ imagePaths = [];
35+ if ($ request ->hasFile ('images ' )) {
36+ foreach ($ request ->file ('images ' ) as $ img ) {
37+ $ imagePaths [] = $ this ->storeTempFileDirect ($ img , 'shop/images ' );
38+ }
39+ }
4040
41- $ file_cni_with_the_person = $ request ->file ('identity_card_with_the_person ' );
42- $ image_path_cni_with_the_person = $ file_cni_with_the_person ->store ('cni/person ' , 'public ' );
43- $ seller ->identity_card_with_the_person =$ image_path_cni_with_the_person ;
41+ // 🧾 On passe des chemins, pas des fichiers
42+ $ payload = array_merge ($ request ->except (['identity_card_in_front ' , 'identity_card_in_back ' , 'identity_card_with_the_person ' , 'shop_profile ' , 'images ' ]), [
43+ 'files ' => $ paths ,
44+ 'images ' => $ imagePaths ,
45+ ]);
4446
45- $ seller ->password =Hash::make ($ request ->password );
46- $ seller ->isWholesaler =$ request ->isWholesaler ;
47- if ( $ seller ->save ()){
48- $ shop =new Shop ;
49- $ shop ->shop_name =$ request ->shop_name ;
50- $ shop ->shop_description =$ request ->shop_description ;
51- $ shop ->user_id =$ seller ->id ;
52- $ shop ->town_id =intval ($ request ->town_id );
53- $ shop ->quarter_id =intval ($ request ->quarter_id );
54- $ shop ->product_type =$ request ->product_type ;
55- $ shop ->shop_gender =(string )$ request ->shop_gender ;
56- $ shop_profile = $ request ->file ('shop_profile ' );
57- $ shop ->shop_profile =$ shop_profile ->store ('shop/profile ' ,'public ' );
58-
59- }
60- if ($ shop ->save ()){
61- Log::info ('PaymentProcessingJob: Payment complete ' ,[
62- 'cat ' =>$ request ->categories
63- ]);
64- GenerateUniqueShopKeyJob::dispatch ($ shop ->id )->delay (now ()->addMinutes (1 ));
65- //$urlShop=$this->getUrlSyncAccount();
66- //$accountId=(new CreateAccountSyncService())->createSyncAccount(
67- //$request->shop_name,
68- //$urlShop,
69- //$request->email,
70- //$request->phone_number,
71- //$shop->id,
72- //);
47+ // 🧱 Dispatch du Job
48+ CreateSellerJob::dispatch ($ payload );
7349
74- //$updateShopSyncAccount=$this->updateAccountSyncWithShop($shop->id,$accountId);
50+ return response ()->json ([
51+ 'success ' => true ,
52+ 'message ' => 'Création du vendeur en cours... ' ,
53+ ], 202 );
7554
76-
77- $ shop ->categories ()->attach ($ request ->categories );
78-
79- Log::info ('PaymentProcessingJob: Payment complete ' ,[
80- 'cat ' =>$ request ->categories
81- ]);
82- foreach ($ request ->images as $ image ){
83- $ i =new Image ;
84- $ i ->image_path =$ image ->store ('shop/images ' ,'public ' );
85- if ($ i ->save ()){
86- $ shop ->images ()->attach ($ i );
87- }
88-
89- }
90- return response ()->json (['message ' =>"seller created successfully " ,'success ' =>true ],201 );
55+ } catch (Exception $ e ) {
56+ Log::error ('CreateSellerController failed ' , ['error ' => $ e ->getMessage ()]);
57+ return response ()->json ([
58+ 'success ' => false ,
59+ 'message ' => 'Something went wrong ' ,
60+ 'errors ' => $ e ->getMessage (),
61+ ], 500 );
9162 }
92-
93-
94-
95- }catch (\Exception $ e ){
96- Log::info ('PaymentProcessingJob: Payment complete ' ,[
97- 'errpr ' =>$ e ->getMessage ()
98- ]);
99- return response ()->json ([
100- 'success ' => false ,
101- 'message ' => 'Something went wrong ' ,
102- 'errors ' => $ e ->getMessage ()
103- ], 500 );
104- }
105-
10663 }
10764
108- private function updateAccountSyncWithShop ($ shopId ,$ accountId ){
109- $ shop =Shop::find ($ shopId );
110- $ shop ->accountId =$ accountId ;
111- $ shop ->save ();
65+ private function storeTempFile (Request $ request , string $ key )
66+ {
67+ if ($ request ->hasFile ($ key )) {
68+ return $ request ->file ($ key )->store ("temp/ $ key " , 'public ' );
69+ }
70+ return null ;
11271 }
11372
114- private function getUrlSyncAccount (){
115- return "https://main.akevas/shop/ $ shop ->id " ;
73+ private function storeTempFileDirect ($ file , string $ path )
74+ {
75+ return $ file ->store ("temp/ $ path " , 'public ' );
11676 }
11777}
0 commit comments