/** * store a resource * @param Request $request http request * @param mixed $id id of the resource for updating * @return jsend jsend with newly stored source */ function store(Request $request, $id = null) { //////////////// // Load Data // //////////////// if ($id) { $data = Model::find($id); if (!$data) { return app()->abort(404); } } else { $data = new Model(); } /////////////////////////////////// // Assign posted data to Data // /////////////////////////////////// $data->fill($request->input()); /////////////////////////////////////////////////////////////////// // Validate data // /////////////////////////////////////////////////////////////////// # Validate Destinations $destination_id = null; if ($request->input('destination_id') && is_string($request->input('destination_id'))) { $destination = Destination::find($request->input('destination_id')); if ($destination) { $destination_id = $request->input('destination_id'); } else { return response()->json(JSend::fail('InvalidDestination : Destination not found')->asArray()); } } elseif (!is_string($request->input('destination_id'))) { return response()->json(JSend::fail('InvalidDestination : Invalid Destination format')->asArray()); } else { return response()->json(JSend::fail('InvalidDestination : Destination is required')->asArray()); } /////////////////////////// // Embeds Other Document // /////////////////////////// $data->images = $request->input('images'); $data->tags = is_array($request->input('tags')) ? $request->input('tags') : [$request->input('tags')]; $data->destination_id = $destination_id; /////////// // Store // /////////// if ($data->save()) { return response()->json(JSend::success(['data' => $data])->asArray()); } else { return response()->json(JSend::fail($data->getErrors())->asArray()); } }