Я пытаюсь отправить электронное письмо пользователю. Пользователи получают почту, но они получают ту же почту. Почему я сталкиваюсь с такой проблемой? Первый оператор 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();
}
}
}
}
}
}