Dostlar şimdi şöyle açıklayayım bir ürün satıyoruz bu ürün formu doldurulana kadar satın aldığı tarihten itibaren 7 gün boyunca her gün 1 defa mail atması gerekiyor.
Mail doldurulunca benim mail atmayı kesmem gerekiyor. Doldurulan form verisi de FormData'da saklanıyor payment_id'si ile beraber.
Kullanıcı aynı ürünü 2 defa almış ise de formun 1'ini doldurup diğerini doldurmamış ise de Command ile yine günlük mail atmam gerekiyor 1 hafta boyunca sadece.
Aşağıda ki şekilde bir çok mantık düşündüm ama tam çıkamadım işin içinden. Bir fikir verebilir misiniz ?
$date=Carbon::now();
$userId=PaymentProduct::where('product_id',358)->groupBy('user_id')->get();
$paymentProductId=PaymentProduct::where('product_id',358)->pluck('id')->toArray();
$formProduct = Product::where('id', 358)
->whereNotNull('form_id')
->first();
if($formProduct)
{
$formDataCount = FormData::where('form_id', $formProduct->form_id)
->where('product_id',358)
->where('user_id', $userId)
->whereNotIn('payment_product_id',$paymentProductId)
->pluck('payment_product_id','form_id')
->toArray();
if($formDataCount!==$paymentProductId)
{
foreach ($userId as $user)
{
$emailSend= PaymentProduct::where('product_id',358)->where('last_analysis_date','>=',$date)->where('user_id',$user)->first();
if($emailSend) {
$mail=[
'full_name'=>$emailSend->user->full_name,
'email'=>$emailSend->user->email,
'form_id'=>$formProduct->form_id,
];
if($mail) {
Mail::queue(new QnbIntegrationMail($mail));
}
}
}
}
}