public function store(Request $request)
{
if (!$request->input('type')) {
return redirect()->back()->withErrors(['induced_error' => [trans('globals.error') . ' ' . trans('globals.induced_error')]]);
}
$rules = $this->rulesByTypes($request);
$v = Validator::make($request->all(), $rules);
if ($v->fails()) {
return redirect()->back()->withErrors($v->errors())->withInput();
}
$features = $this->validateFeatures($request->all());
if (!is_string($features)) {
return redirect()->back()->withErrors($features)->withInput();
}
$product = new Product();
$product->name = $request->input('name');
$product->category_id = $request->input('category_id');
$product->user_id = \Auth::id();
$product->description = $request->input('description');
$product->bar_code = $request->input('bar_code');
$product->brand = $request->input('brand');
$product->price = $request->input('price');
$product->condition = $request->input('condition');
$product->features = $features;
$product->type = $request->input('type');
if ($request->input('type') == 'item') {
$product->stock = $request->input('stock');
$product->low_stock = $request->input('low_stock');
if ($request->input('stock') > 0) {
$product->status = $request->input('status');
} else {
$product->status = 0;
}
} else {
$product->status = $request->input('status');
}
$product->save();
$message = '';
if ($request->input('type') != 'item') {
switch ($request->input('type')) {
case 'key':
$num = 0;
if (!Storage::disk('local')->exists($request->input('key'))) {
return redirect()->back()->withErrors(['induced_error' => [trans('globals.file_does_not_exist')]])->withInput();
// ->withErrors(array('induced_error'=>array(storage_path().'files/key_code'.$request->input('key'))))->withInput();
}
$contents = Storage::disk('local')->get($request->input('key'));
$contents = explode("\n", rtrim($contents));
$warning = false;
$len = 0;
$virtualProduct = new virtualProduct();
$virtualProduct->product_id = $product->id;
$virtualProduct->key = 'undefined';
$virtualProduct->status = 'cancelled';
$virtualProduct->save();
foreach ($contents as $row) {
$virtualProduct = new virtualProduct();
$virtualProduct->product_id = $product->id;
$virtualProduct->status = 'open';
$virtualProduct->key = $row;
$virtualProduct->save();
$num++;
if ($len == 0) {
$len = strlen(rtrim($row));
} elseif (strlen(rtrim($row)) != $len) {
$warning = true;
}
}
$product->stock = $num;
if ($num == 0) {
$product->status = 0;
}
$product->save();
$message = ' ' . trans('product.controller.review_keys');
if ($warning) {
$message .= ' ' . trans('product.controller.may_invalid_keys');
}
Storage::disk('local')->deleteDirectory('key_code/' . \Auth::id());
break;
case 'software':
break;
case 'software_key':
break;
case 'gift_card':
break;
}
}
Session::flash('message', trans('product.controller.saved_successfully') . $message);
return redirect('products/' . $product->id);
}