Beispiel #1
0
 protected function buy($slug)
 {
     //Get buyer
     $auction = Auction::where('slug', $slug)->first();
     $buyer = User::findOrFail(Auth::user()->id);
     $seller = User::findOrFail($auction->seller_id);
     // Make sure users can't buy own works
     if ($buyer->id === $seller->id) {
         return FALSE;
     }
     //Get other bidders
     $users = DB::table('users')->select(DB::raw('users.id'))->join('bids', 'users.id', '=', 'bids.bidder_id')->where('bids.auction_id', $auction->id)->where('users.id', '!=', Auth::user()->id)->get();
     //E-mail buyer
     Message::auctionBought($auction->id, Auth::user()->id);
     //E-mail other bidders
     if (count($users)) {
         foreach ($users as $user) {
             Message::auctionClosed($auction->id, $user->id);
         }
     }
     //E-mail seller
     Message::auctionSold($auction->id, $buyer->id);
     //Remove from view
     $buying = Auction::find($auction->id);
     $buying->state = "sold";
     $buying->save();
     return $auction;
 }
 public function store(Request $request)
 {
     $validator = Validator::make($request->all(), ['name' => 'required|max:255', 'email' => 'required|email|max:255', 'message' => 'required|max:255']);
     if ($validator->fails()) {
         return redirect()->back()->withErrors($validator)->withInput();
     }
     $input = $request->all();
     $auctionid = explode(',', $input['auction']);
     $auction = Auction::find($auctionid[0]);
     Mail::send('email.contactmail', array('name' => $input['name'], 'email' => $input['email'], 'user_message' => $input['message'], 'auctionTitle' => $auction->title), function ($message) {
         $message->from('*****@*****.**');
         $message->to('*****@*****.**', 'Admin')->subject('Landoretti Question');
     });
     $auctions = ['default' => 'Choose an auction'] + Auction::orderby('title', 'ASC')->lists('title', 'id')->all();
     $success = 'Thanks for contacting us!';
     $newestAuction = Auction::where('FK_status_id', '=', 1)->orWhere('FK_status_id', '=', 3)->orderBy('created_at', 'desc')->first();
     return view('contact')->with('newestAuction', $newestAuction)->with('success', $success)->with('auctions', $auctions);
 }
