@@ -242,47 +242,93 @@ public function destroy(Request $request)
242
242
$ id = $ request ->id ;
243
243
$ user = User::with ('clients ' , 'tasks ' , 'leads ' )->findOrFail ($ id );
244
244
245
- if ($ request ->user_clients === $ id || $ request ->user_tasks === $ id || $ request ->user_leads = == $ id ) {
246
- Session ()->flash ('flash_error ' , 'You may not reassign clients, leads or tasks to the user you are deleting! ' );
245
+ if ($ request ->user_clients == $ id || $ request ->user_tasks == $ id || $ request ->user_leads == $ id ) {
246
+ Session ()->flash ('flash_message_warning ' , 'You may not reassign clients, leads or tasks to the user you are deleting. ' );
247
247
} else {
248
- // are we keeping her clients ?
249
- if ('' === $ request -> user_clients ) {
250
- // just delete all the clients related to this user
251
- foreach ( $ user -> clients as $ client ) {
252
- $ client ->delete ();
253
- }
254
- } else {
255
- // move all clients to new user
256
- foreach ( $ user -> clients () as $ client ) {
257
- $ client -> user_id = $ request -> user_clients ;
258
- $ client -> save ();
248
+ // are we keeping her tasks ?
249
+ if ($ user -> tasks ()-> count () > 0 ) {
250
+ if ( '' == $ request -> user_tasks ) {
251
+ // just delete all the tasks related to this user
252
+ $ user -> tasks () ->delete ();
253
+ } else {
254
+ // move all clients to new user
255
+ foreach ( $ user-> tasks as $ task ) {
256
+ $ task -> user_assigned_id = $ request -> user_tasks ;
257
+ $ task -> save () ;
258
+ }
259
259
}
260
260
}
261
261
262
- // are we keeping her tasks?
263
- if ('' === $ request ->user_tasks ) {
264
- // just delete all the tasks related to this user
265
- $ user ->tasks ()->delete ();
262
+ // clean up tasks created but not assigned to the user
263
+ $ tasks = Task::where ('user_created_id ' , $ id )->get ();
264
+ if ('' == $ request ->user_tasks ) {
265
+ foreach ($ tasks as $ task ) {
266
+ $ task ->user_created_id = $ task ->user_assigned_id ;
267
+ $ task ->save ();
268
+ }
266
269
} else {
267
- // move all clients to new user
268
- foreach ($ user ->tasks () as $ task ) {
269
- $ task ->user_id = $ request ->user_tasks ;
270
+ foreach ($ tasks as $ task ) {
271
+ $ task ->user_created_id = $ request ->user_tasks ;
270
272
$ task ->save ();
271
273
}
272
274
}
273
275
276
+ // refresh the user
277
+ $ user ->refresh ();
278
+
274
279
// are we keeping her leads?
275
- if ('' === $ request ->user_leads ) {
276
- // just delete all the leads related to this user
277
- $ user ->leads ()->delete ();
280
+ if ($ user ->leads ()->count () > 0 ) {
281
+ if ('' == $ request ->user_leads ) {
282
+ // just delete all the leads related to this user
283
+ $ user ->leads ()->delete ();
284
+ } else {
285
+ // move all clients to new user
286
+ foreach ($ user ->leads as $ lead ) {
287
+ $ lead ->user_assigned_id = $ request ->user_leads ;
288
+ $ lead ->save ();
289
+ }
290
+ }
291
+ }
292
+
293
+ // clean up leads created but not assigned to the user
294
+ $ leads = Lead::where ('user_created_id ' , $ id )->get ();
295
+ if ('' == $ request ->user_leads ) {
296
+ foreach ($ leads as $ lead ) {
297
+ $ lead ->user_created_id = $ lead ->user_assigned_id ;
298
+ $ lead ->save ();
299
+ }
278
300
} else {
279
- // move all clients to new user
280
- foreach ($ user ->leads () as $ lead ) {
281
- $ lead ->user_assigned_id = $ request ->user_leads ;
301
+ foreach ($ leads as $ lead ) {
302
+ $ lead ->user_created_id = $ request ->user_leads ;
282
303
$ lead ->save ();
283
304
}
284
305
}
285
306
307
+ // refresh the user
308
+ $ user ->refresh ();
309
+
310
+ // are we keeping her clients?
311
+ if ($ user ->clients ()->count () > 0 ) {
312
+ if ('' == $ request ->user_clients ) {
313
+ // just delete all the clients related to this user
314
+ foreach ($ user ->clients as $ client ) {
315
+ // clean out all remaining client tasks and leads
316
+ $ client ->tasks ()->delete ();
317
+ $ client ->leads ()->delete ();
318
+ $ client ->delete ();
319
+ }
320
+ } else {
321
+ // move all clients to new user
322
+ foreach ($ user ->clients as $ client ) {
323
+ $ client ->user_id = $ request ->user_clients ;
324
+ $ client ->save ();
325
+ }
326
+ }
327
+ }
328
+
329
+ // refresh the user one more time
330
+ $ user ->refresh ();
331
+
286
332
$ user ->delete ();
287
333
Session ()->flash ('flash_message ' , 'User successfully deleted ' );
288
334
}
0 commit comments