diff --git a/be/app/Listeners/SendDeletedSubTaskNotification.php b/be/app/Listeners/SendDeletedSubTaskNotification.php index 129d87b..efb287d 100644 --- a/be/app/Listeners/SendDeletedSubTaskNotification.php +++ b/be/app/Listeners/SendDeletedSubTaskNotification.php @@ -28,7 +28,10 @@ class SendDeletedSubTaskNotification public function handle(SubTaskDeleted $event) { $receiversArray[] = $event->subtask->user->email; - $receiversArray[] = \App\Models\User::find($event->subtask->created_by)->email; + $creator = \App\Models\User::find($event->subtask->created_by); + + if ($creator) + $receiversArray[] = $creator->email; Mail::to( $receiversArray )->send( new \App\Mail\SubTaskDeleted( $event->subtask ) ); } diff --git a/be/app/Listeners/SendEditedSubTaskNotification.php b/be/app/Listeners/SendEditedSubTaskNotification.php index 3313096..d35f9c0 100644 --- a/be/app/Listeners/SendEditedSubTaskNotification.php +++ b/be/app/Listeners/SendEditedSubTaskNotification.php @@ -59,10 +59,11 @@ class SendEditedSubTaskNotification implements ShouldQueue // ukoncenie sub tasku - Pokiaľ je sub task ukončený s vyšším počtom vykázaných hodín ako bol pôvodne zadaný, posiela sa e-mailová notifikácia o tejto skutočnosti zadávateľovi master tasku (soft warning). if ($key == 'is_finished' && $diff == 1 && $event->subtask->tracked_time > $event->subtask->estimated_time) { - $creatorEmail = User::find($event->subtask->created_by)->email; - - Mail::to( $creatorEmail )->send( new \App\Mail\SubTaskFinishedWithHigherTrackedTime( $event->subtask ) ); + $creator = User::find($event->subtask->created_by); + if ($creator) { + Mail::to( $creator->email )->send( new \App\Mail\SubTaskFinishedWithHigherTrackedTime( $event->subtask ) ); + } } $difference[$key] = $diff; diff --git a/be/app/Listeners/SendFinishedTimeBlockNotification.php b/be/app/Listeners/SendFinishedTimeBlockNotification.php index f4f3c9b..d1a35f4 100644 --- a/be/app/Listeners/SendFinishedTimeBlockNotification.php +++ b/be/app/Listeners/SendFinishedTimeBlockNotification.php @@ -28,8 +28,11 @@ class SendFinishedTimeBlockNotification implements ShouldQueue */ public function handle(TimeBlockFinished $event) { - $receiver = User::find($event->timeblock->subtask->created_by)->email; + $receiver = User::find($event->timeblock->subtask->created_by); - Mail::to( $receiver )->send( new \App\Mail\TimeBlockFinished( $event->timeblock->subtask ) ); + // pripad ked bol user soft deletnuty + if (!$receiver ) return; + + Mail::to( $receiver->email )->send( new \App\Mail\TimeBlockFinished( $event->timeblock->subtask ) ); } } diff --git a/be/app/Models/Blocker.php b/be/app/Models/Blocker.php index 212fe7a..f3b73c2 100644 --- a/be/app/Models/Blocker.php +++ b/be/app/Models/Blocker.php @@ -15,7 +15,7 @@ class Blocker extends Model public function user() { - return $this->belongsTo(User::class); + return $this->belongsTo(User::class)->withTrashed(); } public function getColorAttribute() diff --git a/be/app/Models/MasterTask.php b/be/app/Models/MasterTask.php index 84c9410..a685833 100644 --- a/be/app/Models/MasterTask.php +++ b/be/app/Models/MasterTask.php @@ -35,18 +35,16 @@ class MasterTask extends Model // vracia userov, ktori su priradeni k subtasku ale nepatria do teamu public function getUsersOutsideTeamAttribute() { + $users = $this->subtasks->pluck('user')->unique(); - //remove null values - priprady, kedy bol user zmazany - $users = $users->filter(); - // ak nie je uvedeny ziaden team, tak sa vratia vsetci useri if (!$this->team){ return $users; } return $users->filter(function ($user) { - return !in_array($this->team->id, isset($user->teams) ? $user->teams->pluck('id')->unique()->toArray() : []); + return !in_array($this->team->id, $user->teams->pluck('id')->unique()->toArray()); }); } diff --git a/be/app/Models/SubTask.php b/be/app/Models/SubTask.php index 3ee4c5f..cc02db2 100644 --- a/be/app/Models/SubTask.php +++ b/be/app/Models/SubTask.php @@ -20,7 +20,7 @@ class SubTask extends Model public function user() { - return $this->belongsTo(User::class); + return $this->belongsTo(User::class)->withTrashed(); } public function timeblocks() diff --git a/be/app/Models/Team.php b/be/app/Models/Team.php index 92663f1..fd2aefd 100644 --- a/be/app/Models/Team.php +++ b/be/app/Models/Team.php @@ -15,6 +15,6 @@ class Team extends Model public function users() { - return $this->belongsToMany(User::class); + return $this->belongsToMany(User::class)->withTrashed(); } } diff --git a/be/app/Models/Timesheet.php b/be/app/Models/Timesheet.php index c32ad34..dfd41d4 100644 --- a/be/app/Models/Timesheet.php +++ b/be/app/Models/Timesheet.php @@ -22,6 +22,6 @@ class Timesheet extends Model public function user() { - return $this->belongsTo(User::class); + return $this->belongsTo(User::class)->withTrashed(); } } diff --git a/be/app/Models/User.php b/be/app/Models/User.php index 921c465..72259e1 100644 --- a/be/app/Models/User.php +++ b/be/app/Models/User.php @@ -2,18 +2,16 @@ namespace App\Models; -use App\Mail\PasswordReset; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; -use Illuminate\Http\Request; use Illuminate\Notifications\Notifiable; -use Illuminate\Support\Facades\Mail; use Laravel\Sanctum\HasApiTokens; use Laravel\Sanctum\PersonalAccessToken; +use Illuminate\Database\Eloquent\SoftDeletes; class User extends Authenticatable { - use HasApiTokens, HasFactory, Notifiable; + use HasApiTokens, HasFactory, Notifiable, SoftDeletes; /** * The attributes that are mass assignable. diff --git a/be/database/migrations/2023_07_13_070922_add_softdelete_to_users.php b/be/database/migrations/2023_07_13_070922_add_softdelete_to_users.php new file mode 100644 index 0000000..19b19b1 --- /dev/null +++ b/be/database/migrations/2023_07_13_070922_add_softdelete_to_users.php @@ -0,0 +1,32 @@ +softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + // + }); + } +};