Exemplo n.º 1
0
 public function getItemsObj($limit = 9999999)
 {
     $input = \Request::all();
     if (isset($input['check'])) {
         $type = $input['check'];
     } else {
         $type = '';
     }
     $items = Items::get()->take($limit)->toArray();
     $arr = [];
     foreach ($items as $value) {
         if ($type == 'published' && $value['published'] || $type != 'published') {
             if ($value['obj'] != '') {
                 $obj = json_decode($value['obj'], true);
                 unset($value['obj']);
             } else {
                 $obj = [];
             }
             $obj['item'] = $value;
             $obj['price'] = $value['price'];
             $arr[] = $obj;
         }
     }
     return $arr;
 }
 /**
  * Vérification des données utilisateurs avant la création de l'enchère
  *
  * @param Request $request
  * @param int $item_id Identifiant de l'item
  * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
  */
 public function add(Request $request, $item_id)
 {
     // Après quelques vérifications, l'utilisateur saura s'il a le droit d'enchérir ou non
     $denied = false;
     // On récupère l'ID du formulaire (permettra de savoir à quel formulaire une erreur s'est produite)
     $form_id = $request->input('_form_id', 'default');
     // Si l'utilisateur a supprimé le champ (gg), on essaye de récupérer l'ID dans l'URL
     if ($form_id === null && preg_match('/\\/items/', URL::previous())) {
         $url_items = explode('/', $request->getPathInfo());
         $form_id = 'form_' . array_pop($url_items);
     }
     // Les messages d'erreurs seront désormais spécifiques à un formulaire, et pas tous
     $this->validatesRequestErrorBag = $form_id;
     // Permettra de savoir dans quel formulaire s'est produite l'erreur
     $request->session()->flash('errorBag', $this->validatesRequestErrorBag);
     // On check si l'item existe bien dans la BBD ('Ivre, il enchérit une vente qui n'existe pas, la suite va vous surprendre !)
     $item = Items::get()->where('id', $item_id)->first();
     $min_price = $item->getPrice() + 1;
     // L'enchère n'existe pas
     if ($item === null) {
         $denied = true;
         $request->session()->flash('message', 'danger|Cette enchère n\'existe pas');
         return redirect(route('items'));
     }
     // L'enchère existe, donc on fait quelques tests dessus
     if ($item !== null) {
         // La vente n'a pas encore commencé
         if (strtotime($item->date_end) - time() < 0) {
             $denied = true;
             $request->session()->flash('message', 'danger|L\'enchère n\'a même pas commencé, calmez-vous...');
             // La vente est terminé
         } elseif (strtotime($item->date_start) - time() > 0) {
             $denied = true;
             $request->session()->flash('message', 'danger|L\'enchère est terminée !');
         }
         // L'utilisateur a atteint le nombre maximum de renchère sur cette annonce
         if ($item->getUserCantBid()) {
             $denied = true;
             $request->session()->flash('message', 'danger|Vous avez dépassé les ' . MAX_BID_PER_SALE . ' propositions d\'enchères maximales !');
         }
     }
     // Le vendeur ne peut pas enchérir sa propre annonce...
     if ($item->isSeller()) {
         $denied = true;
         $request->session()->flash('message', 'danger|Il n\'est pas possible d\'enchérir votre annonce..');
     }
     // Pour une quelconque raison, l'utilisateur n'a pas pu enchérir
     if ($denied) {
         return redirect(route('items'));
     }
     // Le prix rentré doit être supérieur à la valeur minimale de l'enchère
     $this->validate($request, ['price' => 'required|numeric|min:' . $min_price], ['price.min' => 'Le prix doit être supérieur à :min €.']);
     return $this->create($request, $item_id);
 }