diff --git a/app/Console/Commands/TriggerPendingApprovalMails.php b/app/Console/Commands/TriggerPendingApprovalMails.php index 97d2781..480c987 100644 --- a/app/Console/Commands/TriggerPendingApprovalMails.php +++ b/app/Console/Commands/TriggerPendingApprovalMails.php @@ -42,7 +42,6 @@ class TriggerPendingApprovalMails extends Command public $wfId; - public function handle() { $this->info('Approval mail job started'); @@ -74,165 +73,163 @@ class TriggerPendingApprovalMails extends Command }); if ($records->isEmpty()) { - $this->info('No pending approvals'); - return; - } + $this->info('No characteristics pending approvals'); + }else{ + $grouped = $records->groupBy(function ($item) { + $this->wfId = $item->work_flow_id; + return $item->plant_id . '|' . $item->machine_id . '|' . $item->aufnr . '|' . $item->work_flow_id; + }); - $grouped = $records->groupBy(function ($item) { - $this->wfId = $item->work_flow_id; - return $item->plant_id . '|' . $item->machine_id . '|' . $item->aufnr . '|' . $item->work_flow_id; - }); + $pendingApprovers = RequestCharacteristic::where('work_flow_id', $this->wfId)->latest()->first(); - $pendingApprovers = RequestCharacteristic::where('work_flow_id', $this->wfId)->latest()->first(); - - $this->info($pendingApprovers->approver_status1, $pendingApprovers->approver_status2); + $this->info($pendingApprovers->approver_status1, $pendingApprovers->approver_status2); - $approverNameFromMaster = null; - if ($pendingApprovers && $pendingApprovers->characteristic_approver_master_id) { - $approverNameFromMaster = CharacteristicApproverMaster::find($pendingApprovers->characteristic_approver_master_id); - } - - $rows = []; - - foreach ($grouped as $groupRecords) { - - $first = $groupRecords->first(); - - $approver = CharacteristicApproverMaster::where('plant_id', $first->plant_id) - ->where('machine_id', $first->machine_id) - ->where('id', $first->characteristic_approver_master_id) - ->first(); - - if (!$approver) { - continue; + $approverNameFromMaster = null; + if ($pendingApprovers && $pendingApprovers->characteristic_approver_master_id) { + $approverNameFromMaster = CharacteristicApproverMaster::find($pendingApprovers->characteristic_approver_master_id); } - $characteristics = $groupRecords->map(fn ($r) => [ - 'work_flow_id' => $r->work_flow_id, - 'characteristic_name' => $r->characteristic_name, - 'current_value' => $r->current_value, - 'update_value' => $r->update_value, - ])->toArray(); + $rows = []; - $level = null; - $mail = null; - $name = null; - $updateData = []; - $now = Carbon::now(); + foreach ($grouped as $groupRecords) { - // --- FIRST MAIL --- - if (is_null($first->mail_status)){ - $level = 1; - $mail = $approver->mail1; - $name = $approver->name1; + $first = $groupRecords->first(); - $updateData['mail_status'] = 'Sent'; + $approver = CharacteristicApproverMaster::where('plant_id', $first->plant_id) + ->where('machine_id', $first->machine_id) + ->where('id', $first->characteristic_approver_master_id) + ->first(); - if ($approver->duration1 > 0) - { - - $duration = number_format((float)$approver->duration1, 2, '.', ''); - [$hours, $minutes] = explode('.', $duration); - - $totalMinutes = ((int)$hours * 60) + (int)$minutes; - - $updateData['trigger_at'] = $now - ->copy() - ->addMinutes($totalMinutes) - ->startOfMinute(); + if (!$approver) { + continue; } - else - { + + $characteristics = $groupRecords->map(fn ($r) => [ + 'work_flow_id' => $r->work_flow_id, + 'characteristic_name' => $r->characteristic_name, + 'current_value' => $r->current_value, + 'update_value' => $r->update_value, + ])->toArray(); + + $level = null; + $mail = null; + $name = null; + $updateData = []; + $now = Carbon::now(); + + // --- FIRST MAIL --- + if (is_null($first->mail_status)){ + $level = 1; + $mail = $approver->mail1; + $name = $approver->name1; + + $updateData['mail_status'] = 'Sent'; + + if ($approver->duration1 > 0) + { + + $duration = number_format((float)$approver->duration1, 2, '.', ''); + [$hours, $minutes] = explode('.', $duration); + + $totalMinutes = ((int)$hours * 60) + (int)$minutes; + + $updateData['trigger_at'] = $now + ->copy() + ->addMinutes($totalMinutes) + ->startOfMinute(); + } + else + { + $updateData['trigger_at'] = null; + } + } + + // --- SECOND MAIL --- + elseif ( + $first->mail_status == 'Sent' && + (is_null($first->approver_status1) || $first->approver_status1 == 'Hold') && + $first->trigger_at && + \Carbon\Carbon::parse($first->trigger_at)->lte($now) + ) { + + $this->info( + "mail_status: {$first->mail_status}, ". + "approver_status1: {$first->approver_status1}, ". + "trigger_at: {$first->trigger_at}, ". + "now: {$now}" + ); + + $level = 2; + $mail = $approver->mail2; + $name = $approver->name2; + + if ($approver->duration2 > 0) { + + $duration = number_format((float)$approver->duration2, 2, '.', ''); + [$hours, $minutes] = explode('.', $duration); + + $totalMinutes = ((int)$hours * 60) + (int)$minutes; + + $updateData['trigger_at'] = $now->copy()->addMinutes($totalMinutes); + } else { + $updateData['trigger_at'] = null; + } + + $updateData['mail_status'] = 'Sent-Mail2'; + } + + // --- THIRD MAIL --- + elseif ( + $first->mail_status == 'Sent-Mail2' && + (is_null($first->approver_status1) || $first->approver_status1 == 'Hold') && + (is_null($first->approver_status2) || $first->approver_status2 == 'Hold') && + $first->trigger_at && + \Carbon\Carbon::parse($first->trigger_at)->lte($now) + ) { + $level = 3; + $mail = $approver->mail3; + $name = $approver->name3; + $updateData['trigger_at'] = null; + $updateData['mail_status'] = 'Sent-Mail3'; } - } - // --- SECOND MAIL --- - elseif ( - $first->mail_status == 'Sent' && - (is_null($first->approver_status1) || $first->approver_status1 == 'Hold') && - $first->trigger_at && - \Carbon\Carbon::parse($first->trigger_at)->lte($now) - ) { + if (!$level || !$mail) { + continue; + } - $this->info( - "mail_status: {$first->mail_status}, ". - "approver_status1: {$first->approver_status1}, ". - "trigger_at: {$first->trigger_at}, ". - "now: {$now}" + $pdfPath = 'uploads/LaserDocs/' . $first->work_flow_id . '.pdf'; + + $subjectLine = 'Characteristic Approval Mail'; + + Mail::to($mail)->send( + new CharacteristicApprovalMail( + $first, + $name, + $level, + $pdfPath, + $pendingApprovers, + $approverNameFromMaster, + $subjectLine, + $characteristics + ) ); - $level = 2; - $mail = $approver->mail2; - $name = $approver->name2; + RequestCharacteristic::whereIn('id', $groupRecords->pluck('id')) + ->update($updateData); - if ($approver->duration2 > 0) { - - $duration = number_format((float)$approver->duration2, 2, '.', ''); - [$hours, $minutes] = explode('.', $duration); - - $totalMinutes = ((int)$hours * 60) + (int)$minutes; - - $updateData['trigger_at'] = $now->copy()->addMinutes($totalMinutes); - } else { - $updateData['trigger_at'] = null; - } - - $updateData['mail_status'] = 'Sent-Mail2'; + $rows[] = [ + $first->id, + $first->plant_id, + $first->machine_id, + "Level $level", + $mail, + 'SENT' + ]; } - - // --- THIRD MAIL --- - elseif ( - $first->mail_status == 'Sent-Mail2' && - (is_null($first->approver_status1) || $first->approver_status1 == 'Hold') && - (is_null($first->approver_status2) || $first->approver_status2 == 'Hold') && - $first->trigger_at && - \Carbon\Carbon::parse($first->trigger_at)->lte($now) - ) { - $level = 3; - $mail = $approver->mail3; - $name = $approver->name3; - - $updateData['trigger_at'] = null; - $updateData['mail_status'] = 'Sent-Mail3'; - } - - if (!$level || !$mail) { - continue; - } - - $pdfPath = 'uploads/LaserDocs/' . $first->work_flow_id . '.pdf'; - - $subjectLine = 'Characteristic Approval Mail'; - - Mail::to($mail)->send( - new CharacteristicApprovalMail( - $first, - $name, - $level, - $pdfPath, - $pendingApprovers, - $approverNameFromMaster, - $subjectLine, - $characteristics - ) - ); - - RequestCharacteristic::whereIn('id', $groupRecords->pluck('id')) - ->update($updateData); - - $rows[] = [ - $first->id, - $first->plant_id, - $first->machine_id, - "Level $level", - $mail, - 'SENT' - ]; } - // .. Quality Mail trigger logic $qualityRecords = RequestCharacteristic::where(function ($q) { @@ -382,8 +379,8 @@ class TriggerPendingApprovalMails extends Command $pdfPath, $pendingApprovers, $approverNameFromMaster, - $subjectLine, - $characteristics + $subjectLine + // $characteristics ) );