예제 #1
0
    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]);
    }
예제 #2
0
 /**
  * Отправка сообщения о добавленном лоте
  */
 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 доданий новий лот!');
     });
 }
예제 #3
0
            <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>


예제 #4
0
 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]);
 }
예제 #7
0
 /**
  * Обрабатываем стандартный и расширенный поиск для категории "Техника и мебель"
  */
 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]);
 }