Beispiel #3
0
 protected function auctionDeleted($id)
 {
     $auction = Auction::find($id);
     $bids = Bid::where('auction_id', $id)->get();
     $watches = Watchlist::where('auction_id', $id)->get();
     $recipients = [];
     foreach ($bids as $bid) {
         if (!in_array($bid->bidder_id, $recipients)) {
             $recipients[] = $bid->bidder_id;
         }
     }
     foreach ($watches as $watch) {
         if (!in_array($watch->user_id, $recipients)) {
             $recipients[] = $watch->user_id;
         }
     }
     foreach ($recipients as $recipient) {
         $message = ['title' => 'Auction for ' . $auction->title . ' closed.', 'message' => 'We regret to inform you that the owner of ' . $auction->title . ' has closed the auction. This means that the work will not be sold and that no further bidding will be possible.', 'opened' => null, 'archived' => 0, 'user_id' => $recipient, 'sender_id' => 1];
         self::create($message);
     }
 }
 public function getAddBet($id)
 {
     // Проверка, является ли текущий пользователь участником
     $haveAccess = Bidders::where(['user_id' => Auth::user()->id, 'auction_id' => $id, 'status' => 1])->get();
     // Экземпляр лота
     $auction = Auction::find($id);
     // Список ставок
     $thisBids = Bets::where('auction_id', '=', $id)->orderBy('created_at', 'desc')->get();
     // Если пользователь не является участником - редиректим на главную страницу
     if ($haveAccess->count() == 0) {
         return redirect('/auctions');
     } else {
         // Если данный пользователь является последним, кто сделал ставку и пытается сделать ее еще раз - редиректим назад и показываем ошибку
         if ($thisBids->count() > 0 && $thisBids->first()->user_id == Auth::user()->id) {
             return redirect()->back()->with('bit_error', 'Ви вже зробили ставку!');
         }
         // Если пользователь не делал ставок, но имеет доступ
         $bet = new Bets();
         // Создаем экземпляр ставки
         $bet->auction_id = $id;
         // Указываем id аукциона
         $bet->user_id = Auth::user()->id;
         // Указываем id пользователя
         // Если это первая ставка - складываем стартовую цену и цену за шаг
         if ($thisBids->count() == 0) {
             $bet->bet = $auction->starting_price + $auction->bid_price;
         } else {
             // Добавляем цену за шаг к последнему ценовому предложению
             $bet->bet = $thisBids->first()->bet + $auction->bid_price;
         }
         // Продлеваем аукцион еще на 15 минут
         $auction->date_end = Carbon::parse($auction->date_end)->addMinutes(15);
         $auction->save();
         $bet->save();
     }
     // В случае успеха - редиректим назад и передаем flash переменную
     return redirect()->back()->with('bit_success', '1');
 }
 public function buyout($id)
 {
     $newestAuction = Auction::where('FK_status_id', '=', 1)->orWhere('FK_status_id', '=', 3)->orderBy('created_at', 'desc')->first();
     $auction = Auction::find($id);
     $lostbidders = Bidder::where('FK_auction_id', '=', $auction->id)->distinct()->with('user')->get();
     //distinct voor duplicate receivers
     if (Auth::user()->id == $auction->FK_user_id) {
         $warning = 'This is your own item!';
         return redirect()->back()->with('warning', $warning);
     }
     $auction->FK_status_id = '5';
     //sold
     $auction->save();
     //mail sturen naar andere bieders
     foreach ($lostbidders as $bidder) {
         if ($bidder->FK_user_id != Auth::user()->id) {
             //mail sturen naar verliezende bidders
             Mail::send('email.lostauction', array('descriptionEnglish' => $auction->descriptionEnglish, 'descriptionDutch' => $auction->descriptionDutch, 'title' => $auction->title), function ($message) {
                 $message->from('*****@*****.**');
                 $message->to($bidder->user->email, 'Admin')->subject('You have lost an auction on Landoretti');
             });
         }
     }
     return View::make('buynow')->with('newestAuction', $newestAuction);
 }
 /**
  * Производит добавление участника
  */
 public function postAddBidder(Request $request, $id)
 {
     $messages = array('required' => trans('theme.reg.required'), 'mimes' => trans('theme.reg.mimes'), 'rules_agree.required' => 'Необхідно погодитися з правилами');
     $rules = ['first_name' => 'required', 'last_name' => 'required', 'middle_name' => 'required', 'phone' => 'required', 'bank_name' => 'required', 'account_number' => 'required', 'bank_code' => 'required', 'passport_series' => 'required', 'passport_number' => 'required', 'passport_issue' => 'required', 'passport_issued' => 'required', 'adress_postcode' => 'required', 'adress_region' => 'required', 'adress_city' => 'required', 'adress_full' => 'required', 'rules_agree' => 'required', 'file1' => 'required|mimes:jpeg,bmp,png,pdf,doc,docx', 'file2' => 'required|mimes:jpeg,bmp,png,pdf,doc,docx', 'file3' => 'mimes:jpeg,bmp,png,pdf,doc,docx', 'file4' => 'required|mimes:jpeg,bmp,png,pdf,doc,docx'];
     if ($request->payment_type == 2) {
         $rules = array_add($rules, 'payment_card', 'required');
         $rules = array_add($rules, 'payment_code', 'required');
     }
     if (!Auth::check()) {
         $rules = array_add($rules, 'email', 'required');
     }
     // Если у пользователя нет отказа от ИНН
     if (!$request->has('inn_waiver')) {
         $rules = array_add($rules, 'passport_inn', 'required');
     }
     // Валидатор
     $this->validate($request, $rules, $messages);
     $request->flash();
     $add = new Bidders();
     $add->auction_id = $id;
     // Если пользователь авторизован
     if (Auth::check()) {
         $add->user_id = Auth::user()->id;
     } else {
         $createUser = new User();
         $createUser->first_name = $request->first_name;
         $createUser->last_name = $request->last_name;
         $createUser->middle_name = $request->middle_name;
         $createUser->email = $request->email;
         $createUser->phone = $request->phone;
         $genPass = str_random(8);
         // Случаные 8 символов в качестве пароля
         $createUser->password = bcrypt($genPass);
         $createUser->user_group = 1;
         // По-умолчанию регистрируется как физическое лицо
         $createUser->save();
         $add->user_id = $createUser->id;
         $sendTo = $request->email;
         // Отправка письма об успешной регистрации
         Mail::send('emails.register', array('first_name' => $request->first_name, 'last_name' => $request->last_name, 'email' => $request->email, 'pass' => $genPass), function ($message) use($sendTo) {
             $message->to($sendTo)->subject('Успешная регистрация');
         });
     }
     // Информация о лице
     $add->first_name = $request->first_name;
     $add->last_name = $request->last_name;
     $add->middle_name = $request->middle_name;
     $add->phone = $request->phone;
     $add->dop_phone = $request->dop_phone;
     // Банковские реквизиты
     $add->payment_type = $request->payment_type;
     $add->bank_name = $request->bank_name;
     // Дополнительные поля при оплате картой
     if ($request->payment_type == 2) {
         $add->payment_card = $request->payment_card;
         $add->payment_code = $request->payment_code;
     }
     $add->account_number = $request->account_number;
     $add->bank_code = $request->bank_code;
     // Паспортные данные
     $add->passport_series = $request->passport_series;
     $add->passport_number = $request->passport_number;
     $add->passport_issue = $request->passport_issue;
     $add->passport_issued = $request->passport_issued;
     // Если у пользователя нет отказа от ИНН
     if (!$request->has('inn_waiver')) {
         $add->passport_inn = $request->passport_inn;
     }
     // Адрес
     $add->adress_postcode = $request->adress_postcode;
     $add->adress_region = $request->adress_region;
     $add->adress_city = $request->adress_city;
     $add->adress_full = $request->adress_full;
     $add->status = 0;
     $surl = $this->globalSiteSettings['site_url'];
     // Домен сайта из конфигов
     // Файл 1
     if ($request->hasFile('file1')) {
         $file1 = $request->file('file1');
         $filename = str_random(10) . '.' . $file1->getClientOriginalExtension();
         $imgurl = $surl . '/userfiles/' . $filename;
         $file1->move(public_path() . '/userfiles/', $filename);
         $add->file1 = $imgurl;
     }
     // Файл 2
     if ($request->hasFile('file2')) {
         $file2 = $request->file('file2');
         $filename = str_random(10) . '.' . $file2->getClientOriginalExtension();
         $imgurl = $surl . '/userfiles/' . $filename;
         $file2->move(public_path() . '/userfiles/', $filename);
         $add->file2 = $imgurl;
     }
     // Файл 3
     if ($request->hasFile('file3')) {
         $file3 = $request->file('file3');
         $filename = str_random(10) . '.' . $file3->getClientOriginalExtension();
         $imgurl = $surl . '/userfiles/' . $filename;
         $file3->move(public_path() . '/userfiles/', $filename);
         $add->file3 = $imgurl;
     }
     // Файл 4
     if ($request->hasFile('file4')) {
         $file4 = $request->file('file4');
         $filename = str_random(10) . '.' . $file4->getClientOriginalExtension();
         $imgurl = $surl . '/userfiles/' . $filename;
         $file4->move(public_path() . '/userfiles/', $filename);
         $add->file4 = $imgurl;
     }
     $add->save();
     $auction = Auction::find($id);
     $adminEmail = $this->globalSiteSettings['admin_email'];
     Mail::send('emails.admin-new-bidder', ['lot_title' => $auction->title, 'lot_id' => $auction->id], function ($message) use($adminEmail) {
         $message->to($adminEmail)->subject('Новий учасник');
     });
     if (!Auth::check()) {
         Auth::loginUsingId($createUser->id);
     }
     Session::flash('gAnalyticsReachGoal', 'NEW_BIDDER');
     Session::flash('YaMetrikaReachGoal', 'NEW_BIDDER');
     // Отправка данных о достижении цели в Яндекс Метрику
     return redirect('/auctions')->with('success_bidders_add', 'Ваша заявка успішно додано. Після перевірки даних адміністрацією, вона буде допущена до системи.');
 }
