register, Grundpreis

This commit is contained in:
Kevin Adametz 2020-04-01 15:35:11 +02:00
parent f06d2d15a5
commit 8e4bb0c2f6
32 changed files with 965 additions and 216 deletions

View file

@ -2,9 +2,13 @@
namespace App\Http\Controllers;
use App\Mail\MailCustomMessage;
use App\Mail\MailVerifyAccount;
use App\Models\UserHistory;
use App\Models\UserMessage;
use App\Repositories\UserRepository;
use App\User;
use Carbon;
use Illuminate\Support\Facades\Mail;
@ -34,6 +38,15 @@ class CronController extends Controller
//Mail reminder
}
public function action($action = false, $key = false){
if($key !== 'key'){
abort(404);
}
if($action === 'check_payments_account'){
$this->checkPaymentsAccounts();
}
}
/**
* Show the application dashboard.
*
@ -61,10 +74,180 @@ class CronController extends Controller
$user->save();
}
}
die("okay");
}
public function checkPaymentsAccounts(){
/*RULES
reminders
> 21 remind_first_days = 31 reminder_first
> 21 remind_first_days + sepa = 32 reminder_first_sepa
> 14 remind_sec_days = 33 reminder_sec
> 2 remind_last_days = 34 reminder_last
> 0 deaktiv = 35 reminder_deaktiv
> 0 deaktiv + sepa = 36 reminder_deaktiv_sepa
== 7 abo_booking_days + sepa + cron = 37 reminder_collect_sepa
*/
//max Date for reminder
$renewalDate = Carbon::now()->modify('+'.(config('mivita.remind_first_days')+1).' days');
dump($renewalDate);
$users = User::where('payment_account', '!=', NULL)
->where('active', '=', 1)
->where('blocked', '!=', 1)
->where('payment_account', '<', $renewalDate)
->get();
$user = User::find(2);
/* $this->checkReminderPayments($user);
dump($user->daysActiveAccount());
dump($user->email." | ".$user->getPaymentAccountDateFormat());
die();*/
foreach ($users as $user){
//$this->checkReminderPayments($user);
// dump($user->nextRenewalAccount());
//$userHistoryWizardPayment = UserHistory::whereUserId($user->id)->whereAction('wizard_payment')->get()->last();
//UserHistory::create(['user_id' => $user->id, 'action'=>'released_completed', 'status'=>0]);
dump($user->daysActiveAccount());
dump($user->email." | ".$user->getPaymentAccountDateFormat());
}
die("");
}
private function checkReminderPayments(User $user){
$isSend = $this->checkIsReminderSend($user, 31);
$isSend = $this->checkIsReminderSend($user, 32);
$isSend = $this->checkIsReminderSend($user, 33);
$isSend = $this->checkIsReminderSend($user, 34);
$isSend = $this->checkIsReminderSend($user, 35);
$isSend = $this->checkIsReminderSend($user, 36);
return ;
//35 reminder_deaktiv, 36 reminder_deaktiv_sepa
if(!$user->isActiveAccount()){
if($user->isAboOption()){
$isSend = $this->checkIsReminderSend($user, 35);
return $isSend;
}
$isSend = $this->checkIsReminderSend($user, 36);
return $isSend;
}
//34 reminder_last
if($user->daysActiveAccount() <= config('mivita.remind_last_days')){
$isSend = $this->checkIsReminderSend($user, 34);
return $isSend;
}
//33 reminder_sec
if($user->daysActiveAccount() <= config('mivita.remind_sec_days')){
if(!$user->isAboOption()){
$isSend = $this->checkIsReminderSend($user, 33);
return $isSend;
}
}
//31 reminder_first, 32 reminder_first_sepa
if($user->daysActiveAccount() > config('mivita.remind_sec_days')){
if($user->isAboOption()){
$isSend = $this->checkIsReminderSend($user, 32);
return $isSend;
}
$isSend = $this->checkIsReminderSend($user, 31);
return $isSend;
}
}
private function checkIsReminderSend(User $user, $status){
$isSend = UserHistory::whereUserId($user->id)
->whereAction('reminder_payments')
->whereIdentifier($user->payment_account)
->whereStatus($status)
->get()->last();
if($isSend){
// return true;
}
$referenz = $this->sendReminderMail($user, $status);
//is not sent create
UserHistory::create(['user_id' => $user->id, 'action'=>'reminder_payments', 'referenz'=>$referenz, 'identifier'=>$user->payment_account, 'status'=>$status]);
return false;
}
private function sendReminderMail(User $user, $status){
$days = $user->daysActiveAccount();
if($days < 0){
$days = $days*-1;
}
$pay_date = Carbon::parse($user->payment_account)->modify('- '.config('mivita.abo_booking_days').' days')->format('d.m.Y');
$datetime = $user->getPaymentAccountDateFormat();
$price = "";
if($user->payment_order_id && isset($user->payment_order_product->price)){
$price = 'von '.$user->payment_order_product->getFormattedPrice().' EUR';
}
$message = __('reminder.copy_first_'.$status, ['days'=>$days, 'datetime'=>$datetime, 'price' =>$price, 'pay_date'=>$pay_date]);
$message_last = __('reminder.copy_last_'.$status, ['days'=>$days, 'datetime'=>$datetime, 'price' =>$price, 'pay_date'=>$pay_date]);
$button = __('reminder.button_'.$status);
$message = preg_replace("/[\n\r]/","",$message);
$message_last = preg_replace("/[\n\r]/","",$message_last);
$data = [
'subject' => __('reminder.subject')." | ID: ".$status,
'message' => $message,
'message_last' => $message_last,
'url' => route('user_membership'),
'button' => $button,
];
dump($data);
$sender = User::find(1);
$customer_mail = UserMessage::create([
'user_id' => $user->id,
'send_user_id' => $sender->id,
'email' => $user->email,
'subject' => $data['subject'],
'message' => $data['message']." ".$data['message_last'],
]);
try{
Mail::to($user->email)->send(new MailCustomMessage($user, $data, $sender, false));
}
catch(\Exception $e){
\Log::channel('cron')->error('Mail Error: '.$e->getMessage());
// Never reached
$customer_mail->fail = true;
$customer_mail->error = $e->getMessage();
$customer_mail->save();
return 0;
}
$customer_mail->send = true;
$customer_mail->sent_at = now();
$customer_mail->save();
return 1;
}
}