public function doCreateExpenseReport(CreateExpenseReportRequest $request) { $totalCost = 0; $expenseReport = new ExpenseReport(); $expenseReport->mr_id = \Auth::user()->id; $expenseReport->month = $request->month . '-' . $request->year; if ($expenseReport->save()) { $expenseReportId = $expenseReport->id; $expenseReportHotel = new ExpenseReportHotel(); $expenseReportHotel->date = $request->hotel_date; $expenseReportHotel->expense_report_id = $expenseReportId; $expenseReportHotel->hotel = $request->hotel; $expenseReportHotel->meal = $request->hotel_meal; $expenseReportHotel->cost = $request->hotel_cost; $totalCost += $request->hotel_cost; $expenseReportHotel->save(); if (is_array($request->extra_hotel_date)) { for ($i = 0; $i < count($request->extra_hotel_date); $i++) { if (!empty($request->extra_hotel_date[$i]) && !empty($request->extra_hotel[$i]) && !empty($request->extra_hotel_meal[$i]) && !empty($request->extra_hotel_cost[$i])) { $expenseReportHotel = new ExpenseReportHotel(); $expenseReportHotel->date = $request->extra_hotel_date[$i]; $expenseReportHotel->expense_report_id = $expenseReportId; $expenseReportHotel->hotel = $request->extra_hotel[$i]; $expenseReportHotel->meal = $request->extra_hotel_meal[$i]; $expenseReportHotel->cost = $request->extra_hotel_cost[$i]; $totalCost += $request->extra_hotel_cost[$i]; $expenseReportHotel->save(); } } } $expenseReportTransportation = new ExpenseReportTransportation(); $expenseReportTransportation->date = $request->transportation_date; $expenseReportTransportation->expense_report_id = $expenseReportId; $expenseReportTransportation->city = $request->transportation_city; $expenseReportTransportation->cost = $request->transportation_cost; $totalCost += $request->transportation_cost; $expenseReportTransportation->save(); if (is_array($request->extra_transportation_date)) { for ($i = 0; $i < count($request->extra_transportation_date); $i++) { if (!empty($request->extra_transportation_date[$i]) && !empty($request->extra_transportation_city[$i]) && !empty($request->extra_transportation_cost[$i])) { $expenseReportTransportation = new ExpenseReportTransportation(); $expenseReportTransportation->date = $request->extra_transportation_date[$i]; $expenseReportTransportation->expense_report_id = $expenseReportId; $expenseReportTransportation->city = $request->extra_transportation_city[$i]; $expenseReportTransportation->cost = $request->extra_transportation_cost[$i]; $totalCost += $request->extra_transportation_cost[$i]; $expenseReportTransportation->save(); } } } $expenseReportMeeting = new ExpenseReportMeeting(); $expenseReportMeeting->date = $request->meeting_date; $expenseReportMeeting->expense_report_id = $expenseReportId; $expenseReportMeeting->meeting = $request->meeting; $expenseReportMeeting->cost = $request->meeting_cost; $totalCost += $request->meeting_cost; $expenseReportMeeting->save(); if (is_array($request->extra_meeting_date)) { for ($i = 0; $i < count($request->extra_meeting_date); $i++) { if (!empty($request->extra_meeting_date[$i]) && !empty($request->extra_meeting[$i]) && !empty($request->extra_meeting_cost[$i])) { $expenseReportMeeting = new ExpenseReportMeeting(); $expenseReportMeeting->date = $request->extra_meeting_date[$i]; $expenseReportMeeting->expense_report_id = $expenseReportId; $expenseReportMeeting->meeting = $request->extra_meeting[$i]; $expenseReportMeeting->cost = $request->extra_meeting_cost[$i]; $totalCost += $request->extra_meeting_cost[$i]; $expenseReportMeeting->save(); } } } $expenseReport = ExpenseReport::findOrFail($expenseReportId); $expenseReport->total = $totalCost; $expenseReport->save(); if (!empty($request->file('invoices'))) { try { $extension = $request->file('invoices')->getClientOriginalExtension(); $request->file('invoices')->move(public_path('uploads/expenses_reports/' . \Auth::user()->id . '/' . $expenseReport->month . '/'), $expenseReport->id . '.' . $extension); return redirect()->back()->with('message', 'Expense Report has been sent to your managers successfully !'); print_r($expenseReport); } catch (ParseException $ex) { echo 'Failed to create new expense report , with error message: ' . $ex->getMessage(); } } return redirect()->back()->with('message', 'Expense Report has been sent to your managers successfully !'); } }