Ejemplo n.º 1
0
 /**
  * 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());
     }
 }