dashboard-admin/app/Http/Controllers/User/UserRefundController.php

90 lines
2.7 KiB
PHP

<?php
namespace App\Http\Controllers\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\RefundUser;
use App\Models\Refund;
use App\Models\RefundDescription;
use App\Models\Transaction;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Throwable;
class UserRefundController extends Controller
{
public function index()
{
return view('user.refund.index', [
'refunds' => Refund::join('transactions', 'refunds.transaction_id', '=', 'transactions.id')
->where('transactions.pembeli', auth()->user()->email)
->select()
]);
}
public function create($id)
{
return view('user.refund.new-refund',['id' => $id]);
}
public function store(Request $request, $id){
try{
DB::beginTransaction();
$transaction = Transaction::where('id',$id)->first();
$refund = Refund::create([
'transaction_id' => $id,
'total' => $transaction->harga,
'due_date' => $transaction,
'complain' => $request->complain
]);
if ($request->hasFile('files')) {
$files = $request->file('files');
foreach ($files as $file) {
$filename = $file->getClientOriginalName();
$mime = $file->getClientMimeType();
if (strpos($mime, 'image') !== false) {
$type = 'image';
$file->storeAs('public/refund-image/', $filename);
} elseif (strpos($mime, 'video') !== false) {
$type = 'video';
$file->storeAs('public/refund-video/', $filename);
} else {
$type = 'Other';
}
RefundDescription::create([
'refund_id' => $refund->id,
'filename' => $filename,
'type' => $type
]);
}
}
DB::commit();
}catch(Throwable $e){
DB::rollback();
Log::error($e->getMessage());
return response()->json(['success' => false, 'message' => 'Terjadi Kesalahan pada sisi server']);
}
}
public function show($id){
$refund = Refund::find($id);
$refundDescription = RefundDescription::where($id)->get();
return view('admin.refund.detail-refund',[
"refund"=> $refund,
'descriptions' => $refundDescription
]);
return view('user.refund.history-refund',[
'refund' => $refund,
'descriptions' => $refundDescription
]);
}
}