/home/awneajlw/.trash/app/Http/Controllers/ExpenceController.php
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Models\ExpenseRecord;
use Illuminate\Http\Request;
class ExpenceController extends Controller
{
public function index(Request $request)
{
$query = ExpenseRecord::where('candidate_id', 0);
$filterType = $request->input('filter_type', 'all');
$year = $request->input('year', date('Y'));
$month = $request->input('month', date('m'));
$week = $request->input('week', date('W'));
// Apply filters based on selection
if ($filterType === 'yearly') {
$query->whereYear('date', $year);
} elseif ($filterType === 'monthly') {
$query->whereYear('date', $year)
->whereMonth('date', $month);
} elseif ($filterType === 'weekly') {
// For weekly filter, we need to calculate the start and end dates of the week
$dateTime = new \DateTime();
$dateTime->setISODate($year, $week);
$startDate = $dateTime->format('Y-m-d');
$dateTime->modify('+6 days');
$endDate = $dateTime->format('Y-m-d');
$query->whereBetween('date', [$startDate, $endDate]);
}
$expenses = $query->get();
// Calculate total amount
$totalAmount = $expenses->sum('amount');
return view('expence.index', compact('expenses', 'filterType', 'year', 'month', 'week', 'totalAmount'));
}
public function create()
{
return view('expence.add');
}
public function store(Request $request)
{
$validatedData = $request->validate([
'amount' => 'required|numeric',
'date' => 'required|date',
'expense_type' => 'required',
'payment_method' => 'required',
'description' => 'nullable',
]);
ExpenseRecord::create([
'amount' => $validatedData['amount'],
'date' => $validatedData['date'],
'expense_type' => $validatedData['expense_type'],
'payment_method' => $validatedData['payment_method'],
'description' => $validatedData['description'],
'candidate_id' => 0,
]);
return redirect()->route('expenses')->with('success', 'Expense record created successfully.');
}
public function edit($id)
{
$expense = ExpenseRecord::findOrFail($id);
return view('expence.edit', compact('expense'));
}
public function update(Request $request, $id)
{
$validatedData = $request->validate([
'amount' => 'required|numeric',
'date' => 'required|date',
'expense_type' => 'required',
'payment_method' => 'required',
'description' => 'nullable',
]);
$expense = ExpenseRecord::findOrFail($id);
$expense->update([
'amount' => $validatedData['amount'],
'date' => $validatedData['date'],
'expense_type' => $validatedData['expense_type'],
'payment_method' => $validatedData['payment_method'],
'description' => $validatedData['description'],
'candidate_id' => 0,
]);
return redirect()->route('expenses')->with('success', 'Expense record updated successfully.');
}
public function destroy($id)
{
$expense = ExpenseRecord::findOrFail($id);
$expense->delete();
return redirect()->route('expenses')->with('success', 'Expense record deleted successfully.');
}
}