示例#1
0
 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 !');
     }
 }