/** * Обработка отправленного на товар отзыва * @param Request $request * @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\JsonResponse|\Symfony\Component\HttpFoundation\Response */ public function postReview(Request $request) { if (!$request->ajax()) { return response("", 403); } $result = ['ok' => 0, 'errors' => '']; $product_id = (int) $request->get('product_id', 0); $review = $request->get('review', ''); $user_id = Auth::user()->id; $words_count = count(preg_split('~[^\\p{L}\\p{N}\']+~u', $review)); try { if ($words_count < 5) { throw new ShortReviewException(); } $user_product = UserProduct::where('user_id', $user_id)->where('product_id', $product_id)->first(); if (!$user_product) { throw new InternalReviewException(); } if (!empty($user_product->review)) { throw new AlreadyReviewException(); } $user_product->review = $review; $user_product->status = 'M'; $user_product->sum = $words_count * 1; //Maybe 2 rub? $user_product->save(); //TODO: Create model method for recalc balance $balance = 0; $products = Auth::user()->products; foreach ($products as $product) { $balance += $product->sum; } Auth::user()->balance = $balance; Auth::user()->save(); $result['ok'] = 1; } catch (ShortReviewException $e) { $result['errors'] = $e->getMessage(); } catch (InternalReviewException $e) { //TODO: Need logging ... $result['errors'] = $e->getMessage(); } catch (AlreadyReviewException $e) { $result['errors'] = $e->getMessage(); } return response()->json($result); }
public function getSendProducts() { $users = User::all(); $count_users = count($users); $count_success = 0; $max_products_per_user = config('main.max_products_per_user', 3); foreach ($users as $key => $user) { $active_products = $user->list_active_products; $count_active_products = count($active_products); if ($count_active_products >= 0 && $count_active_products < $max_products_per_user) { $random_product = Product::orderByRaw("RAND()")->first(); try { $user_product = UserProduct::create(['user_id' => $user->id, 'product_id' => $random_product->id]); $count_success++; } catch (QueryException $e) { //Nothing } } } $result_str = "Раздача товаров...<br>Всего юзеров: " . $count_users . ". Успешно раздали: " . $count_success; return Admin::view($result_str, 'Раздача товаров'); }
/** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy(Request $request, $id) { $user_product = UserProduct::find($id); if (!is_object($user_product)) { return response()->json(['error' => 'Product not found'], 404); } //dd($user_product->user_id . " " . $request->user()->id); if ($user_product->user_id != $request->user()->id) { return response()->json(['error' => 'This product is not your product'], 401); } $user_product->delete(); return response()->json(['message' => 'Your product is successfully deleted']); }
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Input; use App\Product; use App\UserProduct; Admin::model('App\\User')->title('Пользователи')->display(function () { $display = AdminDisplay::datatables(); $display->columns([Column::checkbox(), Column::string('id')->label('ID'), Column::string('name')->label('Имя'), Column::custom()->label('Актив.')->callback(function ($instance) { return $instance->is_active ? '✓' : '-'; }), Column::string('email')->label('Email'), Column::count('products')->label('Товаров')->orderable(true), Column::count('list_active_products')->label('Акт. товаров')->orderable(true), Column::string('balance')->label('Баланс')]); $display->columnFilters([null, ColumnFilter::select()->model('App\\User')->display('name'), null, null, null, null]); $display->actions([Column::action('export')->value('Раздать товары')->icon('fa-share')->callback(function ($collection) { $max_products_per_user = config('main.max_products_per_user', 3); foreach ($collection as $key => $user) { $active_products = $user->list_active_products; $count_active_products = count($active_products); if ($count_active_products >= 0 && $count_active_products < $max_products_per_user) { $random_product = Product::orderByRaw("RAND()")->first(); try { $user_product = UserProduct::create(['user_id' => $user->id, 'product_id' => $random_product->id]); } catch (QueryException $e) { //Nothing } } } })]); return $display; })->createAndEdit(function () { $form = AdminForm::form(); $form->items([FormItem::text('name', 'Name')->required(), FormItem::text('email', 'Email')->required()->unique(), FormItem::password('password', 'Пароль'), FormItem::checkbox('is_active', 'Активность')]); return $form; });