コード例 #1
0
 /**
  * Обработка отправленного на товар отзыва
  * @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);
 }
コード例 #2
0
 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, 'Раздача товаров');
 }
コード例 #3
0
 /**
  * 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']);
 }
コード例 #4
0
ファイル: User.php プロジェクト: Eduard90/Laravel-5-Example
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 ? '&check;' : '-';
    }), 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;
});