5
5
namespace App \Console \Commands \Connectors \ESim ;
6
6
7
7
use Baka \Traits \KanvasJobsTrait ;
8
+ use Exception ;
8
9
use Illuminate \Console \Command ;
9
- use Kanvas \Apps \Models \Apps ;
10
- use Kanvas \Regions \Models \Regions ;
11
- use Kanvas \Companies \Models \Companies ;
12
- use Kanvas \Connectors \ESim \Actions \ImportOrderFromCsvAction ;
13
- use Kanvas \Users \Repositories \UsersRepository ;
14
- use Kanvas \Guild \Customers \Actions \CreatePeopleAction ;
15
- use Kanvas \Souk \Orders \Enums \OrderStatusEnum ;
16
- use League \Csv \Reader ;
17
10
use Illuminate \Support \Facades \Http ;
18
11
use Illuminate \Support \Facades \Storage ;
19
12
use Illuminate \Support \Str ;
20
- use Kanvas \Souk \Orders \DataTransferObject \Order as OrderDTO ;
21
- use Kanvas \Guild \Customers \Repositories \PeoplesRepository ;
13
+ use Kanvas \Apps \Models \Apps ;
14
+ use Kanvas \Companies \Models \Companies ;
15
+ use Kanvas \Connectors \ESim \Enums \CustomFieldEnum ;
16
+ use Kanvas \Currencies \Models \Currencies ;
17
+ use Kanvas \Guild \Customers \Actions \CreatePeopleAction ;
18
+ use Kanvas \Guild \Customers \DataTransferObject \Address ;
19
+ use Kanvas \Guild \Customers \DataTransferObject \Contact ;
22
20
use Kanvas \Guild \Customers \DataTransferObject \People as PeopleDTO ;
23
21
use Kanvas \Guild \Customers \Enums \ContactTypeEnum ;
24
- use Kanvas \Guild \Customers \DataTransferObject \Contact ;
25
- use Kanvas \Guild \Customers \DataTransferObject \Address ;
26
- use Spatie \LaravelData \DataCollection ;
27
- use Kanvas \Users \Models \Users ;
28
- use Kanvas \Currencies \Models \Currencies ;
29
- use Kanvas \Souk \Orders \DataTransferObject \OrderItem ;
22
+ use Kanvas \Guild \Customers \Repositories \PeoplesRepository ;
30
23
use Kanvas \Inventory \Variants \Models \Variants ;
31
- use Kanvas \Souk \ Orders \ Models \Order ;
24
+ use Kanvas \Regions \ Models \Regions ;
32
25
use Kanvas \Souk \Orders \Actions \CreateOrderAction ;
33
- use Exception ;
26
+ use Kanvas \Souk \Orders \DataTransferObject \Order as OrderDTO ;
27
+ use Kanvas \Souk \Orders \DataTransferObject \OrderItem ;
28
+ use Kanvas \Souk \Orders \Enums \OrderStatusEnum ;
29
+ use Kanvas \Souk \Orders \Models \Order ;
30
+ use Kanvas \Users \Models \Users ;
31
+ use Kanvas \Users \Repositories \UsersRepository ;
32
+ use League \Csv \Reader ;
33
+ use Spatie \LaravelData \DataCollection ;
34
34
35
35
class ImporOrderFromCsvCommand extends Command
36
36
{
37
+ use KanvasJobsTrait;
37
38
public Apps $ app ;
38
39
public Companies $ company ;
39
40
public Regions $ region ;
40
41
public Users $ user ;
41
42
public string $ url ;
42
- use KanvasJobsTrait;
43
- protected $ signature = "kanvas:import-order-from-csv {app_id} {company_id} {region_id} {user_id} {url} " ;
44
-
43
+ protected $ signature = 'kanvas:import-order-from-csv {app_id} {company_id} {region_id} {user_id} {url} ' ;
45
44
46
45
public function handle (): void
47
46
{
48
- $ this ->app = Apps::getById ($ this ->argument (" app_id " ));
49
- $ this ->company = Companies::getById ($ this ->argument (" company_id " ));
50
- $ this ->region = Regions::getById ($ this ->argument (" region_id " ));
51
- $ this ->user = UsersRepository::getUserOfAppById ((int )$ this ->argument (" user_id " ), $ this ->app );
52
- $ this ->url = $ this ->argument (" url " );
47
+ $ this ->app = Apps::getById ($ this ->argument (' app_id ' ));
48
+ $ this ->company = Companies::getById ($ this ->argument (' company_id ' ));
49
+ $ this ->region = Regions::getById ($ this ->argument (' region_id ' ));
50
+ $ this ->user = UsersRepository::getUserOfAppById ((int )$ this ->argument (' user_id ' ), $ this ->app );
51
+ $ this ->url = $ this ->argument (' url ' );
53
52
$ this ->process ();
54
53
}
55
54
@@ -63,7 +62,7 @@ public function process(): void
63
62
Storage::put ("downloads/ {$ fileName }" , $ response ->body ());
64
63
$ path = Storage::path ("downloads/ {$ fileName }" );
65
64
} else {
66
- $ this ->error (" Error al descargar el archivo. " );
65
+ $ this ->error (' Failed to download the file. ' );
67
66
}
68
67
$ reader = Reader::createFromPath ($ path , 'r ' );
69
68
$ reader ->setHeaderOffset (0 );
@@ -74,9 +73,10 @@ public function process(): void
74
73
$ app = $ this ->app ;
75
74
$ company = $ this ->company ;
76
75
foreach ($ collection as $ order ) {
77
- $ kanvasOrder = Order::getByCustomField (' order_reference ' , $ order ['order_reference ' ], $ company );
76
+ $ kanvasOrder = Order::getByCustomField (CustomFieldEnum:: WOOCOMMERCE_ORDER_ID -> value , $ order ['order_reference ' ], $ company );
78
77
if ($ kanvasOrder ) {
79
78
$ this ->info ('Order already exists: ' . $ kanvasOrder ->order_number );
79
+
80
80
continue ;
81
81
}
82
82
$ items = $ collection ->where ('order_reference ' , $ order ['order_reference ' ]);
@@ -102,6 +102,7 @@ public function process(): void
102
102
currency: Currencies::getByCode ('USD ' ),
103
103
quantityShipped: 0
104
104
);
105
+
105
106
return $ orderItem ;
106
107
}
107
108
}
@@ -112,8 +113,8 @@ public function process(): void
112
113
[
113
114
'value ' => $ order ['email ' ],
114
115
'contacts_types_id ' => ContactTypeEnum::EMAIL ->value ,
115
- 'weight ' => 0
116
- ]
116
+ 'weight ' => 0 ,
117
+ ],
117
118
];
118
119
$ name = explode (' ' , $ order ['name ' ]);
119
120
$ peopleDto = new PeopleDTO (
@@ -131,6 +132,7 @@ public function process(): void
131
132
}
132
133
$ total = $ items ->sum ('price ' );
133
134
$ items = OrderItem::collect ($ items , DataCollection::class);
135
+
134
136
try {
135
137
$ user = UsersRepository::getByEmail ($ order ['email ' ]);
136
138
} catch (Exception $ e ) {
@@ -151,12 +153,12 @@ public function process(): void
151
153
'status ' => OrderStatusEnum::COMPLETED ->value ,
152
154
'checkoutToken ' => '' ,
153
155
'currency ' => Currencies::getByCode ('USD ' ),
154
- 'items ' => $ items
156
+ 'items ' => $ items,
155
157
]);
156
158
$ action = new CreateOrderAction ($ dto );
157
159
$ action ->disableWorkflow ();
158
160
$ kanvasOrder = $ action ->execute ();
159
- $ kanvasOrder ->set (' order_reference ' , $ order ['order_reference ' ]);
161
+ $ kanvasOrder ->set (CustomFieldEnum:: WOOCOMMERCE_ORDER_ID -> value , $ order ['order_reference ' ]);
160
162
$ this ->info ("Order created: {$ kanvasOrder ->order_number }\n" );
161
163
}
162
164
}
0 commit comments