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');
 }