91 lines
2.8 KiB
PHP
91 lines
2.8 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('refunds.*')
|
|
->get()
|
|
]);
|
|
}
|
|
|
|
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
|
|
]);
|
|
}
|
|
}
|