public function showUnits(Request $request) { if ($request->ajax() && $request->has('catid')) { $units = Cat::find($request->input('catid'))->units; $content = ""; $number = 1; foreach ($units as $unit) { $content .= '<div> <span>' . $number . '. ' . $unit->title . '</span> <input type="text" name="price[' . $unit->id . ']" placeholder="قیمت"> <small>ریال</small> </div>'; $number++; } $content .= '<button class="btn btn-sm btn-default"><i class="fa fa-fw fa-plus"></i> واحد جدید</button>'; return $content; } return response()->json(['result' => false]); }
/** * Отправка сообщения о добавленном лоте */ public function sendNotificationAboutNewLot($lot, $email) { $user = User::find($lot->user); $cat = Cat::find($lot->category); $tempvar = array('lot_id' => $lot->id, 'lot_title' => $lot->title, 'lot_category' => $cat->name, 'lot_region' => $lot->region, 'lot_city' => $lot->city, 'starting_price' => $lot->starting_price, 'negotiable_price' => $lot->negotiable_price, 'first_name' => $user->first_name, 'last_name' => $user->last_name, 'email' => $user->email, 'phone' => $user->phone); Mail::send('emails.newlot', $tempvar, function ($message) use($email) { $message->to($email)->subject('У систему UACE доданий новий лот!'); }); }
<option value>Не обрано</option> <?php $cats = \App\Cat::roots()->get(); ?> @foreach($cats as $category) <option @if($category->id == $auction->category)selected @endif value="{{ $category->id }}">{{ $category->name }}</option> @endforeach </select> </div> <div class="load_children"> <div class="form-group @if($errors->has('lot_type'))has-error @endif"> <label for="lot_type">Тип</label> <div id="loadChildren"> <?php $categories = \App\Cat::find($auction->category); $categories = $categories->children()->get(); ?> <select class="form-control input-lg" name="lot_type"> @foreach($categories as $category) <option @if($category->id == $auction->lot_type)selected @endif value="{{ $category->id }}">{{ $category->name }}</option> @endforeach </select> </div> </div> </div> <script>
public function postUpdateLot(Request $request, $id) { $category = Cat::find($request->lot_category); // Категория в которую добавляем лот // Обязательные поля для заполнения: название, категория, область, $rights = ['lot_title' => 'required', 'lot_category' => 'required', 'region' => 'required', 'city' => 'required']; // Если категория имеет подкатегории - добавляем указание подкатегории обязательным для заполнения полем if ($category->children()->count() > 0) { $rights = array_add($rights, 'lot_type', 'required'); // Тип лота } // Если добавлены прикрепления - добавляем валидацию по расширению файла if ($request->hasFile('documents')) { //$rights = array_add($rights, 'documents', 'mimes:jpeg,bmp,png,pdf,doc,docx'); } // Если объект свободной продажи if ($request->free_sale) { // Если выбрана договорная цена - поле стоимости необязательно для заполнения if (!$request->negotiable_price) { $rights = array_add($rights, 'starting_price', 'required'); // Стоимость } } else { $rights = array_add($rights, 'starting_price', 'required'); // Стоимость $rights = array_add($rights, 'guarantee_fee', 'required'); // Гарантийный взнос $rights = array_add($rights, 'bid_price', 'required'); // Цена шага $rights = array_add($rights, 'data_start', 'required'); // Дана начала аукциона $rights = array_add($rights, 'date_end', 'required'); // Дата завершения } // Запрашиваем список обязательных полей для текущей категории и типа лота $rights = $this->getRightsForCategory($request->lot_category, $request->lot_type, $rights); // Собственный текст для ошибок $messages = array('lot_title.required' => 'Поле «Назва лоту» обязательно для заполнения.', 'lot_category.required' => 'Вы не выбрали категорию лота.', 'lot_image.required' => 'Нужно загрузить хотя бы основную фотографию лота.', 'region.required' => 'Вы не выбрали область.', 'city.required' => 'Поле «Місто» обязательно для заполнения.', 'starting_price.required' => 'Поле «Стартова ціна» обязательно для заполнения.', 'guarantee_fee.required' => 'Поле «Гарантійний внесок» обязательно для заполнения.', 'bid_price.required' => 'Поле «Крок аукціону» обязательно для заполнения.', 'data_start.required' => 'Поле «Дата початку аукціону» обязательно для заполнения.', 'date_end.required' => 'Поле «Дата завершення аукціону» обязательно для заполнения.', 'property_material.required' => 'Вы не выбрали материал здания.', 'property_floors.required' => 'Поле «Кiлькiсть поверхiв» обязательно для заполнения.', 'property_floor.required' => "Поле «Поверх» обов'язково для заповнення.", 'property_areas.required' => 'Поле «Кiмнат/примiщень» обязательно для заполнения.', 'property_totalarea.required' => 'Поле «Загальна площа» обязательно для заполнения.', 'property_livingarea.required' => 'Поле «Житлова площа» обязательно для заполнения.', 'auto_mark.required' => 'Вы не выбрали марку автомобиля.', 'auto_model.required' => 'Поле «Модель» обязательно для заполнения.', 'auto_year.required' => 'Поле «Pік випуску» обязательно для заполнения.', 'auto_transmission.required' => 'Поле «Коробка передач» обязательно для заполнения.', 'auto_drive.required' => 'Поле «Тип привода» обязательно для заполнения.', 'auto_fuel.required' => 'Поле «Тип пального» обязательно для заполнения.', 'auto_doors.required' => 'Поле «Кількість дверей» обязательно для заполнения.'); // Если добавлены прикрепления - добавляем валидацию по расширению файла if ($request->hasFile('documents')) { //$rights = array_add($rights, 'documents', 'mimes:jpeg,bmp,png,pdf,doc,docx'); $files = $request->file('documents'); $i = 0; foreach ($files as $file) { //$rights = array_add($rights, 'documents'. $i, 'max:8000'); $messages['documents.' . $i . '.max'] = 'Розмір файлу «' . $file->getClientOriginalName() . '» перевищує достустимый (8 мб).'; $rights['documents.' . $i] = 'max:8000'; $i++; } } // Выполняем валидацию $validator = Validator::make($request->all(), $rights, $messages); // При обнаружении ошибки - возвращаем пользователя на предыдущую страницу и выводим ошибки if ($validator->fails()) { return redirect()->back()->withInput()->withErrors($validator->errors()); } /* * Обновление информации о лоте */ $create = Auction::where('id', '=', $id)->with('bidders')->first(); $create->title = $request->lot_title; $create->category = $request->lot_category; $create->lot_type = $request->lot_type; $this->getAddFieldsListCategory($request->lot_category, $create, $request); $create->more_information = $request->more_information; // Додаткові відомості $create->more_about = $request->more_about; // Відомості про майно, його склад, характеристики, опис $create->region = $request->region; // Область $create->city = $request->city; // Місцезнаходження $create->property_type = $request->property_type; // Тип майна $create->currency = $request->currency; // Валюта if ($request->lot_image) { $create->img = $request->lot_image; $create->img_min = $request->lot_image_min; } else { $create->img = "http://uace.com.ua/static/images/no-picture-max.jpg"; $create->img_min = "http://uace.com.ua/static/images/no-picture-min.jpg"; } // Если есть основная фотография if ($request->lot_image) { $create->img = $request->lot_image; $create->img_min = $request->lot_image_min; } else { // Если нет, ставим стандартные $create->img = "http://uace.com.ua/static/images/no-picture-max.jpg"; $create->img_min = "http://uace.com.ua/static/images/no-picture-min.jpg"; } // Если установлен флажок на "Свободная продажа" if ($request->free_sale) { $create->free_sale = 1; // Помечаем как свободно продаваемый объект // Если установлен флажок на "Ціна договірна" if ($request->negotiable_price) { $create->negotiable_price = 1; $create->starting_price = null; } else { // В противном случае записываем введенную цену $create->starting_price = str_replace(" ", "", $request->starting_price); $create->negotiable_price = null; } $create->data_start = null; // Записываем дату начала $create->date_end = null; // Записываем дату завершения $create->guarantee_fee = null; // Гарантийный взнос $create->bid_price = null; // Стоимость шага } else { $create->free_sale = null; } // Если добавлен предмет на аукцион if (!$request->free_sale) { $create->free_sale = null; // Помечаем, что это не свободная продажа $create->data_start = Carbon::parse($request->data_start)->format('Y-m-d H:i'); // Записываем дату начала $create->date_end = Carbon::parse($request->date_end)->format('Y-m-d H:i'); // Записываем дату завершения $create->guarantee_fee = str_replace(" ", "", $request->guarantee_fee); // Гарантийный взнос $create->starting_price = str_replace(" ", "", $request->starting_price); // Стартовую цену $create->bid_price = str_replace(" ", "", $request->bid_price); // Стоимость шага } // Если установлен флажок на "Можливий торг" if ($request->possible_bargain) { $create->possible_bargain = 1; } else { $create->possible_bargain = null; } // Если выбран статус Архив if ($request->in_archive) { $create->in_archive = 1; $create->save(); } else { $create->in_archive = 0; $create->save(); } if ($create->status === $request->status) { $create->status = $request->status; $create->save(); } elseif (!$create->free_sale && $request->status == 2) { $this->sendNotificationToUser($create->user, 3, 'default', $create->id, $create->title); // Отправка оповещения владельцу $create->status = 2; $create->save(); } elseif (!$create->free_sale && $request->status == 3) { $this->sendNotificationAllBidders($create->id, $create->title, $create->bidders); // Отправка оповещения всем допущенным участникам $create->status = 3; $create->save(); } elseif ($create->free_sale && $request->status == 3 || $create->free_sale && $request->status == 5 || $create->free_sale && $request->status == 7) { $this->sendNotificationToUser($create->user, $request->status, 'free', $create->id, $create->title); if ($request->status == 7) { $create->in_archive = 1; // Помещаем аукцион в Архив } elseif ($request->status == 3) { $create->in_archive = 0; } $create->status = $request->status; $create->save(); } elseif (!$create->free_sale && $request->status == 7) { $user = App\User::find($create->user); // Информация о создателе аукциона $win = App\Bets::where('auction_id', '=', $create->id)->orderBy('created_at', 'desc')->first(); // Определение победителя $create->in_archive = 1; // Помещаем аукцион в Архив if ($win) { $win_user = App\User::find($win->user_id); // Информация о победителе $win_status = App\Bidders::where('auction_id', '=', $create->id)->where('user_id', '=', $win->user_id)->first(); $win_status->status = 2; $win_status->save(); $create->final_price = $win->bet; $create->status = 7; // Смена статуса на "Торги відбулися" $create->save(); // Отправка письма создателю аукциона Mail::queue('emails.auction-end', ['first_name' => $user->first_name, 'last_name' => $user->last_name, 'middle_name' => $user->middle_name, 'auction_id' => $create->id, 'auction_cyr' => $create->currency, 'auction_title' => $create->title, 'auction_status' => 7, 'win_first_name' => $win_user->first_name, 'win_last_name' => $win_user->last_name, 'win_middle_name' => $win_user->middle_name, 'win_email' => $win_user->email, 'win_phone' => $win_user->phone, 'win_cost' => $win->bet], function ($message) use($user) { $message->to($user->email, $user->first_name . ' ' . $user->last_name)->subject('Аукціон завершено'); }); // Отправка письма победителю аукциона Mail::queue('emails.auction-end-winner', ['first_name' => $win_user->first_name, 'last_name' => $win_user->last_name, 'auction_id' => $create->id, 'auction_title' => $create->title, 'auction_status' => 7, 'win_cost' => $win->bet], function ($message) use($win_user) { $message->to($win_user->email, $win_user->first_name . ' ' . $win_user->last_name)->subject('Аукціон завершено'); }); // Отправка письма администратору $adminEmail = $this->globalSiteSettings['admin_email']; Mail::queue('emails.auction-end-admin', ['auction_id' => $create->id, 'auction_title' => $create->title, 'auction_status' => 7, 'win_first_name' => $win_user->first_name, 'win_last_name' => $win_user->last_name, 'win_middle_name' => $win_user->middle_name, 'win_email' => $win_user->email, 'win_phone' => $win_user->phone, 'win_cost' => $win->bet], function ($message) use($adminEmail) { $message->to($adminEmail)->subject('Аукціон завершено'); }); } else { $create->status = 8; // Смена статуса на "Торги не відбулися" $create->save(); // Отправка письма создателю аукциона Mail::queue('emails.auction-end', ['first_name' => $user->first_name, 'last_name' => $user->last_name, 'middle_name' => $user->middle_name, 'auction_id' => $create->id, 'auction_title' => $create->title, 'auction_status' => 8], function ($message) use($user) { $message->to($user->email, $user->first_name . ' ' . $user->last_name)->subject('Аукціон завершено'); }); // Отправка письма администратору $adminEmail = $this->globalSiteSettings['admin_email']; Mail::queue('emails.auction-end-admin', ['auction_id' => $create->id, 'auction_title' => $create->title, 'auction_status' => 8], function ($message) use($adminEmail) { $message->to($adminEmail)->subject('Аукціон завершено'); }); } } else { $create->status = $request->status; $create->save(); } if ($request->more_images) { $attaches = App\Uploads::find($request->more_images); foreach ($attaches as $attach) { $attach->auction_id = $create->id; $attach->type = 'image'; $attach->save(); } } if ($request->hasFile('documents')) { $files = $request->file('documents'); foreach ($files as $file) { $surl = $this->globalSiteSettings['site_url']; $filename = preg_replace('/.[^.]*$/', '', $file->getClientOriginalName()); $filename = $filename . '-' . mt_rand(10, 100) . '.' . $file->getClientOriginalExtension(); $genLink = $surl . '/uploads/docs/' . $filename; // Генерируем ссылку $file->move(public_path() . '/uploads/docs/', $filename); // Перемещаем файл $upload = new App\Uploads(); // Создаем экземпляр модели $upload->type = 'doc'; // Задаем тип экземпляра - документ $upload->link = $genLink; // Записываем сгенерированную ранее ссылку $upload->name = preg_replace('/.[^.]*$/', '', $file->getClientOriginalName()); // Записываем имя $upload->auction_id = $create->id; // Записываем сгенерированную ранее ссылку $upload->save(); // Сохраняем } } // Сбрасываем закешированные данные виджета "Останні надходження" if (Cache::has('last_lots')) { Cache::forget('last_lots'); } return redirect('/dashboard/auctions'); }
public function deleteCategory($id) { $cat = Cat::find($id); $cat->delete(); }
/** * Display a listing of the resource. * * @return Response */ public function index($id, Request $request) { $auctions = Auction::query(); $auctions = $auctions->where('category', '=', $id); $auctions = $auctions->where('status', '>', 0); if ($request->sortBy == 'lowcost') { $auctions = $auctions->orderBy('starting_price', 'asc'); } elseif ($request->sortBy == 'topcost') { $auctions = $auctions->orderBy('starting_price', 'desc'); } elseif ($request->sortBy == 'new') { $auctions = $auctions->orderBy('created_at', 'desc'); } elseif ($request->sortBy == 'new') { $auctions = $auctions->orderBy('created_at', 'desc'); } else { $request->sortBy = 'new'; $auctions = $auctions->orderBy('created_at', 'desc'); } if ($request->items_per_page) { $auctions = $auctions->paginate($request->items_per_page); } else { $auctions = $auctions->paginate(10); } $categories = Cat::roots()->get(); $currentCategory = Cat::find($id); return view('auction.categories.index', ['auctions' => $auctions, 'categories' => $categories, 'currentCategory' => $currentCategory, 'request' => $request]); }
/** * Обрабатываем стандартный и расширенный поиск для категории "Техника и мебель" */ public function getStuffQuery(Request $request) { $auctions = Auction::query(); $auctions = $auctions->where('category', '=', $request->category); if ($request->lot_type) { $auctions = $auctions->where('lot_type', '=', $request->lot_type); } if ($request->region) { $auctions = $auctions->where('region', '=', $request->region); } if ($request->title) { $auctions = $auctions->where('title', 'like', '%' . $request->title . '%')->orWhere('id', '=', $request->title); } if ($request->city) { $auctions = $auctions->where('city', 'like', '%' . $request->city . '%'); } if ($request->lot_DebtorName) { $auctions = $auctions->where('lot_DebtorName', 'like', '%' . $request->lot_DebtorName . '%'); } if ($request->lot_EDRPOU) { $auctions = $auctions->where('lot_EDRPOU', '=', $request->lot_EDRPOU); } if ($request->property_type) { $auctions = $auctions->whereIn('property_type', $request->property_type); } if ($request->price_from) { $auctions = $auctions->where('starting_price', '<=', $request->price_from); } if ($request->price_to) { $auctions = $auctions->where('starting_price', '<=', $request->price_to); } if ($request->date_start) { $auctions = $auctions->where('data_start', '>=', Carbon::parse($request->date_start)->format('Y-m-d')); } if ($request->date_end) { $auctions = $auctions->where('date_end', '<=', Carbon::parse($request->date_end)->format('Y-m-d')); } if ($request->lot_number) { $auctions = $auctions->where('id', '=', $request->lot_number); } if ($request->lot_user) { $searchTerms = explode(' ', $request->lot_user); $query = User::query(); foreach ($searchTerms as $searchTerm) { $query->where(function ($q) use($searchTerm) { $q->where('first_name', 'like', '%' . $searchTerm . '%')->orWhere('last_name', 'like', '%' . $searchTerm . '%')->orWhere('legal_entity', 'like', '%' . $searchTerm . '%'); }); } $users = $query->get(); // Массив для ID обнаруженных пользователей $users_id = []; // Если есть пользователи, соответствующие запросу if ($users->count() > 0) { // Перебираем каждого пользователя foreach ($users as $user) { // Добавляем ID пользователя в массив $users_id array_push($users_id, $user->id); } } // Применяем фильтрацию по совпадению с ID в массиве $users_id $auctions = $auctions->whereIn('user', $users_id); } if ($request->stuff_brand) { $auctions = $auctions->where('stuff_brand', '=', $request->stuff_brand); } if ($request->stuff_model) { $auctions = $auctions->where('stuff_model', '=', $request->stuff_model); } if ($request->stuff_year) { $auctions = $auctions->where('stuff_year', '=', $request->stuff_year); } if ($request->stuff_diagonal) { $auctions = $auctions->where('stuff_diagonal', '=', $request->stuff_diagonal); } $auctions = $auctions->paginate(10); $categories = Cat::roots()->get(); $currentCategory = Cat::find($request->category); return view('auction.search', ['auctions' => $auctions, 'categories' => $categories, 'currentCategory' => $currentCategory, 'request' => $request]); }