Beispiel #7
0
 public static function getAuctionForId($id = -1)
 {
     return Auction::find($id);
 }
 /**
  * Show the form for editing the specified resource.
  *
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
 public function edit($id)
 {
     //
     $data = Auction::find($id);
     return view('pages.auction.index', ['data' => $data]);
 }
 public function getDeleteLot($id)
 {
     // Удаляем файлы
     $deleteFiles = App\Uploads::where('auction_id', $id)->get();
     if ($deleteFiles->count() > 0) {
         setlocale(LC_ALL, 'ru_RU.utf8');
         foreach ($deleteFiles as $b) {
             //dd($b);
             //
             //$e = substr(strrchr($fname,'.'),1);
             //$n = preg_replace('/.[^.]*$/', '', $fname);
             if ($b->type == 'image') {
                 $extension = substr(strrchr($b->name, '.'), 1);
                 $cutName = preg_replace('/.[^.]*$/', '', $b->name);
                 Storage::disk('upload_images')->delete($b->name);
                 Storage::disk('upload_images')->delete($cutName . '-sm.' . $extension);
             } elseif ($b->type == 'doc') {
                 $fname = pathinfo($b->link);
                 Storage::disk('upload_docs')->delete($fname['basename']);
             }
             $b->delete();
         }
     }
     // Удаляем аукцион
     $delete = Auction::find($id);
     $delete->delete();
     // Удаляем участников аукциона
     $deleteBidders = App\Bidders::where('auction_id', $id)->get();
     if ($deleteBidders->count() > 0) {
         foreach ($deleteBidders as $b) {
             $b->delete();
         }
     }
     // Удаляем ставки
     $deleteBets = App\Bets::where('auction_id', $id)->get();
     if ($deleteBets->count() > 0) {
         foreach ($deleteBets as $b) {
             $b->delete();
         }
     }
     // Сбрасываем закешированные данные виджета "Останні надходження"
     if (Cache::has('last_lots')) {
         Cache::forget('last_lots');
     }
     return redirect()->back();
 }
 public function getProblem($id)
 {
     //        //
     //        $auction = Auction::find($id);
     //        ///get All Seller
     //        $sellers = $auction->bidders->unique();
     //        //Seller1 Bid
     //        $sellersBids = [];
     //        foreach ($sellers as $seller) {
     //            $bids = Bid::where(['auction_id' => $auction->id, 'seller_id' => $seller->id])->get();
     //            $bidsWithProduct = [];
     //            foreach ($bids as $bid) {
     //                $bidsWithProduct[$bid->id] = $bid;
     //                $bid->products;
     //            }
     //            $sellersBids[$seller->id] = $bidsWithProduct;
     //            //d
     //        }
     //        return response()->json(array($sellersBids));
     $auction = Auction::find($id);
     $products_in_auctions = $auction->products;
     $problem = array();
     ///bids
     $bids = Bid::where(['auction_id' => $auction->id])->get();
     foreach ($bids as $bid) {
         $bid_data = array();
         $bid_data['provider_id'] = $bid->seller_id . "";
         $product_in_bid = $bid->products;
         $bundle = "";
         $size = $product_in_bid->count();
         for ($x = 0; $x < $size; $x++) {
             if ($x == $size - 1) {
                 $bundle = $bundle . "A" . ($product_in_bid[$x]->id - 1);
             } else {
                 $bundle = $bundle . "A" . ($product_in_bid[$x]->id - 1) . "+";
             }
         }
         $bid_data['bundle'] = $bundle;
         $bid_data['price'] = $bid->price . "";
         $bid_data['bid_id'] = $bid->id . "";
         array_push($problem, $bid_data);
     }
     //[\"A0\",\"A1\",\"A2\",\"A3\",\"A4\"]
     $auction_bundle = "[";
     for ($x = 0; $x < $products_in_auctions->count(); $x++) {
         if ($x == $products_in_auctions->count() - 1) {
             $auction_bundle = $auction_bundle . "\"A" . ($products_in_auctions[$x]->id - 1) . "\"]";
         } else {
             $auction_bundle = $auction_bundle . "\"A" . ($products_in_auctions[$x]->id - 1) . "\",";
         }
     }
     $data = ['bundle' => $auction_bundle];
     array_push($problem, $data);
     return json_encode($problem);
 }
 public function bid1()
 {
     //Product
     $A0 = Product::firstOrNew(['product_code' => '12345']);
     $A1 = Product::firstOrNew(['product_code' => '12346']);
     $A2 = Product::firstOrNew(['product_code' => '12347']);
     $A3 = Product::firstOrNew(['product_code' => '12348']);
     $A4 = Product::firstOrNew(['product_code' => '12349']);
     //Seller
     $seller1 = User::where(['email' => '*****@*****.**'])->first();
     $seller2 = User::where(['email' => '*****@*****.**'])->first();
     $seller3 = User::where(['email' => '*****@*****.**'])->first();
     //Auction
     $auction = Auction::find(1);
     //Bid
     $price = 2.98;
     $bundle = [$A0];
     $this->addBid($price, $seller1, $auction, $bundle);
     $price = 2.56;
     $bundle = [$A2];
     $this->addBid($price, $seller1, $auction, $bundle);
     //
     $price = 14.21;
     $bundle = [$A3];
     $this->addBid($price, $seller1, $auction, $bundle);
     //
     $price = 12.77;
     $bundle = [$A0, $A2, $A3];
     $this->addBid($price, $seller1, $auction, $bundle);
     //
     $price = 0.74;
     $bundle = [$A1];
     $this->addBid($price, $seller2, $auction, $bundle);
     //
     $price = 2.37;
     $bundle = [$A2];
     $this->addBid($price, $seller2, $auction, $bundle);
     //
     $price = 20.73;
     $bundle = [$A4];
     $this->addBid($price, $seller2, $auction, $bundle);
     //
     $price = 20.94;
     $bundle = [$A1, $A2, $A4];
     $this->addBid($price, $seller2, $auction, $bundle);
     //
     $price = 31.98;
     $bundle = [$A0];
     $this->addBid($price, $seller3, $auction, $bundle);
     //
     $price = 0.78;
     $bundle = [$A1];
     $this->addBid($price, $seller3, $auction, $bundle);
     //
     $price = 14.53;
     $bundle = [$A3];
     $this->addBid($price, $seller3, $auction, $bundle);
     //
     $price = 21.3;
     $bundle = [$A4];
     $this->addBid($price, $seller3, $auction, $bundle);
     //
     $price = 19.11;
     $bundle = [$A0, $A1, $A3, $A4];
     $this->addBid($price, $seller3, $auction, $bundle);
     //
     $price = 68;
     $bundle = [$A0];
     $this->addBid($price, $seller1, $auction, $bundle);
     //
     $price = 27.36;
     $bundle = [$A1];
     $this->addBid($price, $seller3, $auction, $bundle);
     //
     $price = 68;
     $bundle = [$A2];
     $this->addBid($price, $seller1, $auction, $bundle);
     //
     $price = 27.36;
     $bundle = [$A2];
     $this->addBid($price, $seller3, $auction, $bundle);
     //
     $price = 68;
     $bundle = [$A3];
     $this->addBid($price, $seller1, $auction, $bundle);
     //
     $price = 27.36;
     $bundle = [$A3];
     $this->addBid($price, $seller3, $auction, $bundle);
     //
     $price = 272;
     $bundle = [$A4];
     $this->addBid($price, $seller1, $auction, $bundle);
     //
     $price = 109.44;
     $bundle = [$A4];
     $this->addBid($price, $seller3, $auction, $bundle);
 }