commit 08-2025

This commit is contained in:
Kevin Adametz 2025-08-12 15:51:04 +02:00
parent 9b54eb0512
commit 02f2a4c23e
184 changed files with 31653 additions and 22327 deletions

View file

@ -0,0 +1,147 @@
<?php
namespace App\Http\Controllers;
use Carbon;
use Request;
use App\Models\PaymentReminder;
use App\Models\ShoppingPayment;
use App\Services\PaymentReminderService;
class PaymentReminderController extends Controller
{
private $filter_user_status;
private $paymentReminderService;
public function __construct(PaymentReminderService $paymentReminderService)
{
$this->middleware('auth');
$this->paymentReminderService = $paymentReminderService;
}
public function index()
{
// Hole die detaillierten Daten für die Tabellen-Ansicht
$detailedData = $this->paymentReminderService->getDetailedPaymentsData();
// $summaryData = $this->paymentReminderService->getAllOpenPayments();
// Statistiken für die Übersicht
$totalPayments = collect($detailedData)->count();
$totalAmount = collect($detailedData)->sum('amount')/100;
$clearingTypes = collect($detailedData)->groupBy('clearingtype')->map->count();
$data = [
'reminders' => PaymentReminder::all(),
'detailedData' => $detailedData,
//'summaryData' => $summaryData,
'totalPayments' => $totalPayments,
'totalAmount' => $totalAmount,
'clearingTypes' => $clearingTypes,
];
return view('admin.payment.reminder.index', $data);
}
public function create()
{
$reminder = new PaymentReminder();
$reminder->active = true;
$data = [
'reminder' => $reminder,
];
return view('admin.payment.reminder.edit', $data);
}
public function edit($id)
{
$data = [
'reminder' => PaymentReminder::find($id),
];
return view('admin.payment.reminder.edit', $data);
}
public function store()
{
$data = Request::all();
$data['active'] = isset($data['active']) ? true : false;
$data['action'] = isset($data['action']) ? $data['action'] : NULL;
if ($data['id'] === 'new') {
PaymentReminder::create($data);
} else {
$reminder = PaymentReminder::find($data['id']);
$reminder->update($data);
}
return redirect()->route('admin_payments_reminder')->with('success', 'Erinnerung gespeichert');
}
public function action($action, $id)
{
$payment = ShoppingPayment::find($id);
if($action == 'send_reminder'){
$bool = $this->paymentReminderService->sendReminder($payment);
if($bool){
\Session()->flash('alert-success', "Zahlungserinnerung gesendet");
}else{
\Session()->flash('alert-error', "Keine Zahlungserinnerung gesendet");
}
}
if($action == 'no_payment'){
$this->paymentReminderService->setNoNPayment($payment);
\Session()->flash('alert-success', "Zahlung als nicht bezahlt markiert");
}
return redirect()->route('admin_payments_reminder');
}
public function delete($id)
{
$reminder = PaymentReminder::find($id);
$reminder->delete();
return redirect()->route('admin_payments_reminder');
}
public function logs()
{
// Hole die Log-Statistiken für verschiedene Zeiträume
$stats7Days = $this->paymentReminderService->getLogStatistics(7);
$stats30Days = $this->paymentReminderService->getLogStatistics(30);
$stats90Days = $this->paymentReminderService->getLogStatistics(90);
// Hole die neuesten Logs
$recentLogs = $this->paymentReminderService->getPaymentReminderLogs(50);
// Filter-Parameter
$orderId = Request::get('order_id');
$action = Request::get('action');
$startDate = Request::get('start_date');
$endDate = Request::get('end_date');
// Gefilterte Logs
$filteredLogs = null;
if ($orderId || $action || $startDate || $endDate) {
if ($startDate && $endDate) {
$filteredLogs = $this->paymentReminderService->getLogsForDateRange($startDate, $endDate);
} elseif ($orderId) {
$filteredLogs = $this->paymentReminderService->getLogsForPayment($orderId);
} elseif ($action) {
$filteredLogs = $this->paymentReminderService->getPaymentReminderLogs(100, null, $action);
}
}
$data = [
'stats7Days' => $stats7Days,
'stats30Days' => $stats30Days,
'stats90Days' => $stats90Days,
'recentLogs' => $recentLogs,
'filteredLogs' => $filteredLogs,
'orderId' => $orderId,
'action' => $action,
'startDate' => $startDate,
'endDate' => $endDate,
];
return view('admin.payment.reminder.logs', $data);
}
}