public function store(Request $request) { $this->validate($request, ['title' => 'required|unique:auctions', 'expires' => 'required', 'min_price' => 'required', 'max_price' => 'required', 'buying_price' => 'required', 'artist' => 'required', 'year' => 'required|max:4', 'width' => 'required|numeric', 'height' => 'required|numeric', 'depth' => 'numeric', 'description' => 'required', 'condition' => 'required', 'style_id' => 'required', 'artwork' => 'required|mimes:jpeg,bmp,png,gif,jpg,JPG,JPEG|max:10240', 'signature' => 'required|mimes:jpeg,bmp,png,gif,jpg,JPG,JPEG|max:10240', 'opt_img' => 'mimes:jpeg,bmp,png,gif,jpg,JPG,JPEG|max:10240']); $input = $request->all(); $input['expires'] = date_create_from_format('d/m/Y', $input['expires']); $input['state'] = 'pending'; $input['seller_id'] = Auth::user()->id; $input['slug'] = Auction::sluggify($input['title']); $input['dimensions'] = $input['width'] . ' x ' . $input['height']; if (isset($input['depth'])) { $input['dimensions'] .= ' x ' . $input['depth']; unset($input['depth']); } $input['dimensions'] .= ' cm'; unset($input['width']); unset($input['height']); // Set image filename $artName = $request->file('artwork')->GetClientOriginalName(); $sigName = $request->file('signature')->GetClientOriginalName(); // Set destination path for images $userPath = 'img/' . Auth::user()->id . '/'; $destPath = $userPath . $input['slug'] . '/'; $thumbPath = $destPath . 'thumbs/'; // Send image path to database for performance $input['artwork'] = $destPath . $artName; $input['signature'] = $destPath . $sigName; $input['thumb'] = $thumbPath . $artName; $input['sig_thumb'] = $thumbPath . $sigName; // Handle optional image if (isset($input['opt_img'])) { $optName = $request->file('opt_img')->GetClientOriginalName(); $input['opt_img'] = $destPath . $optName; $input['opt_thumb'] = $thumbPath . $optName; } Auction::create($input); // Save images to images/{user_id}/{slug} folder if (!file_exists($userPath)) { mkdir($userPath); } if (!file_exists($destPath)) { mkdir($destPath); } if (!file_exists($thumbPath)) { mkdir($thumbPath); } $img = Image::make($request->file('artwork')->getRealPath())->resize(1024, null, function ($constraint) { $constraint->aspectRatio(); $constraint->upsize(); })->save(public_path($input['artwork'])); $img = Image::make($request->file('signature')->getRealPath())->resize(1024, null, function ($constraint) { $constraint->aspectRatio(); $constraint->upsize(); })->save(public_path($input['signature'])); // thumbify Auction::thumbify($request->file('artwork')->getRealPath(), $thumbPath . $artName); Auction::thumbify($request->file('signature')->getRealPath(), $thumbPath . $sigName); if ($request->file('opt_img') !== NULL) { $opt_img = Image::make($request->file('opt_img')->getRealPath())->resize(1024, null, function ($constraint) { $constraint->aspectRatio(); $constraint->upsize(); })->save(public_path($input['opt_img'])); Auction::thumbify($request->file('opt_img')->getRealPath(), $thumbPath . $optName); } Session::flash('flash_message', trans('auctions.create.success')); return redirect(Lang::locale() . '/myauctions'); }