orderBy('created_at', 'desc') ->get() ->map(function ($card) { return [ 'id' => $card->id, 'cardName' => $card->card_name, 'cardCompany' => $card->card_company, 'cardNumber' => $card->card_number, 'cardType' => $card->card_type, 'paymentDay' => $card->payment_day, 'creditLimit' => (float) $card->credit_limit, 'currentUsage' => (float) $card->current_usage, 'cardHolderName' => $card->card_holder_name, 'actualUser' => $card->actual_user, 'expiryDate' => $card->expiry_date, 'cvc' => $card->cvc, 'status' => $card->status, 'memo' => $card->memo, ]; }); return response()->json([ 'success' => true, 'data' => $cards, ]); } /** * 카드 등록 */ public function store(Request $request): JsonResponse { $request->validate([ 'cardName' => 'required|string|max:100', 'cardCompany' => 'required|string|max:50', 'cardNumber' => 'required|string|max:30', 'cardType' => 'required|in:credit,debit', 'cardHolderName' => 'required|string|max:100', 'actualUser' => 'required|string|max:100', ]); $tenantId = session('selected_tenant_id', 1); $card = CorporateCard::create([ 'tenant_id' => $tenantId, 'card_name' => $request->input('cardName'), 'card_company' => $request->input('cardCompany'), 'card_number' => $request->input('cardNumber'), 'card_type' => $request->input('cardType'), 'payment_day' => $request->input('paymentDay', 15), 'credit_limit' => $request->input('creditLimit', 0), 'current_usage' => 0, 'card_holder_name' => $request->input('cardHolderName'), 'actual_user' => $request->input('actualUser'), 'expiry_date' => $request->input('expiryDate'), 'cvc' => $request->input('cvc'), 'status' => $request->input('status', 'active'), 'memo' => $request->input('memo'), ]); return response()->json([ 'success' => true, 'message' => '카드가 등록되었습니다.', 'data' => [ 'id' => $card->id, 'cardName' => $card->card_name, 'cardCompany' => $card->card_company, 'cardNumber' => $card->card_number, 'cardType' => $card->card_type, 'paymentDay' => $card->payment_day, 'creditLimit' => (float) $card->credit_limit, 'currentUsage' => (float) $card->current_usage, 'cardHolderName' => $card->card_holder_name, 'actualUser' => $card->actual_user, 'expiryDate' => $card->expiry_date, 'cvc' => $card->cvc, 'status' => $card->status, 'memo' => $card->memo, ], ]); } /** * 카드 수정 */ public function update(Request $request, int $id): JsonResponse { $card = CorporateCard::findOrFail($id); $request->validate([ 'cardName' => 'required|string|max:100', 'cardCompany' => 'required|string|max:50', 'cardNumber' => 'required|string|max:30', 'cardType' => 'required|in:credit,debit', 'cardHolderName' => 'required|string|max:100', 'actualUser' => 'required|string|max:100', ]); $card->update([ 'card_name' => $request->input('cardName'), 'card_company' => $request->input('cardCompany'), 'card_number' => $request->input('cardNumber'), 'card_type' => $request->input('cardType'), 'payment_day' => $request->input('paymentDay', 15), 'credit_limit' => $request->input('creditLimit', 0), 'card_holder_name' => $request->input('cardHolderName'), 'actual_user' => $request->input('actualUser'), 'expiry_date' => $request->input('expiryDate'), 'cvc' => $request->input('cvc'), 'status' => $request->input('status', 'active'), 'memo' => $request->input('memo'), ]); return response()->json([ 'success' => true, 'message' => '카드가 수정되었습니다.', 'data' => [ 'id' => $card->id, 'cardName' => $card->card_name, 'cardCompany' => $card->card_company, 'cardNumber' => $card->card_number, 'cardType' => $card->card_type, 'paymentDay' => $card->payment_day, 'creditLimit' => (float) $card->credit_limit, 'currentUsage' => (float) $card->current_usage, 'cardHolderName' => $card->card_holder_name, 'actualUser' => $card->actual_user, 'expiryDate' => $card->expiry_date, 'cvc' => $card->cvc, 'status' => $card->status, 'memo' => $card->memo, ], ]); } /** * 카드 비활성화 */ public function deactivate(int $id): JsonResponse { $card = CorporateCard::findOrFail($id); $card->update(['status' => 'inactive']); return response()->json([ 'success' => true, 'message' => '카드가 비활성화되었습니다.', ]); } /** * 카드 영구삭제 */ public function destroy(int $id): JsonResponse { $card = CorporateCard::findOrFail($id); $card->forceDelete(); return response()->json([ 'success' => true, 'message' => '카드가 영구 삭제되었습니다.', ]); } }