ExpenseController.php 3.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  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
  88. ? $expense->user->phone
  89. : null,
  90. 'email' => $expense->user->email
  91. ]
  92. ]
  93. ]);
  94. }
  95. /**
  96. * Show the form for editing the specified resource.
  97. *
  98. * @param int $id
  99. * @return \Illuminate\Http\Response
  100. */
  101. public function edit($id)
  102. {
  103. //
  104. }
  105. /**
  106. * Update the specified resource in storage.
  107. *
  108. * @param \Illuminate\Http\Request $request
  109. * @param int $id
  110. * @return \Illuminate\Http\Response
  111. */
  112. public function update(Request $request, $id)
  113. {
  114. //
  115. }
  116. /**
  117. * Remove the specified resource from storage.
  118. *
  119. * @param int $id
  120. * @return \Illuminate\Http\Response
  121. */
  122. public function destroy($id)
  123. {
  124. //
  125. }
  126. }