Laravel Почему пользователь получил такое же письмо - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь отправить электронное письмо пользователю. Пользователи получают почту, но они получают ту же почту. Почему я сталкиваюсь с такой проблемой? Первый оператор if ссылается на пользователя, который зарегистрировал систему. Второй - это пользователь, который не выполнил вход слишком долго, а последний - это пользователь, который не использовал модуль. Каждый пользователь должен получать одно электронное письмо в день. Не более одного в день. Я пробовал много способов, но это не сработало. Кто-нибудь может помочь в этом?

 public function create() 
   {
         $users = User::where('user_type', 2)->get();
         $auto_email_templates=AutoEmailTemplate::all();
         $ModuleAutoMail=module_auto_mail::all();



    foreach ($users as $user) {
        foreach($auto_email_templates as $mail) {

            $email_id = $mail->id;
            $user_id = $user->id;


            if (!EmailSave::where('user_id',$user_id)->whereDate('created_at', Carbon::today())->exists()) {
                if( $user->created_at < Carbon::now()->subDays($mail->days)){  //check when the acc create

                    $ableToSendMail = false;

                    if ((EmailSave::where('email_id',$email_id)->where('user_id',$user_id)->count()< 1) || (EmailSave::where('email_id',$email_id)->where('user_id',$user_id)->whereDate('created_at', '>', Carbon::now()->addDays(30))->first())){  
                        $ableToSendMail = true;
                    }

                    if ($ableToSendMail) {
                        $mails = new EmailSave;
                        $mails->user_id = $user->id;
                        $mails->email_id =$mail->id;
                        Mail::to($user->email)->send(new Automail($mail));
                        $mails->save();
                    }
                }
                elseif ($user->last_sign_in < Carbon::now()->subDays($mail->days)) {

                            $ableToSendMail = false;

                        if ((EmailSave::where('email_id',$email_id)->where('user_id',$user_id)->count()< 1) || (EmailSave::where('email_id',$email_id)->where('user_id',$user_id)->whereDate('created_at', '>', Carbon::now()->addDays(30))->first())){  
                            $ableToSendMail = true;
                        }    
                        if ($ableToSendMail) {
                            $mails = new EmailSave;
                            $mails->user_id = $user->id;
                            $mails->email_id =$mail->id;
                            Mail::to($user->email)->send(new Automail($mail));
                            $mails->save();
                        }
                }
                else {
                    if( $user->last_used_module < Carbon::now()->subDays($mail->days))
                    {   
                        $ableToSendMail = false;
                    }
                        if (EmailSave::where('user_id',$user_id)->exists()){

                            $ableToSendMail = true;
                        }

                        if ($ableToSendMail) {

                            $mails = new EmailSave;
                            $mails->user_id = $user->id;
                            $mails->email_id =$mail->id;
                            Mail::to($user->email)->send(new Automail($mail));
                            $mails->save();

                        }
                }     
            }         
        }
    }
}
...