ExpenseController.php 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Requests\Expense\StoreExpenseRequest;
  5. use App\Models\Expense;
  6. use Illuminate\Database\QueryException;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\DB;
  9. use Inertia\Inertia;
  10. class ExpenseController extends Controller
  11. {
  12. public function __construct()
  13. {
  14. $this->authorizeResource(Expense::class);
  15. }
  16. /**
  17. * Display a listing of the resource.
  18. *
  19. * @return \Inertia\Response
  20. */
  21. public function index()
  22. {
  23. return inertia('expense/Index', [
  24. 'initialDateRange' => request()->collect(['startDate', 'endDate'])->flatten(),
  25. 'expenses' => Expense::filter(request()->only('startDate', 'endDate', 'outlet'))
  26. ->latest()
  27. ->paginate(10)
  28. ->withQueryString()
  29. ->through(fn($expense) => [
  30. 'id' => $expense->id,
  31. 'createdAt' => $expense->created_at,
  32. 'amount' => $expense->amount,
  33. 'user' => $expense->user->name,
  34. ]),
  35. ]);
  36. }
  37. /**
  38. * Show the form for creating a new resource.
  39. *
  40. * @return \Illuminate\Http\Response
  41. */
  42. public function create()
  43. {
  44. return inertia('expense/Create');
  45. }
  46. /**
  47. * Store a newly created resource in storage.
  48. *
  49. * @param \Illuminate\Http\Request $request
  50. * @return \Illuminate\Http\Response
  51. */
  52. public function store(StoreExpenseRequest $request)
  53. {
  54. DB::beginTransaction();
  55. try {
  56. $expense = Expense::create([
  57. 'description' => $request->description,
  58. 'amount' => $request->amount,
  59. 'user_id' => $request->user()->id,
  60. ]);
  61. $expense->mutation()->create([
  62. 'type' => 2,
  63. 'amount' => $expense->getRawOriginal('amount'),
  64. ]);
  65. DB::commit();
  66. return back()->with('success', __('messages.success.store.expense'));
  67. } catch (QueryException $e) {
  68. DB::rollBack();
  69. return back()->with('error', __('messages.error.store.expense'));
  70. }
  71. }
  72. /**
  73. * Display the specified resource.
  74. *
  75. * @param Expense $expense
  76. * @return \Inertia\Response
  77. */
  78. public function show(Expense $expense)
  79. {
  80. return inertia('expense/Show', [
  81. 'expense' => [
  82. 'created_at' => $expense->created_at,
  83. 'amount' => $expense->amount,
  84. 'description' => $expense->description,
  85. 'user' => [
  86. 'name' => $expense->user->name,
  87. 'phone' => auth()->user()->id === $expense->user->id ? $expense->user->phone : null,
  88. 'email' => $expense->user->email,
  89. ],
  90. ],
  91. ]);
  92. }
  93. /**
  94. * Show the form for editing the specified resource.
  95. *
  96. * @param int $id
  97. * @return \Illuminate\Http\Response
  98. */
  99. public function edit($id)
  100. {
  101. //
  102. }
  103. /**
  104. * Update the specified resource in storage.
  105. *
  106. * @param \Illuminate\Http\Request $request
  107. * @param int $id
  108. * @return \Illuminate\Http\Response
  109. */
  110. public function update(Request $request, $id)
  111. {
  112. //
  113. }
  114. /**
  115. * Remove the specified resource from storage.
  116. *
  117. * @param int $id
  118. * @return \Illuminate\Http\Response
  119. */
  120. public function destroy($id)
  121. {
  122. //
  123. }
  124. }