public function doCreate(CreateReportRequest $request) { $location = \GeoIP::getLocation(); $allSoldProducts = []; $report = new SMReport(); $soldProduct = $request->sold_product; $quantity = $request->quantity; $extraSoldProducts = $request->extra_sold_products; $extraQuantity = $request->extra_quantity; if (!empty($soldProduct)) { $allSoldProducts[$soldProduct] = $quantity; } if (!empty($extraSoldProducts)) { foreach ($extraSoldProducts as $key => $singleSoldProduct) { $allSoldProducts[$singleSoldProduct] = $extraQuantity[$key]; } } $report->sm_id = \Auth::user()->id; $report->month = $request->month . '-' . $request->year; $report->date = $request->date; $report->doctor_id = $request->doctor; $report->total_sold_products_price = !empty($allSoldProducts) ? $this->productPrice($allSoldProducts) : '0'; $report->feedback = $request->feedback; $report->follow_up = $request->follow_up; $report->lat = $location['lat']; $report->lon = $location['lon']; try { if ($report->save()) { if (!empty($request->promoted_products)) { foreach ($request->promoted_products as $singleProduct) { $promotedProduct = new AMReportPromotedProduct(); $promotedProduct->report_id = $report->id; $promotedProduct->product_id = $singleProduct; $promotedProduct->save(); } } if (!empty($request->samples_products)) { foreach ($request->samples_products as $singleProduct) { $sampleProduct = new AMReportSampleProduct(); $sampleProduct->report_id = $report->id; $sampleProduct->product_id = $singleProduct; $sampleProduct->save(); } } if (!empty($request->gifts)) { foreach ($request->gifts as $singleGift) { $gift = new AMReportGift(); $gift->report_id = $report->id; $gift->gift_id = $singleGift; $gift->save(); } } if (!empty($request->sold_product)) { $soldProduct = new AMReportSoldProduct(); $soldProduct->report_id = $report->id; $soldProduct->product_id = $request->sold_product; $soldProduct->quantity = $request->quantity; $soldProduct->save(); } if (!empty($extraSoldProducts)) { foreach ($extraSoldProducts as $key => $singleSoldProduct) { $soldProduct = new AMReportSoldProduct(); $soldProduct->report_id = $report->id; $soldProduct->product_id = $singleSoldProduct; $soldProduct->quantity = $extraQuantity[$key]; $soldProduct->save(); } } } return redirect()->back()->with('message', 'Report has been created successfully !'); } catch (ParseException $ex) { echo 'Failed to create new report , with error message: ' . $ex->getMessage(); } }