2
2
3
3
namespace Webkul \Admin \Http \Controllers \Settings \Marketing ;
4
4
5
+ use Exception ;
5
6
use Illuminate \Http \JsonResponse ;
6
7
use Illuminate \Support \Facades \Event ;
7
8
use Illuminate \View \View ;
@@ -80,11 +81,19 @@ public function update(int $id): JsonResponse
80
81
*/
81
82
public function destroy (int $ id ): JsonResponse
82
83
{
83
- Event:: dispatch ( ' settings.marketing.events.delete.before ' , $ id );
84
+ $ event = $ this -> eventRepository -> findOrFail ( $ id );
84
85
85
- $ this ->eventRepository ->delete ($ id );
86
+ if ($ event ->campaigns ->isNotEmpty ()) {
87
+ return response ()->json ([
88
+ 'message ' => trans ('admin::app.settings.marketing.events.index.delete-failed-associated-campaigns ' ),
89
+ ], 422 );
90
+ }
91
+
92
+ Event::dispatch ('settings.marketing.events.delete.before ' , $ event );
93
+
94
+ $ this ->eventRepository ->delete ($ event ->id );
86
95
87
- Event::dispatch ('settings.marketing.events.delete.after ' , $ id );
96
+ Event::dispatch ('settings.marketing.events.delete.after ' , $ event );
88
97
89
98
return response ()->json ([
90
99
'message ' => trans ('admin::app.settings.marketing.events.index.delete-success ' ),
@@ -94,20 +103,67 @@ public function destroy(int $id): JsonResponse
94
103
/**
95
104
* Remove the specified marketing events from storage.
96
105
*/
97
- public function massDestroy (MassDestroyRequest $ massDestroyRequest ): JsonResponse
106
+ public function massDestroy (MassDestroyRequest $ request ): JsonResponse
98
107
{
99
- $ marketingEvents = $ this ->eventRepository ->findWhereIn ('id ' , $ massDestroyRequest ->input ('indices ' ));
108
+ try {
109
+ $ events = $ this ->eventRepository ->findWhereIn ('id ' , $ request ->input ('indices ' , []));
100
110
101
- foreach ($ marketingEvents as $ marketingEvent ) {
102
- Event::dispatch ('settings.marketing.events.delete.before ' , $ marketingEvent );
111
+ $ deletedCount = 0 ;
103
112
104
- $ this -> eventRepository -> delete ( $ marketingEvent -> id ) ;
113
+ $ blockedCount = 0 ;
105
114
106
- Event::dispatch ('settings.marketing.events.delete.after ' , $ marketingEvent );
107
- }
115
+ foreach ($ events as $ event ) {
116
+ if (
117
+ $ event ->campaigns
118
+ && $ event ->campaigns ->isNotEmpty ()
119
+ ) {
120
+ $ blockedCount ++;
108
121
109
- return response ()->json ([
110
- 'message ' => trans ('admin::app.settings.marketing.events.index.mass-delete-success ' ),
111
- ]);
122
+ continue ;
123
+ }
124
+
125
+ Event::dispatch ('settings.marketing.events.delete.before ' , $ event );
126
+
127
+ $ this ->eventRepository ->delete ($ event ->id );
128
+
129
+ Event::dispatch ('settings.marketing.events.delete.after ' , $ event );
130
+
131
+ $ deletedCount ++;
132
+ }
133
+
134
+ $ statusCode = 200 ;
135
+
136
+ switch (true ) {
137
+ case $ deletedCount > 0 && $ blockedCount === 0 :
138
+ $ message = trans ('admin::app.settings.marketing.events.index.mass-delete-success ' );
139
+
140
+ break ;
141
+
142
+ case $ deletedCount > 0 && $ blockedCount > 0 :
143
+ $ message = trans ('admin::app.settings.marketing.events.index.partial-delete-warning ' );
144
+
145
+ break ;
146
+
147
+ case $ deletedCount === 0 && $ blockedCount > 0 :
148
+ $ message = trans ('admin::app.settings.marketing.events.index.none-delete-warning ' );
149
+
150
+ $ statusCode = 400 ;
151
+
152
+ break ;
153
+
154
+ default :
155
+ $ message = trans ('admin::app.settings.marketing.events.index.no-selection ' );
156
+
157
+ $ statusCode = 400 ;
158
+
159
+ break ;
160
+ }
161
+
162
+ return response ()->json (['message ' => $ message ], $ statusCode );
163
+ } catch (Exception $ e ) {
164
+ return response ()->json ([
165
+ 'message ' => trans ('admin::app.settings.marketing.events.index.mass-delete-failed ' ),
166
+ ], 400 );
167
+ }
112
168
}
113
169
}
0 commit comments