File: /home/workzeni/agency-erp-05.workzenix.com/app/Http/Controllers/UserPayment.php
<?php
namespace App\Http\Controllers;
use App\Models\CompanyInfo;
use App\Models\Payment;
use App\Models\User;
use Storage;
use Illuminate\Http\Request;
class UserPayment extends Controller
{
public function create()
{
$agencies = CompanyInfo::latest()->get();
return view('payment.create', compact('agencies'));
}
public function getByAgency($agencyId)
{
return User::where('company_id', $agencyId)->get(['id', 'name', 'phone']);
}
public function store(Request $request)
{
// dd($request->all());
$request->validate([
'agency_id' => 'required|exists:company_infos,id',
'user_id' => 'required|exists:users,id',
'type' => 'required|in:cash,check,iban',
'bank_name' => 'nullable|string|max:255',
'amount' => 'required|numeric|min:1',
'transaction_id' => 'required|string',
'currency' => 'required|in:BDT,SAR',
'proof' => 'nullable|file|mimes:jpg,png,pdf|max:2048',
'additional' => 'nullable|string',
'paid' => 'date',
]);
$payment = new Payment;
$payment->agency_id = $request->agency_id;
$payment->user_id = $request->user_id;
$payment->type = $request->type;
$payment->bank_name = $request->bank_name;
$payment->amount = $request->amount;
$payment->transaction_id = $request->transaction_id;
$payment->currency = $request->currency;
$payment->additional = $request->additional;
$payment->paid = $request->paid ?? now();
if ($request->hasFile('proof')) {
$payment->proof = $request->file('proof')->store('payments', 'public');
}
$payment->save();
return redirect()->back()->with('success', 'Payment stored successfully.');
}
public function approve(Request $request, Payment $payment)
{
$payment->status = $request->status ?? 0;
$payment->save();
return back()->with('success', 'Payment status updated');
}
public function edit(Payment $payment)
{
$agencies = CompanyInfo::latest()->get();
return view('payment.edit', compact('payment', 'agencies'));
}
public function update(Request $request, Payment $payment)
{
// dd($request->all());
$request->validate([
'agency_id' => 'required|exists:company_infos,id',
'user_id' => 'required|exists:users,id',
'type' => 'required|in:cash,check,iban',
'bank_name' => 'nullable|string|max:255',
'amount' => 'required|numeric|min:1',
'transaction_id' => 'required|string',
'currency' => 'required|in:BDT,SAR',
'proof' => 'nullable|file|mimes:jpg,png,pdf|max:2048',
'additional' => 'nullable|string',
]);
$payment->agency_id = $request->agency_id;
$payment->user_id = $request->user_id;
$payment->type = $request->type;
$payment->bank_name = $request->bank_name;
$payment->amount = $request->amount;
$payment->transaction_id = $request->transaction_id;
$payment->currency = $request->currency;
$payment->additional = $request->additional;
if ($request->hasFile('proof')) {
$payment->proof = $request->file('proof')->store('payments', 'public');
}
$payment->save();
return redirect()->back()->with('success', 'Payment Updated successfully.');
}
public function delete(Payment $payment)
{
if ($payment->proof && Storage::disk('public')->exists($payment->proof)) {
Storage::disk('public')->delete($payment->proof);
}
$payment->delete();
return redirect()->back()->with('success', 'Payment deleted successfully.');
}
}