diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 8f0de65..0000000 --- a/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -indent_size = 4 -indent_style = space -insert_final_newline = true -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false - -[*.{yml,yaml}] -indent_size = 2 - -[docker-compose.yml] -indent_size = 4 diff --git a/.env.example b/.env.example deleted file mode 100644 index ea0665b..0000000 --- a/.env.example +++ /dev/null @@ -1,59 +0,0 @@ -APP_NAME=Laravel -APP_ENV=local -APP_KEY= -APP_DEBUG=true -APP_URL=http://localhost - -LOG_CHANNEL=stack -LOG_DEPRECATIONS_CHANNEL=null -LOG_LEVEL=debug - -DB_CONNECTION=mysql -DB_HOST=127.0.0.1 -DB_PORT=3306 -DB_DATABASE=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailpit -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS="hello@example.com" -MAIL_FROM_NAME="${APP_NAME}" - -AWS_ACCESS_KEY_ID= -AWS_SECRET_ACCESS_KEY= -AWS_DEFAULT_REGION=us-east-1 -AWS_BUCKET= -AWS_USE_PATH_STYLE_ENDPOINT=false - -PUSHER_APP_ID= -PUSHER_APP_KEY= -PUSHER_APP_SECRET= -PUSHER_HOST= -PUSHER_PORT=443 -PUSHER_SCHEME=https -PUSHER_APP_CLUSTER=mt1 - -VITE_APP_NAME="${APP_NAME}" -VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -VITE_PUSHER_HOST="${PUSHER_HOST}" -VITE_PUSHER_PORT="${PUSHER_PORT}" -VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" -VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index fcb21d3..0000000 --- a/.gitattributes +++ /dev/null @@ -1,11 +0,0 @@ -* text=auto eol=lf - -*.blade.php diff=html -*.css diff=css -*.html diff=html -*.md diff=markdown -*.php diff=php - -/.github export-ignore -CHANGELOG.md export-ignore -.styleci.yml export-ignore diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 7fe978f..0000000 --- a/.gitignore +++ /dev/null @@ -1,19 +0,0 @@ -/.phpunit.cache -/node_modules -/public/build -/public/hot -/public/storage -/storage/*.key -/vendor -.env -.env.backup -.env.production -.phpunit.result.cache -Homestead.json -Homestead.yaml -auth.json -npm-debug.log -yarn-error.log -/.fleet -/.idea -/.vscode diff --git a/.npmrc b/.npmrc deleted file mode 100644 index 29b6740..0000000 Binary files a/.npmrc and /dev/null differ diff --git a/Modules/Taxi/App/Console/SendOrdersToTaxiCommand.php b/Modules/Taxi/App/Console/SendOrdersToTaxiCommand.php deleted file mode 100644 index 072024a..0000000 --- a/Modules/Taxi/App/Console/SendOrdersToTaxiCommand.php +++ /dev/null @@ -1,90 +0,0 @@ -executeCommand(function () { - $todayOrders = TaxiMain::where('cancel_rqst', 0) - ->where('taxi_date', (new DateTime())->format('Y-m-d')) - ->get() - ->toArray(); - - if (!$todayOrders) { - Mail::send(new Mailer( - new BaseMailerObj( - - ) - )); - echo '
'; var_dump('da'); echo'
'; - } else { - echo '
'; var_dump('net'); echo'
'; - } - - throw new Error('Ошипка!'); - }, 'еще инва'); - - // try { - // throw new Error('Ошипка!'); - // } catch (\Throwable $th) { - // \Log::channel('schedule_err')->error($th->getFile() . ": " . $th->getMessage() . " Line: " . $th->getLine()); - // } - - //$this->info('Daily report generated at ' . now()); - - return 0; - } - - /** - * Get the console command arguments. - */ - protected function getArguments(): array - { - return [ - ['example', InputArgument::REQUIRED, 'An example argument.'], - ]; - } - - /** - * Get the console command options. - */ - protected function getOptions(): array - { - return [ - ['example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null], - ]; - } -} diff --git a/Modules/Taxi/App/DTO/TaxiOrderDTO.php b/Modules/Taxi/App/DTO/TaxiOrderDTO.php deleted file mode 100644 index 995f132..0000000 --- a/Modules/Taxi/App/DTO/TaxiOrderDTO.php +++ /dev/null @@ -1,65 +0,0 @@ -validated(); - - switch ($rqstMethod) { - case 'PATCH': - return new self( - id: $validated['id'], - //При обновлении запроса логин пользователя должен оставаться неизменным - emp_login: $rqst->emp_login, - emp_phone: $validated['emp_phone'], - taxi_date: $validated['taxi_date'], - taxi_time: $validated['taxi_time'], - taxi_address_from: $validated['taxi_address_from'], - taxi_address_to: $validated['taxi_address_to'], - cancel_rqst: $validated['cancel_rqst'] ?? null, - ); - break; - default: - return new self( - id: $validated['id'] ?? null, - emp_login: $validated['emp_login'], - emp_phone: $validated['emp_phone'], - taxi_date: $validated['taxi_date'], - taxi_time: $validated['taxi_time'], - taxi_address_from: $validated['taxi_address_from'], - taxi_address_to: $validated['taxi_address_to'], - cancel_rqst: $validated['cancel_rqst'] ?? null, - ); - break; - } - } -} diff --git a/Modules/Taxi/App/Http/Controllers/.gitkeep b/Modules/Taxi/App/Http/Controllers/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/Modules/Taxi/App/Http/Controllers/TaxiController.php b/Modules/Taxi/App/Http/Controllers/TaxiController.php deleted file mode 100644 index ed160a9..0000000 --- a/Modules/Taxi/App/Http/Controllers/TaxiController.php +++ /dev/null @@ -1,350 +0,0 @@ -first(); - - return $taxiOrder; - } - - - /** - * Получение адресов офисов для подстановки в запросы такси - * - * @return array - */ - public function getOfficeAddress() - { - $taxiAddress = TaxiModels\OfficeAddress::all(); - - return $taxiAddress; - } - - - /** - * Получение всех активных заказов - * - * @return array - */ - public function getActiveOrders() - { - $todaydate = new DateTime(); - $todaydate->setTime(00, 00, 00); - $todaydate = $todaydate->format('Y-m-d'); - $orders = TaxiModels\TaxiMain::where('taxi_date', '>=', $todaydate) - ->get(); - - return $orders; - } - - - /** - * Метод получения заказов по условиям фильтра - * - * @param Request $rqst запрос с параметрами поиска - * @return string - */ - public function getFilterOrders(Request $rqst) - { - $rqstCond = []; - foreach ($rqst->all() as $fieldName => $fieldVal) { - if (!$fieldVal) continue; - $rqstCond[] = [$fieldName, '=', $fieldVal]; - } - $filterRqst = TaxiModels\TaxiMain::where($rqstCond)->get(); - - return json_encode($filterRqst->toArray()); - } - - - //ГАВРИЛОВ используй транзакцию, а то создается запрос, не отправляется письмо и сообщение об ошибке - /** - * Show the form for creating a new resource. - */ - public function createTaxiOrder(TaxiOrderRequest $rqst) - { - $validateData = TaxiOrderDTO::setTaxiOrderDTO($rqst, $rqst->method()); - //Пытаемся найти уже существующий запрос на этот же логин и эту же дату. Если запрос найден, возвращаем ошибку. - $searchExistsOrder = TaxiModels\TaxiMain::where([ - ['emp_login', '=', $validateData->emp_login], - ['taxi_date', '=', $validateData->taxi_date] - ])->take(1)->get(); - if (count($searchExistsOrder)) { - return response()->json(['message' => "Ошибка! Заявка для сотрудника $validateData->emp_login на дату $validateData->taxi_date уже существует"], 400); - } - // $createRqstMsg; - try { - $newOrderId = (new TaxiModels\TaxiMain())->createOrder($validateData); - //$newOrderId = $this->orderService->createOrder($validateData); - $createRqstMsg = "Заявка успешно создана. Номер $newOrderId"; - #Гаврилов - //ПРОВЕРЬ, ЧТОБЫ ПИСЬМО НЕ ОТПРАВЛЯЛОСЬ, ЕСЛИ ВОЗНИКАЕТ ОШИБКА НА ЭТАПЕ СОЗДАНИЯ ЗАЯВКИ - //Один метод отправки письма для всех методов работы с заказом: создание, редактирование, отмена - $this->sendMailService->sendMail(new NewOrderMail($validateData, $newOrderId)); - // SendMailNewOrder::dispatch(json_decode(json_encode($validateData), true), $newOrderId)->onQueue('emails')->delay(10); - // Mail::send(new Mailer( - // [$validateData->emp_login], - // 'Создание заказа на такси', - // "Для вас создана заявка на заказ такси на дату {$validateData->taxi_date} и время {$validateData->taxi_time}. Номер заказа {$newOrderId}", - // #Гаврилов - // //ЗДЕСЬ НЕПОНЯТНО ОТКУДА ВЗЯТЬ ЗНАЧЕНИЕ. ОБРАТИТЬСЯ К ЛОКАЛЬНО МОДУЛЬНОМУ ENV? - // config('taxi.name_ru'), - // )); - return response()->json( ['message' => "Заявка успешно создана. Номер заявки $newOrderId"] ); - } catch (\Throwable $t) { - #Гаврилов - //ОТПРАВКА СООБЩЕНИЯ С ОШИБКОЙ. ЗАТЕСТИ и отправляй response - //ОШИБКИ $T->GETmESSAGE НУЖНО ЛОГИРОВАТЬ, НО ПОЛЬЗОВАТЕЛЯМ ВЫВОДИТЬ ПРОСТО СООБЩЕНИЕ оШИБКА, ИНАЧЕ ОНИ ВИДЯТ ТЕХН ЧЕСКИЙ ТЕКСТ - //СНАЧАЛА ПЕРЕХВАТЫЙ EXCEPTION, ПОТОМ УЖЕ THOWBLE. EXCEPTION ВЫВОДИ ПОЛЬЗОВАТЕЛЮ, THORWBLE ЛОГИРУЙ ОТДЕЛЬНО - echo '
'; var_dump($t->getMessage()); echo'
'; - echo '
'; var_dump($t->getTrace()); echo'
'; - $createRqstMsg = "Ошибка!" . $t->getMessage() . ". Заявка не создана"; - return response()->json(['message' => $createRqstMsg], 400); - } - - //ГАВРИЛОВ - //ДОБАВЬ ФОРМИРОВАНИЕ ОТВЕТА ЧЕРЕЗ ГЕНЕРАЦИЮ РЕСУРСА, а не через response() - } - - - #Гаврилов - //ИСПОЛЬЗУЙ TaxiOrderRequest ПРИ ОБРАБОТКЕ ЗАЯВОК НА ТАКСИ - - /** - * Метод отмены запроса - * - * @param integer $rqstId идентификатор запроса - * @return string - */ - public function cancelRqst(int $rqstId): string - { - #Гаврилов - //ПОПРОБУЙ ОТПРАВИТЬ ЗАПРОС К API ЕНДПОИНТУ (ОТМЕНА ЗАПРОСА НА ТАКСИ) ЧЕРЕЗ POSTMAN С ПЕРЕДАЧЕЙ ЗАГОЛОВКА АУТЕНТИФИКАЦИИ С SANCTUM ТОКЕНОМ. ДОЛЖЕН ПРОПУСТИТЬ, А БЕЗ ЗАГОЛОВКА НЕ ДОЛЖЕН - $rqstData = $this->getOrderById($rqstId); - try { - #Гаврилов - //ПЕРЕНЕСИ ЭТУ ПРОВЕРКУ В РОУТИНГ? FINDORFAIL С РЕДИРЕКТОМ И ОШИБКОЙ - if (!$rqstData) { - throw new \Exception("Запрос $rqstId не существует"); - } - if (!$this->checkRqstDate($rqstData->taxi_date)) { - throw new \Exception("Дата запроса $rqstId уже прошла"); - } - } catch (\Throwable $t) { - return response()->json([ - 'errorMsg' => "Ошибка: $t->getMessage(). Заявка не отменена", - ], 400); - } - - $rqstData['cancel_rqst'] = 1; - $rqstData->save(); - - $this->sendMailService->sendCancelOrderMail($validateData, $newOrderId); - - // Mail::send(new Mailer( - // [$rqstData->emp_login], - // 'Отмена заказа на такси', - // "Заказ номер $rqstId на дату $rqstData->taxi_date и время $rqstData->taxi_time отменен", - // $this->appName)); - - return redirect('/taxi/home')->with([ - 'notification' => "Запрос $rqstId отменен", - 'notification_err' => false - ]); - } - - - /** - * Проверяем находится ли дата запроса на такси в диапазоне сегодняшнего или завтрашнего дня. - * - * @param string $rqstDate дата запроса на такси - * @return boolean - */ - private function checkRqstDate($rqstDate): bool - { - $todaydate = new DateTime(); - $todaydate->setTime(00, 00, 00); - - return new DateTime($rqstDate) >= $todaydate; - } - - - /** - * Получаем временные промежутки - * - * @return array - */ - public function getTimePeriods() - { - $empAllData = TaxiModels\TaxiTimePeriod::select('time_period', 'is_morning_time') - ->where('archive', 0) - ->get(); - - return $empAllData; - } - - - /** - * Метод получает информацию по всем активным пользователям - * - * @return array - */ - public function getActiveUsersInfo() - { - $empAllData = OldMagicModels\CcEmp::whereIn('emp_area', ['Курск', 'Пенза']) - ->whereNotIn('emp_state', ['Уволен', 'Декрет', 'Перевод на позицию', 'Перевод в ГРАН']) - ->get(); - foreach ($empAllData as &$empData) { - $empData['full_name'] = $empData['emp_surname'] . " " . $empData['emp_name'] . " " . $empData['emp_surname']; - $empData['extension_number'] = $empData['emp_phone']; - $empData['emp_phone'] = $empData['emp_mob_phone']; - } - - return $empAllData; - } - - - /** - * Метод получает информацию по конкретному пользователю - * - * @return array - */ - public function getUserInfoByLogin(string $userLogin) - { - $empLoginData = OldMagicModels\CcEmp::where('emp_login', $userLogin) - ->get(); - - // dd($empLoginData); - $empLoginData[0]['full_name'] = $empLoginData[0]['emp_surname'] . " " . $empLoginData[0]['emp_name'] . " " . $empLoginData[0]['emp_surname']; - $empLoginData[0]['extension_number'] = $empLoginData[0]['emp_phone']; - $empLoginData[0]['emp_phone'] = $empLoginData[0]['emp_mob_phone']; - - return $empLoginData; - } - - - #Гаврилов - //НЕ ЗАБУДЬ УДАЛИТЬ - public function testRedisMethod() - { - RedisNotifications::module('taxi') - ->notifications(['текст1', 'tеуые2']) - ->types(['error', 'success']) - ->put(); - } - - - /** - * Обновление заявки на такси - * - * @param TaxiOrderRequest $rqst информация по измененному запросу - * @return response - */ - public function updateTaxiOrder(TaxiOrderRequest $rqst) - { - try { - DB::beginTransaction(); - #Гаврилов - //ЕЩЕ РАЗ, ЧТО ЗА LOCKFORUPDATE - $orderData = TaxiModels\TaxiMain::lockForUpdate()->find($rqst->id); - $oldOrderData = TaxiModels\TaxiMain::find($rqst->id); - - if (!$orderData) { - throw new Exception("Заказ номер " . $rqst->id . " не найден"); - //return response()->json(['message' => 'Заказ номер ' . $rqst->id . ' не найден'], 400); - } - $editOrderData = TaxiOrderDTO::setTaxiOrderDTO($rqst, $rqst->method()); - #Гаврилов - //НА ДОМАШНЕЙ СТРАНИЦЕ ПОКАЗЫВАТЬ ТОЛЬКО ТЕ ЗАПРОСЫ, ДАТА КОТОРЫХ СЕГОДНЯ ИЛИ ЗАВТРА - $dateInterval = (new DateTime())->diff(new DateTime($orderData->taxi_date)); - if ($dateInterval->format('%R') == '-' && $dateInterval->format('%a') >= 1) { - throw new Exception("Нельзя менять заявки, дата которых уже прошла"); - // return response()->json(['message' => 'Нельзя менять заявки, дата которых уже прошла'], 400); - } - foreach($editOrderData as $fieldName => $fieldVal) { - if (isset($orderData->$fieldName)) { - $orderData[$fieldName] = $fieldVal; - } - } - $orderDataDiff = $orderData->getDirty(); - if (empty($orderDataDiff)) { - throw new Exception("Вы не внесли никаких изменений"); - //return response()->json(['message' => 'Вы не внесли никаких изменений'], 400); - } - $orderData->save(); - $this->sendMailService->sendEditOrderMail($oldOrderData->toArray(), $orderDataDiff, $orderData['id']); - - DB::commit(); - - return response()->json(['message' => 'Заявка успешно изменена'], 200); - } catch (\Exception $e) { - DB::rollBack(); - - return response()->json(['message' => "Ошибка." . $e->getMessage() . ". Не удалось обновить заявку"], 400); - } - - - - //ГАВРИЛОВ. ДОБАВЬ БЛОКИРОВКУ В МОМЕНТ ПОЛУЧЕНИЯ ДАННЫХ ПО РЕДАКТИРУЕМОМУ ЗАПРОСУ И ДО МОМЕНТА ЕГО ОБНОВЛЕНИЯ. ЛИБО ЧЕРЕЗ УСТАНОВКУ УРОВНЯ ИЗОЛЯЦИИ - - //ГАВРИЛОВ. ДОБАВЬ В DTO НЕ ОБНУЛЕНИЕ НЕНУЖНЫХД ДАННЫХ, А ПРИНУДИТЕЬНАЯ ИХ УСТАНОВКА. НАПРИМЕР ПРИ ОБНОВЛЕНИИ ЗАПРОСА НА ТАКСИ, УСТАНАВЛИВАТЬ EMP_LOGIN = ПЕРЕДАННОМУ ЗНАЧЕНИЮ, ВЗЯТОМУ ИЗ СУЩЕСТВУЮЩЕГО ЗАПРОСА. - - //Обновляем текущую модель, добавляя туда измененные значения, затем проверяем есть ли измененные значения через getDirty() - - - - - - //ГАВРИЛОВ. убрать поле Запрос актуален? и при отмене заявки убирать ее из таблицы Активные заявки - - //гаврилов. СДЕЛАТЬ ВОЗМОЖНОСТЬ ВЫГРУЗИТЬ В ОТЧЕТНОСТЬ ВСЕ ИМЕЮЩИЕСЯ ЗАЯВКИ В CSV ФАЙЛ. - } -} diff --git a/Modules/Taxi/App/Http/Middleware/CheckTimeRqstAvailability.php b/Modules/Taxi/App/Http/Middleware/CheckTimeRqstAvailability.php deleted file mode 100644 index acd5122..0000000 --- a/Modules/Taxi/App/Http/Middleware/CheckTimeRqstAvailability.php +++ /dev/null @@ -1,52 +0,0 @@ -setTimezone($timezone); - $timeMax = (new \DateTime())->setTimezone($timezone); - $timeMin = (new \DateTime())->setTimezone($timezone); - $timeMax->setTime($maxRqstTime, 00, 00); - $timeMin->setTime($minRqstTime, 00, 00); - - #Гаврилов - //ПОМЕНЯЙ - if (!($timeNow > $timeMin && $timeNow < $timeMax)) { - //if (!($timeNow > $timeMin && $timeNow > $timeMax)) { - $errMsg = "Работа с заявками на такси заблокирована с $maxRqstTime:00 по 0$minRqstTime:00"; - #Гаврилов - //ПОДУМАТЬ КАКОЙ КОД ЛУЧШЕ ВЕРНУТЬ - //Метод expectsJson позволяет определить вызывается ли api роут через ajax/fetch, либо web route. - if ($request->expectsJson()) { - return response()->json([ - 'errorMsg' => $errMsg - ], 400); - } else { - #Гаврилов - //ПРОВЕРЬ КОГДА РЕАЛИЗУЕШЬ ОПОВЕЩЕНИЯ - return redirect('/taxi/home')->with([ - 'notification' => $errMsg, - 'notification_err' => true - ]); - } - } else { - return $next($request); - } - } -} diff --git a/Modules/Taxi/App/Http/Requests/TaxiOrderRequest.php b/Modules/Taxi/App/Http/Requests/TaxiOrderRequest.php deleted file mode 100644 index effc731..0000000 --- a/Modules/Taxi/App/Http/Requests/TaxiOrderRequest.php +++ /dev/null @@ -1,109 +0,0 @@ -'; var_dump($this->all()); echo''; - } - - - /** - * Get the validation rules that apply to the request. - */ - public function rules(): array - { - //Получаем список активных пользователей - $empActiveLogins = OldMagicModels\CcEmp::select('emp_login') - ->whereNotIn('emp_state', ['Уволен', 'Декрет']) - ->get() - ->toArray(); - //Правила валидации - $validationRules = [ - 'id' => [ - 'int' - ], - 'taxi_date' => [ - 'date_format:Y-m-d', - //Заказ можно создать только на сегодняшний или завтрашний день - Rule::in([ - (new DateTime())->format('Y-m-d'), - (new DateTime())->modify('+1 day')->format('Y-m-d') - ]), - ], - 'taxi_time' => [ - 'required', - 'string', - 'regex:/^[0-9]{2}:[0-9]{2}$/', //время в формате 00:00 - ], - 'cancel_rqst' => 'boolean', - 'emp_phone' => [ - 'required', - 'int', - 'regex:/^(7|8)?[0-9]{10}$/' - ], - 'emp_login' => [ - $validationRules['emp_login'] = [ - 'required', - 'string', - 'regex:/^[a-z\-]+[0-9]*$/', - //Логины ищем среди активных логинов на текущий момент - Rule::in( - array_map(fn($el) => $el['emp_login'], $empActiveLogins) - ) - ], - ], - 'taxi_address_from' => [ - 'required', - 'string', - 'max: 500' - ], - 'taxi_address_to' => [ - 'required', - 'string', - 'max: 500' - ] - ]; - - //Во время создания запроса поле ID не валидируется - if ($this->isMethod('POST')){ - $validationRules['id'] = [ - 'prohibited' - ]; - } - - return $validationRules; - } - - /** - * Determine if the user is authorized to make this request. - */ - public function authorize(): bool - { - return true; - } - - /** - * Переопределение сообщений об ошибках валидации - * - * @return array - */ - public function messages(): array - { - return [ - 'taxi_date.in' => 'Заявку на такси можно завести только на сегодняшний или завтрашний день' - ]; - } -} diff --git a/Modules/Taxi/App/Jobs/TaxiMailJob.php b/Modules/Taxi/App/Jobs/TaxiMailJob.php deleted file mode 100644 index a91a9ca..0000000 --- a/Modules/Taxi/App/Jobs/TaxiMailJob.php +++ /dev/null @@ -1,40 +0,0 @@ -jobData - )); - } -} diff --git a/Modules/Taxi/App/Mail/BaseTaxiMail.php b/Modules/Taxi/App/Mail/BaseTaxiMail.php deleted file mode 100644 index d3a2c43..0000000 --- a/Modules/Taxi/App/Mail/BaseTaxiMail.php +++ /dev/null @@ -1,32 +0,0 @@ -orderData->emp_login], - "Создана заявка на такси", - "Для вас создана заявка на такси № {$this->orderId}: - ", - config('taxi.name_ru'), - ); - } -} diff --git a/Modules/Taxi/App/Models/OfficeAddress.php b/Modules/Taxi/App/Models/OfficeAddress.php deleted file mode 100644 index eaa3e33..0000000 --- a/Modules/Taxi/App/Models/OfficeAddress.php +++ /dev/null @@ -1,13 +0,0 @@ - 'dgavrilov', - // ]; - - // public function getActivitylogOptions(): LogOptions - // { - // return LogOptions::defaults() - // ->logAll() - // ->logOnlyDirty() - // ->useLogName('Taxi') - // ->logExcept(['created_at', 'updated_at']); - - // } - - public function __construct() - { - parent::__construct(); - //В трейте LogsActivity_custom это свойство отвечает за название приложения, события в котором логируются. Оно записывается в поле activity_log.log_name - $this->logActivity_custom__name = 'Taxi'; - $this->addCustomLogProperties(['custom__test' => 'test']); - } - - //ГАВРИЛОВ. сделай метод не статическим - public static function getFieldsTitle() - { - return [ - 'id' => 'Номер запроса', - 'emp_login' => 'Логин сотрудника', - 'emp_phone' => 'Телефон сотрудника', - 'taxi_date' => 'Дата заказа', - 'taxi_time' => 'Время заказа', - 'taxi_address_from' => 'Адрес откуда', - 'taxi_address_to' => 'Адрес куда', - 'cancel_rqst' => 'Запрос отменен', - ]; - - } - - public function createOrder(TaxiOrderDTO $orderData): string - { - //ГАВРИЛОВ. проверь будет ли возвращаться ошибка без try catch - // try { - - $this->logBusinessEvent(LogBusinessEvents::Create); - $newOrder = $this->create( - [ - 'emp_login' => $orderData->emp_login, - 'taxi_date' => $orderData->taxi_date, - 'emp_phone' => $orderData->emp_phone, - 'taxi_time' => $orderData->taxi_time, - 'taxi_address_from' => $orderData->taxi_address_from, - 'taxi_address_to' => $orderData->taxi_address_to - ] - ); - return $newOrder->id; - // } catch (\Exception $e) { - // return $e->getMessage(); - // } - } - - // /** - // * @return string Метод нужен для переопределения параметра трейта. Простое переопределение вызывает конфликт - // */ - //protected $logActivity_custom__name = 'Taxi'; - // public function getLogName(): string - // { - // return 'Taxi'; - // } - - //protected $logActivity_custom__name; - - // public function getActivitylogOptions(): LogOptions - // { - // //Через метод default() получаем параметры класса логирования по умолчанию. Ниже можем их переопределять в зависимости от специфики работы с моделью - // $logOptions = LogOptions::defaults() - // ->logOnly(['*']); //Устанавиваем список логируемых данных (полей модели), либо, как в этом случае, логируем все поля - // //->logExcept(['created_at', 'updated_at']) //Не логируем поля изменения и создания записи в ЛЮБОМ случае - // //->logOnlyDirty(); //Логируем только те поля, которые были изменены - // $logOptions->logName = 'Taxi'; //Устанавливаем значение для имени приложения - - // return $logOptions; - // } -} diff --git a/Modules/Taxi/App/Models/TaxiTimePeriod.php b/Modules/Taxi/App/Models/TaxiTimePeriod.php deleted file mode 100644 index f0da70f..0000000 --- a/Modules/Taxi/App/Models/TaxiTimePeriod.php +++ /dev/null @@ -1,14 +0,0 @@ -mapApiRoutes(); - - $this->mapWebRoutes(); - } - - /** - * Define the "web" routes for the application. - * - * These routes all receive session state, CSRF protection, etc. - */ - protected function mapWebRoutes(): void - { - Route::middleware('web') - ->namespace($this->moduleNamespace) - ->group(module_path('Taxi', '/routes/web.php')); - - Route::prefix('taxi') - ->middleware('web') - ->group(base_path('Modules/Taxi/routes/web.php')); - } - - /** - * Define the "api" routes for the application. - * - * These routes are typically stateless. - */ - protected function mapApiRoutes(): void - { - Route::prefix('api') - ->middleware('api') - ->namespace($this->moduleNamespace) - ->group(module_path('Taxi', '/routes/api.php')); - - Route::prefix('taxi') - ->middleware('api') - ->group(base_path('Modules/Taxi/routes/api.php')); - } -} diff --git a/Modules/Taxi/App/Providers/TaxiMailerProvider.php b/Modules/Taxi/App/Providers/TaxiMailerProvider.php deleted file mode 100644 index df122f4..0000000 --- a/Modules/Taxi/App/Providers/TaxiMailerProvider.php +++ /dev/null @@ -1,29 +0,0 @@ -app->bind(TaxiMailerService::class, function($app) { - return new TaxiMailerService(); - }); - } - - /** - * Get the services provided by the provider. - */ - public function provides(): array - { - return []; - } -} diff --git a/Modules/Taxi/App/Providers/TaxiOrderProvider.php b/Modules/Taxi/App/Providers/TaxiOrderProvider.php deleted file mode 100644 index 11279e6..0000000 --- a/Modules/Taxi/App/Providers/TaxiOrderProvider.php +++ /dev/null @@ -1,27 +0,0 @@ -app->bind(TaxiOrderService::class, function($app) { - return new TaxiOrderService(); - }); - } - - /** - * Get the services provided by the provider. - */ - public function provides(): array - { - return []; - } -} diff --git a/Modules/Taxi/App/Providers/TaxiScheduleProvider.php b/Modules/Taxi/App/Providers/TaxiScheduleProvider.php deleted file mode 100644 index 100fcc1..0000000 --- a/Modules/Taxi/App/Providers/TaxiScheduleProvider.php +++ /dev/null @@ -1,30 +0,0 @@ -app->runningInConsole()) { - $this->commands([ - SendOrdersToTaxiCommand::class, // ✅ Теперь Laravel знает о команде - ]); - } - } - - /** - * Get the services provided by the provider. - */ - public function provides(): array - { - return []; - } -} diff --git a/Modules/Taxi/App/Providers/TaxiServiceProvider.php b/Modules/Taxi/App/Providers/TaxiServiceProvider.php deleted file mode 100644 index c74c18e..0000000 --- a/Modules/Taxi/App/Providers/TaxiServiceProvider.php +++ /dev/null @@ -1,114 +0,0 @@ -registerCommands(); - $this->registerCommandSchedules(); - $this->registerTranslations(); - $this->registerConfig(); - $this->registerViews(); - $this->loadMigrationsFrom(module_path($this->moduleName, 'Database/migrations')); - } - - /** - * Register the service provider. - */ - public function register(): void - { - $this->app->register(RouteServiceProvider::class); - } - - /** - * Register commands in the format of Command::class - */ - protected function registerCommands(): void - { - // $this->commands([]); - } - - /** - * Register command Schedules. - */ - protected function registerCommandSchedules(): void - { - // $this->app->booted(function () { - // $schedule = $this->app->make(Schedule::class); - // $schedule->command('inspire')->hourly(); - // }); - } - - /** - * Register translations. - */ - public function registerTranslations(): void - { - $langPath = resource_path('lang/modules/'.$this->moduleNameLower); - - if (is_dir($langPath)) { - $this->loadTranslationsFrom($langPath, $this->moduleNameLower); - $this->loadJsonTranslationsFrom($langPath); - } else { - $this->loadTranslationsFrom(module_path($this->moduleName, 'lang'), $this->moduleNameLower); - $this->loadJsonTranslationsFrom(module_path($this->moduleName, 'lang')); - } - } - - /** - * Register config. - */ - protected function registerConfig(): void - { - $this->publishes([module_path($this->moduleName, 'config/config.php') => config_path($this->moduleNameLower.'.php')], 'config'); - $this->mergeConfigFrom(module_path($this->moduleName, 'config/config.php'), $this->moduleNameLower); - } - - /** - * Register views. - */ - public function registerViews(): void - { - $viewPath = resource_path('views/modules/'.$this->moduleNameLower); - $sourcePath = module_path($this->moduleName, 'resources/views'); - - $this->publishes([$sourcePath => $viewPath], ['views', $this->moduleNameLower.'-module-views']); - - $this->loadViewsFrom(array_merge($this->getPublishableViewPaths(), [$sourcePath]), $this->moduleNameLower); - - $componentNamespace = str_replace('/', '\\', config('modules.namespace').'\\'.$this->moduleName.'\\'.config('modules.paths.generator.component-class.path')); - Blade::componentNamespace($componentNamespace, $this->moduleNameLower); - } - - /** - * Get the services provided by the provider. - */ - public function provides(): array - { - return []; - } - - private function getPublishableViewPaths(): array - { - $paths = []; - foreach (config('view.paths') as $path) { - if (is_dir($path.'/modules/'.$this->moduleNameLower)) { - $paths[] = $path.'/modules/'.$this->moduleNameLower; - } - } - - return $paths; - } -} diff --git a/Modules/Taxi/App/Services/TaxiMailerService.php b/Modules/Taxi/App/Services/TaxiMailerService.php deleted file mode 100644 index 0ad96f3..0000000 --- a/Modules/Taxi/App/Services/TaxiMailerService.php +++ /dev/null @@ -1,27 +0,0 @@ -prepareDataForMail())->onQueue('emails')->delay(5); - } -} diff --git a/Modules/Taxi/App/Services/TaxiOrderService.php b/Modules/Taxi/App/Services/TaxiOrderService.php deleted file mode 100644 index 4291c0a..0000000 --- a/Modules/Taxi/App/Services/TaxiOrderService.php +++ /dev/null @@ -1,42 +0,0 @@ - $orderData->emp_login, - 'taxi_date' => $orderData->taxi_date, - 'emp_phone' => $orderData->emp_phone, - 'taxi_time' => $orderData->taxi_time, - 'taxi_address_from' => $orderData->taxi_address_from, - 'taxi_address_to' => $orderData->taxi_address_to - ] - ); - return $newOrder->id; - // } catch (\Exception $e) { - // return $e->getMessage(); - // } - } -} diff --git a/Modules/Taxi/Database/Seeders/.gitkeep b/Modules/Taxi/Database/Seeders/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/Modules/Taxi/Database/Seeders/TaxiDatabaseSeeder.php b/Modules/Taxi/Database/Seeders/TaxiDatabaseSeeder.php deleted file mode 100644 index f9befc7..0000000 --- a/Modules/Taxi/Database/Seeders/TaxiDatabaseSeeder.php +++ /dev/null @@ -1,16 +0,0 @@ -call([]); - } -} diff --git a/Modules/Taxi/Database/migrations/2025_05_14_154131_create_main_table.php b/Modules/Taxi/Database/migrations/2025_05_14_154131_create_main_table.php deleted file mode 100644 index 273d6f2..0000000 --- a/Modules/Taxi/Database/migrations/2025_05_14_154131_create_main_table.php +++ /dev/null @@ -1,33 +0,0 @@ -id(); - $table->string('emp_login', 30)->comment('логин сотрудника кто поедет'); - $table->string('emp_phone', 15)->comment('телефон сотрудника'); - $table->date('taxi_date')->comment('дата заказа такси'); - $table->time('taxi_time')->comment('время заказа такси'); - $table->string('taxi_address', 500)->comment('адрес заказа такси'); - $table->boolean('archive')->default(0); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('taxi_main'); - } -}; diff --git a/Modules/Taxi/Database/migrations/2025_05_15_115637_create_hist_table.php b/Modules/Taxi/Database/migrations/2025_05_15_115637_create_hist_table.php deleted file mode 100644 index 57d3a46..0000000 --- a/Modules/Taxi/Database/migrations/2025_05_15_115637_create_hist_table.php +++ /dev/null @@ -1,34 +0,0 @@ -id('hist_id'); - $table->integer('id_change_row')->default(NULL)->comment('id изменяемой строки'); - $table->string('table_name', 50)->default(NULL)->comment('имя изменямой таблицы'); - $table->string('field_name', 50)->default(NULL)->comment('имя изменяемого поля'); - $table->string('emp_login', 50)->default(NULL)->comment('логин сотрудника, внесшего изменение'); - $table->string('value_before', 500)->default(NULL)->comment('значение ДО'); - $table->string('value_after', 500)->default(NULL)->comment('значение ПОСЛЕ'); - $table->timestamps(); - $table->comment('Таблица с историей изменений по процессу Заказ такси'); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('taxi_hist'); - } -}; diff --git a/Modules/Taxi/Database/migrations/2025_07_26_175151_create_taxi_time_period.php b/Modules/Taxi/Database/migrations/2025_07_26_175151_create_taxi_time_period.php deleted file mode 100644 index 3a17e6c..0000000 --- a/Modules/Taxi/Database/migrations/2025_07_26_175151_create_taxi_time_period.php +++ /dev/null @@ -1,30 +0,0 @@ -id(); - $table->string('time_period', 5)->comment('Временнoй промежуток'); - $table->boolean('archive')->default(0)->comment('Актуальность'); - $table->timestamps(); - $table->comment('Временные промежутки для заказа такси'); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('taxi_time_period'); - } -}; diff --git a/Modules/Taxi/Database/migrations/2025_07_28_140129_rename_taxi_time_period.php b/Modules/Taxi/Database/migrations/2025_07_28_140129_rename_taxi_time_period.php deleted file mode 100644 index f9240f6..0000000 --- a/Modules/Taxi/Database/migrations/2025_07_28_140129_rename_taxi_time_period.php +++ /dev/null @@ -1,24 +0,0 @@ -string('taxi_time', 8)->change(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - // - } -}; diff --git a/Modules/Taxi/Database/migrations/2025_07_31_084251_change_taxi_main_archive.php b/Modules/Taxi/Database/migrations/2025_07_31_084251_change_taxi_main_archive.php deleted file mode 100644 index 78f05e0..0000000 --- a/Modules/Taxi/Database/migrations/2025_07_31_084251_change_taxi_main_archive.php +++ /dev/null @@ -1,28 +0,0 @@ -renameColumn('archive', 'cancel_rqst'); - $table->string('taxi_time', 6)->change(); - }); - - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - // - } -}; diff --git a/Modules/Taxi/Database/migrations/2025_07_31_085420_change_taxi_main_archive.php b/Modules/Taxi/Database/migrations/2025_07_31_085420_change_taxi_main_archive.php deleted file mode 100644 index 1a3ecf7..0000000 --- a/Modules/Taxi/Database/migrations/2025_07_31_085420_change_taxi_main_archive.php +++ /dev/null @@ -1,27 +0,0 @@ -boolean('cancel_rqst')->default(0)->after('archive'); - $table->dropColumn('archive'); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - // - } -}; diff --git a/Modules/Taxi/Database/migrations/2025_09_16_163054_renameTaxiAddress.php b/Modules/Taxi/Database/migrations/2025_09_16_163054_renameTaxiAddress.php deleted file mode 100644 index 66a5d32..0000000 --- a/Modules/Taxi/Database/migrations/2025_09_16_163054_renameTaxiAddress.php +++ /dev/null @@ -1,39 +0,0 @@ -renameColumn('taxi_address', 'order_addr_to'); - // }); - DB::statement('ALTER TABLE taxi_main CHANGE COLUMN taxi_address taxi_address_to Varchar(500)'); - // Schema::table('taxi_main', function (Blueprint $table) { - // $table->renameColumn('taxi_address', 'taxi_address_to')->change(); - // //$table->string('taxi_time', 8)->change(); - // }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - // Schema::table('taxi_main', function(Blueprint $table) { - // $table->renameColumn('order_addr_to', 'taxi_address'); - // }); - DB::statement('ALTER TABLE taxi_main CHANGE COLUMN taxi_address_to taxi_address Varchar(500)'); - // Schema::table('taxi_main', function (Blueprint $table) { - // //$table->renameColumn('archive', 'cancel_rqst'); - // $table->renameColumn('taxi_address_to', 'taxi_address')->change(); - // // $table->string('taxi_time', 6)->change(); - // }); - } -}; diff --git a/Modules/Taxi/Database/migrations/2025_09_17_162746_addTaxiAddressFrom.php b/Modules/Taxi/Database/migrations/2025_09_17_162746_addTaxiAddressFrom.php deleted file mode 100644 index e87273b..0000000 --- a/Modules/Taxi/Database/migrations/2025_09_17_162746_addTaxiAddressFrom.php +++ /dev/null @@ -1,28 +0,0 @@ -string('taxi_address_from', 500)->after('taxi_time')->comment('Адрес откуда ехать'); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('taxi_main', function(Blueprint $table){ - $table->dropColumn('taxi_address_from'); - }); - } -}; diff --git a/Modules/Taxi/Database/migrations/2025_09_17_163551_notNullTaxiTo.php b/Modules/Taxi/Database/migrations/2025_09_17_163551_notNullTaxiTo.php deleted file mode 100644 index adad32c..0000000 --- a/Modules/Taxi/Database/migrations/2025_09_17_163551_notNullTaxiTo.php +++ /dev/null @@ -1,28 +0,0 @@ -string('taxi_address_from', 500)->nullable(false)->change(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('taxi_main', function(Blueprint $table){ - $table->string('taxi_address_from', 500)->nullable(true)->change(); - }); - } -}; diff --git a/Modules/Taxi/Database/migrations/2025_09_17_163846_notNullTaxiTo2.php b/Modules/Taxi/Database/migrations/2025_09_17_163846_notNullTaxiTo2.php deleted file mode 100644 index 6ee482b..0000000 --- a/Modules/Taxi/Database/migrations/2025_09_17_163846_notNullTaxiTo2.php +++ /dev/null @@ -1,28 +0,0 @@ -string('taxi_address_to', 500)->nullable(false)->change(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('taxi_main', function(Blueprint $table){ - $table->string('taxi_address_to', 500)->nullable(true)->change(); - }); - } -}; diff --git a/Modules/Taxi/Database/migrations/2025_09_17_164136_addTimePartOfDay.php b/Modules/Taxi/Database/migrations/2025_09_17_164136_addTimePartOfDay.php deleted file mode 100644 index 5dd26bf..0000000 --- a/Modules/Taxi/Database/migrations/2025_09_17_164136_addTimePartOfDay.php +++ /dev/null @@ -1,28 +0,0 @@ -boolean('morning_time')->after('time_period')->nullable(false)->default(true)->comment('Утренний промежуток времени'); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('taxi_time_periods', function(Blueprint $table){ - $table->dropColumn('morning_time'); - }); - } -}; diff --git a/Modules/Taxi/Database/migrations/2025_09_18_085136_renameTimeMorningTime.php b/Modules/Taxi/Database/migrations/2025_09_18_085136_renameTimeMorningTime.php deleted file mode 100644 index 633ac48..0000000 --- a/Modules/Taxi/Database/migrations/2025_09_18_085136_renameTimeMorningTime.php +++ /dev/null @@ -1,24 +0,0 @@ -id(); - $table->string('place', 20)->nullable(false)->comment('Площадка'); - $table->string('address', 100)->nullable(false)->comment('Адрес'); - $table->comment('Адреса офисов для подстановки в заказы такси'); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::drop('office_address'); - } -}; diff --git a/Modules/Taxi/composer.json b/Modules/Taxi/composer.json deleted file mode 100644 index e0cdee0..0000000 --- a/Modules/Taxi/composer.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "nwidart/taxi", - "description": "", - "authors": [ - { - "name": "Nicolas Widart", - "email": "n.widart@gmail.com" - } - ], - "extra": { - "laravel": { - "providers": [], - "aliases": { - - } - } - }, - "autoload": { - "psr-4": { - "Modules\\Taxi\\": "", - "Modules\\Taxi\\App\\": "app/", - "Modules\\Taxi\\Database\\Factories\\": "database/factories/", - "Modules\\Taxi\\Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "psr-4": { - "Modules\\Taxi\\Tests\\": "tests/" - } - } -} diff --git a/Modules/Taxi/config/.gitkeep b/Modules/Taxi/config/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/Modules/Taxi/config/config.php b/Modules/Taxi/config/config.php deleted file mode 100644 index 836ade5..0000000 --- a/Modules/Taxi/config/config.php +++ /dev/null @@ -1,8 +0,0 @@ - 'Taxi', - #Гаврилов - //КАК ЗАСТАВИТЬ ПРИ СОЗДАНИИ МОДУЛЯ ЭТОТ ПАРАМЕТР ПРОПИСЫВАТЬ АВТОМАТИЧЕСКИ? - 'name_ru' => 'Реестр заказа такси', //Добавляем вручную в каждый конфиг -]; diff --git a/Modules/Taxi/module.json b/Modules/Taxi/module.json deleted file mode 100644 index acbf9ff..0000000 --- a/Modules/Taxi/module.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "Taxi", - "alias": "taxi", - "description": "", - "keywords": [], - "priority": 0, - "providers": [ - "Modules\\Taxi\\App\\Providers\\TaxiServiceProvider", - "Modules\\Taxi\\App\\Providers\\TaxiOrderProvider", - "Modules\\Taxi\\App\\Providers\\TaxiMailerProvider", - "Modules\\Taxi\\App\\Providers\\TaxiScheduleProvider" - ], - "files": [] -} diff --git a/Modules/Taxi/package.json b/Modules/Taxi/package.json deleted file mode 100644 index d6fbfc8..0000000 --- a/Modules/Taxi/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "private": true, - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build" - }, - "devDependencies": { - "axios": "^1.1.2", - "laravel-vite-plugin": "^0.7.5", - "sass": "^1.69.5", - "postcss": "^8.3.7", - "vite": "^4.0.0" - } -} diff --git a/Modules/Taxi/resources/assets/js/app.jsx b/Modules/Taxi/resources/assets/js/app.jsx deleted file mode 100644 index 9645277..0000000 --- a/Modules/Taxi/resources/assets/js/app.jsx +++ /dev/null @@ -1,6 +0,0 @@ -import { createRoot } from 'react-dom/client'; -import MenuApp from './components/MenuApp.jsx'; // Создайте этот файл, если используете React - -const container = document.getElementById('root'); -const root = createRoot(container); -root.render(); diff --git a/Modules/Taxi/resources/assets/sass/app.scss b/Modules/Taxi/resources/assets/sass/app.scss deleted file mode 100644 index e69de29..0000000 diff --git a/Modules/Taxi/resources/css/taxiHome.css b/Modules/Taxi/resources/css/taxiHome.css deleted file mode 100644 index 56b3ff5..0000000 --- a/Modules/Taxi/resources/css/taxiHome.css +++ /dev/null @@ -1,44 +0,0 @@ -table { - - & td { - padding: 5px; - } - & tr:nth-child(odd) { - background-color: #eeeeee; -} -} - -#taxi__order-create{ - padding: 10px; -} - -#taxi__home__filter-form{ - width: 20%; -} - -.taxi-btn{ - margin: 25px 0; -} - -.elem--title.el-title--big{ - padding: 7px; - margin: 50px 0 25px 0; - border-left: 5px solid #7864eb; - font-size: 1.3rem; - background: linear-gradient(90deg, rgb(237 234 255) 0%, rgb(255 255 255) 75%); - border-top-left-radius: 5px; - border-bottom-left-radius: 5px; - display: inline-block; - min-width: 400px; -} - -.form-field-block{ - display: flex; -} - -.taxi-orders__order-options{ - - & button { - margin: 10px 0; - } -} diff --git a/Modules/Taxi/resources/css/taxiOrder.css b/Modules/Taxi/resources/css/taxiOrder.css deleted file mode 100644 index 9f23b1d..0000000 --- a/Modules/Taxi/resources/css/taxiOrder.css +++ /dev/null @@ -1,3 +0,0 @@ -.order-create__btn-block{ - margin: 20px 0; -} \ No newline at end of file diff --git a/Modules/Taxi/resources/js/components/TaxiHome.tsx b/Modules/Taxi/resources/js/components/TaxiHome.tsx deleted file mode 100644 index 62621eb..0000000 --- a/Modules/Taxi/resources/js/components/TaxiHome.tsx +++ /dev/null @@ -1,387 +0,0 @@ -import { tr } from "date-fns/locale"; -import React, { useEffect, useState, useMemo, useContext } from "react"; -import { TaxiOrder_type, TaxiOrder_initial, TaxiOrder_fieldName, TaxiOrder_tableData } from '../types/taxiOrderType'; -import { differenceInDays } from 'date-fns'; -import { getCsrfToken } from "../../../../../resources/js/services/getCsrfService"; -import { Button, TextInput, Select, Option } from '@SharePoint/rencredit_uikit'; -import { EntityHistoryProps } from "../../../../../resources/js/components/entityHistory/EntityHistory"; -import { HistoryProvider, HistoryContext } from "../../../../../resources/js/contexts/HistoryContext"; -import { PopupContext } from "../../../../../resources/js/contexts/PopupContext"; -import { PreloaderContext } from "../../../../../resources/js/contexts/PreloaderContext"; -import api from "../../../../../resources/js/api"; - -type EmpSupervisorsData = { - emp_login: string, - emp_supervisor: string -} - -export default function TaxiHome () -{ - //Массив полей для отображения в таблицах с заяками. Учитывается, в том числе, порядок - const rqstTableFields = ['id', 'emp_login', 'emp_supervisor', 'emp_phone', 'taxi_date', 'taxi_time', 'taxi_address_from', 'taxi_address_to', 'cancel_rqst']; - //Формируем объект с полями для таблицы - const rqstTableHeaderFields: Record = Object.assign({}, ...rqstTableFields.map( field => {return {[field]: TaxiOrder_fieldName[field]}})); - const rqstTableHeader:string[] = Object.keys(TaxiOrder_fieldName).map(rqstFieldName => TaxiOrder_fieldName[rqstFieldName]); - const [ccEmp, setCcEmp] = useState([]); - //Стейт для руководителей сотрудников - const [empSupervisors, setEmpSupervisors] = useState([]); - const [allOrders, setAllOrders] = useState([]); - const [filterOrders, setFilterOrders] = useState([]); - const [startSearch, setStartSearch] = useState(false); - const [rqstNumber, setRqstNumber] = useState(''); - const [rqstTime, setRqstTime] = useState(''); - const [rqstLogin, setRqstLogin] = useState(''); - const [orderTimePeriods, setOrderTimePeriods] = useState<[{time_period: string}]>([{time_period: ''}]); - - const popupContext = useContext(PopupContext); - const preloaderContext = useContext(PreloaderContext); - - useEffect ( () => { - api.get('/taxi/getTimePeriods', - ).then(timePeriods_json => setOrderTimePeriods(timePeriods_json.data)); - - // fetch('/public/api/taxi/getTimePeriods', { - // method: 'GET', - // credentials: 'include', - // }).then(timePeriods_resp => timePeriods_resp.json().then( timePeriods_json => { - // setOrderTimePeriods(timePeriods_json); - // })); - - setTimeout(() => { - popupContext.addPopupArrTest([ - {message: 'для информации', timeOut: true, type: 'attention'} - ]) - popupContext.addPopupArrTest([ - {message: 'ошибка', timeOut: true, type: 'error'} - ]) - }, 1000); - console.log(Object.keys(TaxiOrder_fieldName)) - }, []) - - //ГАВРИЛОВ - //ЕСЛИ ОБЪЕКТ СО ЗНАЧЕНИЯМИ ДЛЯ ПОИСКА ПУСТОЙ - НЕ ВЫПОЛНЯЕМ ПОИСК, ВОЗВРАЩАЕМ ОПОВЕЩЕНИЕ О ПУСТЫХ УСЛОВИЯХ - const getFilterOrders = () => { - console.log(rqstTime) - console.log(rqstNumber) - console.log(rqstLogin) - setStartSearch(true); - // ГАВРИЛОВ. проверь - api.post('/taxi/getFilterOrders', { - id: rqstNumber, - taxi_time: rqstTime, - emp_login: rqstLogin - }).then(filterOrdersJson => { - setFilterOrders(filterOrdersJson.data); - }) - // fetch('/public/api/taxi/getFilterOrders', { - // credentials: 'include', - // method: 'POST', - // body: JSON.stringify({ - // id: rqstNumber, - // taxi_time: rqstTime, - // emp_login: rqstLogin - // }), - // headers: { - // 'content-type': 'application/json' - // } - // }).then(filterOrdersRqst => filterOrdersRqst.json()) - // .then(filterOrdersJson => { - // setFilterOrders(filterOrdersJson); - // }) - } - - const timePeriodOptions: Option[] = useMemo(() => { - return orderTimePeriods.map((time: {time_period: string}) => { - return { - caption: time.time_period, - value: time.time_period, - id: time.time_period - } - }) - }, [orderTimePeriods]) - - const empLoginOptions: Option[] = useMemo(() => { - return ccEmp.map((empLogin: string) => { - return { - caption: empLogin, - value: empLogin, - id: empLogin - } - }) - }, [ccEmp]) - - useEffect ( () => { - Promise.all( - [ - // fetch('/public/api/taxi/getEmpInfo', { - // credentials: 'include', - // method: 'GET', - // }).then( empInfo_resp => empInfo_resp.json() ), - api.get('taxi/getEmpInfo'), - api.get('taxi/getActiveOrders'), - // fetch('/public/api/taxi/getActiveOrders', { - // credentials: 'include', - // method: 'GET', - // }).then( allOrders_resp => allOrders_resp.json() ) - ] - ).then( - ([ - {data: empInfo_json}, - {data: allOrders_json} - ]) => { - setCcEmp(empInfo_json.map( (empInfoEl: {emp_login: String}) => empInfoEl.emp_login )); - setAllOrders(allOrders_json); - setEmpSupervisors(empInfo_json.map( (empInfoEl: {emp_login: String, emp_group: String}) => ({emp_login: empInfoEl.emp_login, emp_supervisor: empInfoEl.emp_group}) )); - } - ) - - }, []) - - const isReady = ccEmp.length > 0 && orderTimePeriods.length > 0; - - useEffect ( () => { - console.log(!isReady) - preloaderContext.setPreloaderVisible(!isReady) - // setPreloaderProp(!isReady); - // console.log(empSupervisors) - }, [isReady]) - - if (!ccEmp.length || !orderTimePeriods.length) { - //setIsReady(true); - return; - } else { - //setIsReady(false); - // console.log(allOrders); - console.log(ccEmp); - console.log(orderTimePeriods); - } - - // ГАВРИЛОВ. ОФОРМИ РЕЗУЛЬТАТЫ ПОИСКА. ПОСЛЕ ПОИСКА ПЛАВНО ОПУСКАЙ ДО ТАБЛИЦЫ РЕЗУЛЬТАТЫ ПОИСКА, ТАКЖЕ ВЫВЕДИ ЗОТЯ БЫ ТЕКСТ "РЕЗУЛЬТАТЫ ПОИСКА, СЕЙЧАС ЭТО ПРОСТО ТАБЛИЦА" - - //Гаврилов - //Реализовать подтягивание информации - //Реализовать переключение между БД (new and old Magic) - - //console.log(sanctumToken()) - - let newDate = new Date('2024-06-05'); - newDate.setHours(0, 0, 0); - - // function callHistory(entityId) { - // console.log(entityId) - - // return fakeObjArr; - // } - - - // let resultObj = { - // entityId: 1, - // entityProps: fakeObjArr - // } - - return ( -
- */} - -
-
- { - startSearch ? - - - - { - rqstTableHeader.map( (headEl, headElIndex) => - ) - } - - - - { - filterOrders.length ? - filterOrders.map( (rqstData: TaxiOrder_type, rqstIndex: number) => - - { - Object.keys(TaxiOrder_initial).map(initField => - ) - } - ) - : - - - } - -
- {headEl} -
- {initField == 'cancel_rqst' ? (rqstData[initField] ? 'Нет' : 'Да') : rqstData[initField]} -
Запросов не найдено
- : '' - } -
- - ) -} - - -function RqstTable(props: {allOrders: TaxiOrder_type[], rqstTableHeader: Record, empSupervisors: EmpSupervisorsData[]}){ - const historyContext = useContext(HistoryContext); - if (!historyContext) { - return null; - } - let newDate = new Date('2024-06-05'); - newDate.setHours(0, 0, 0); - return ( - props.allOrders.length ? - - - - { - Object.entries(props.rqstTableHeader).map((el, index) => - - ) - } - - - - - { - props.allOrders.map( (rqstData: TaxiOrder_type, rqstIndex: number) => - - { - Object.entries(props.rqstTableHeader).map( el => { - return ( - // Если поле - руководитель сотрудника - вычисляем значение, ориентируясь на список props.empSupervisors - el[0] === 'emp_supervisor' ? - - : - ) - }) - } - - - ) - } - -
{el[1]}Управление
{ props.empSupervisors.find(empData => empData.emp_login == rqstData.emp_login)?.emp_supervisor }{ rqstData[el[0]] } - {/* Можно взаимодействовать только с заявками на такси на сегодняшнюю, либо завтрашнюю дату */} - {differenceInDays(new Date(rqstData.taxi_date), new Date()) >= 0 && !rqstData.cancel_rqst ? - <> -
- :
Нет активных заявок
- ) -} diff --git a/Modules/Taxi/resources/js/components/TaxiOrder.tsx b/Modules/Taxi/resources/js/components/TaxiOrder.tsx deleted file mode 100644 index aa0ac67..0000000 --- a/Modules/Taxi/resources/js/components/TaxiOrder.tsx +++ /dev/null @@ -1,635 +0,0 @@ -import React, { useEffect, useContext, useState, useMemo } from "react"; -import { TaxiOrder_type, TaxiOrder_initial } from '../types/taxiOrderType'; -import { addDays, format } from 'date-fns'; -import { getCsrfToken } from "../../../../../resources/js/services/getCsrfService"; -import { Button, TextInput, Select, Option } from '@SharePoint/rencredit_uikit'; -import FormValidErr, { FormValidErrObject } from "../../../../../resources/js/components/formValidErr/FormValidErr"; -import { PopupContext } from "../../../../../resources/js/contexts/PopupContext"; -import { EntityHistoryProps } from "../../../../../resources/js/components/entityHistory/EntityHistory"; -import { PreloaderContext } from "../../../../../resources/js/contexts/PreloaderContext"; - -//Гаврилов типы для пропсов? -// export default function TaxiOrder( {rqstId, setPreloaderProp}: {rqstId: number | undefined, setPreloaderProp: CallableFunction} ) -export default function TaxiOrder( {rqstId}: {rqstId: number | undefined} ) -{ - let newDate = new Date('2024-06-05'); - newDate.setHours(0, 0, 0); - let fakeObjArr: EntityHistoryProps[] = [ - { - changeAction: 'insert', - changeAuthor: 'login', - changeDate: newDate, - changeDetails: [ - { - propName: 'поле', - propValue: 'значение' - }, - { - propName: 'поле', - propValue: 'значение' - }, - { - propName: 'поле', - propValue: 'значение' - }, - { - propName: 'поле2', - propValue: 'значение2' - } - ] - }, - { - changeAction: 'insert', - changeAuthor: 'login', - changeDate: new Date('2024-06-05'), - changeDetails: [ - { - propName: 'поле', - propValue: 'значение' - }, - { - propName: 'поле', - propValue: 'значение' - }, - { - propName: 'поле', - propValue: 'значение' - }, - { - propName: 'поле2', - propValue: 'значение2' - } - ] - }, - { - changeAction: 'insert', - changeAuthor: 'login', - changeDate: new Date('2024-06-05'), - changeDetails: [ - { - propName: 'поле', - propValue: 'значение' - }, - { - propName: 'поле', - propValue: 'значение' - }, - { - propName: 'поле', - propValue: 'значение' - }, - { - propName: 'поле2', - propValue: 'значение2' - } - ] - }, - { - changeAction: 'update', - changeAuthor: 'login2', - changeDate: new Date('2025-06-05'), - changeDetails: [ - { - propName: 'поле3', - propValue: 'значение4' - }, - { - propName: 'поле3', - propValue: 'значение4' - }, - { - propName: 'поле3', - propValue: 'значение4' - }, - { - propName: 'поле3', - propValue: 'значение4' - }, - { - propName: 'поле5', - propValue: 'значение6' - } - ] - }, - { - changeAction: 'update', - changeAuthor: 'login2', - changeDate: new Date('2025-06-05'), - changeDetails: [ - { - propName: 'поле3', - propValue: 'значение4' - }, - { - propName: 'поле3', - propValue: 'значение4' - }, - { - propName: 'поле3', - propValue: 'значение4' - }, - { - propName: 'поле3', - propValue: 'значение4' - }, - { - propName: 'поле5', - propValue: 'значение6' - } - ] - } - ]; - - const preloaderContext = useContext(PreloaderContext); - - //ГАВРИЛОВ ПОСТОЯННЫЙ ПЕРЕРЕНДЕРИНГ СПРОСИТЬ У САШИ. ЭЛЕМЕНТ НЕ МИГАЕТ В КОНСОЛИ, НО ПИШЕТ ПОСТОЯННО ПЕРЕРЕНДЕР - console.log('🔁 TaxiForm перерендерился!'); - interface UserData { - emp_id: number, - emp_address: string, - emp_lastname: string, - emp_name: string, - emp_surname: string, - emp_login: string | null - emp_phone: string, - //Все остальные поля объекта могут быть пустыми - [key: string]: unknown, - full_name: string, - }; - const UserData_initial: UserData = { - emp_id: 0, - emp_address: '', - emp_lastname: '', - emp_name: '', - emp_surname: '', - emp_login: '', - emp_phone: '', - full_name: '', - // _token: getCsrfToken() - }; - //Проверка загрузки необходимых для начала работ данных. После успешного получения всех данных происходит рендеринг - const [checkLoad, setCheckLoad] = useState( - { - ccEmp: false, - orderData: false, - checkEditOrderUserData: false, - getTimePeriods: false, - checkOfficeAddress: false, - } - ); - const todayDate = new Date(); - //Данные по всем пользователям - const [ccEmp, setCcEmp] = useState( [UserData_initial] ); - //Данные по редактируемому запросу (если вызвано редактирование) - const [orderData, setOrderData] = useState(TaxiOrder_initial); - //Данные по пользователю, чей запрос редактируется (если вызвано редактирование запроса) - const [editOrderUserData, setEditOrderUserData] = useState(UserData_initial); - //Данные по временным промежуткам - const [orderTimePeriods, setOrderTimePeriods] = useState< {time_period: string, is_morning_time: number}[] >( - [ {time_period: '', is_morning_time: 0} ] - ); - //Массив доступных для заказа такси дат для их дальнейшего преобразования в теги option селекта - const [dateOrderArr, setDateOrderArr] = useState( - [ - format(todayDate, "yyyy-MM-dd"), - format(addDays(todayDate, 1), "yyyy-MM-dd") - ] - ); - const popupContext = useContext(PopupContext); - useEffect ( () => { - setFormCreateVisible(true); - setFormCreateValidObj([{fieldName: 'testField', fieldErrors: ['errOne']}]); - console.log(popupContext) - // console.log() - // setTimeout(() => { - // popupContext.addPopupArrTest([ - // {message: 'для информации', timeOut: true, type: 'attention'} - // ]) - // }, 1000); - // setTimeout(() => { - // setPopupArrProp([ - // {message: 'для информации', timeOut: true, type: 'attention'}, - // ]) - // }, 1000); - // setTimeout(() => { - // setPopupArrProp([ - // {message: 'для информации', timeOut: false, type: 'info'}, - // ]) - // }, 2000); - // setTimeout(() => { - // setPopupArrProp([ - // {message: 'для информации', timeOut: false, type: 'info'}, - // ]) - // }, 3000); - // setPopupArrProp([ - // {message: 'для информации', timeOut: false, type: 'info'}, - // {message: 'успешно', timeOut: true, type: 'success'}, - // {message: 'ошибка', timeOut: true, type: 'error'}, - // {message: 'обратить внимание', timeOut: true, type: 'attention'} - // ]) - }, []) - - const [formCreateVisible, setFormCreateVisible] = useState(false); - const [formCreateValidErrObj, setFormCreateValidObj] = useState([{fieldName: null, fieldErrors: []}]) - - //ГАВРИЛОВ ДОБАВИТЬ ВСПЛЫВАЮЩЕЕ ОКНО ЕСЛИ ПРОИСХОДИТ НЕСООТВЕТСТВИЕ ВРЕМЕНИ И ДАТЫ ЗАКАЗА ТАКСИ? А НЕ ПРОСТО УДАЛЯТЬ ЗНАЧЕНИЕ ИЗ СОСЕДНЕГО ПОЛЯ? - - //Адреса офисов - const [officeAddressInfo, setOfficeAddressInfo] = useState< {place: string, address: string}[] >( - [ {place: '', address: ''} ] - ); - //Адрес офиса, где работает сотрудник. Определяется на этапе выбора логина - const [empOfficeAddress, setEmpOfficeAddress] = useState(null); - //const [orderTime, setOrderTime] = useState(null); - //const [orderDate, setOrderDate] = useState(null); - // const [orderAddressFrom, setOrderAddressFrom] = useState(null); - // const [orderAddressTo, setOrderAddressTo] = useState(null); - - function gotoHome() - { - document.location.href = '/public/taxi/home'; - } - - //Гаврилов. Не передаешь CSRF токен - //Отправка заказа на такси - function sendTaxiOrder () - { - console.log(orderData) - console.log(editOrderUserData) - //return - // setPreloaderProp(true, 'создаем заявку') - preloaderContext.setPreloaderVisible(true); - preloaderContext.setPreloaderText('создаем заявку'); - let popupType; - fetch('/public/api/taxi/' + (rqstId ? `editOrder/${rqstId}` : 'createRqst'), { - credentials: 'include', - method: (rqstId ? "PATCH" : "POST"), - body: JSON.stringify(orderData), - headers: { - 'content-type': 'application/json', - 'Accept': 'application/json' - } - }).then(result => { - preloaderContext.setPreloaderVisible(false); - // setPreloaderProp(false) - result.json().then(jsonResult => { - console.log(jsonResult) - if (!result.ok) { - //ГАВРИЛОВ здесь обработка ошибок валидации формы - if (result.status == 422) { - // setPopupArrProp( - // [ - // //ГАВРИЛОВ обработка ошибки - // {message: 'Произошла ошибка! Заявка не создана', type: 'error'}, - // ] - // ) - } else { - // setPopupArrProp( - // [ - // //ГАВРИЛОВ обработка ошибки - // {message: jsonResult.result_msg, type: 'error'}, - // ] - // ) - } - popupType = 'error' - } else { - popupType = 'success' - } - popupContext.addPopupArrTest( - [ - {message: jsonResult.message, type: popupType}, - ] - ) - }) - }) - } - -//Функция, собирающая нужный массив для формирования из него списка option для select -function transformToOptionsFunc ( - dataArr: T[], - dataKey?: keyof T -): Option[] { - let optionArr = dataArr.map(item => { - //Без проверки ниже, Typescript ругается на условный атрибут dataKey, который может отсутствовать, но при этом укаан как относящийся к Дженерику - const value = dataKey !== undefined - ? item[dataKey] - : item; - - return { - caption: String(value), - value: String(value), - id: String(value) - }; - }); - return optionArr; -} - - -/** - * Метод проверки соответствует ли дата и время заказа логике. Наприме, если дата заказа сегодняшняя - нельзя выбрать утренний промежуток времени - * @param orderTime время заказа такси - * @param orderDate дата заказа такси - * @returns результат проверки соответствия даты и времени заказа - */ -function checkTimeAndDate (orderTime: string|null, orderDate: string|null): boolean -{ - // console.log(orderTime) - // console.log(!orderTime) - // console.log(orderDate) - // console.log(!orderDate) - if (!orderTime || !orderDate) { - //console.log(1) - return true; - } - let isMorningTimeCheck = orderTimePeriods.filter( e => e.time_period == orderTime )[0].is_morning_time; - // console.log(isMorningTimeCheck) - //Если выбранная дата заказа больше текущей - заказ на завтра, можно выбирать любую дату - if (!(new Date(orderDate) > todayDate)) { - //console.log(2) - return !isMorningTimeCheck; - } - return true; -} - - // const ccEmpList: Option[] = useMemo(() => { - // return ccEmp.map(empData => { - // return { - // caption: empData.emp_login, - // value: empData.emp_login, - // id: empData.emp_login - // } - // }) - // }, [ccEmp]); - - // console.log(ccEmpList) - - - const ccEmpList = useMemo( () => { - return transformToOptionsFunc(ccEmp, 'emp_login'); - }, [ccEmp]); - - const orderDateList = useMemo( () => { - return transformToOptionsFunc(dateOrderArr); - }, [dateOrderArr]); - - const orderTimeList = useMemo( () => { - return transformToOptionsFunc(orderTimePeriods, 'time_period') - }, [orderTimePeriods]); - - //Загрузка данных для старта работ - useEffect ( () => { - //Получаем информацию по сотруднику при загрузке страницы - fetch('/public/api/taxi/getEmpInfo', { - credentials: 'include', - method: 'GET', - // headers: new Headers({ - // 'Authorization': `Bearer ${sanctumToken()}` - // }) - }).then(empInfo_resp => empInfo_resp.json().then(empInfo_json => { - console.log(empInfo_json) - console.log(editOrderUserData) - setCcEmp(empInfo_json); - setCheckLoad(loadObj => ( {...loadObj, ccEmp: true} )); - })); - //Получаем доступные временные промежутки для заказа такси - fetch('/public/api/taxi/getTimePeriods', { - method: 'GET', - credentials: 'include', - // headers: new Headers({ - // 'Authorization': `Bearer ${sanctumToken()}` - // }) - }).then(timePeriods_resp => timePeriods_resp.json().then(timePeriods_json => { - setOrderTimePeriods(timePeriods_json); - setCheckLoad(loadObj => ( {...loadObj, getTimePeriods: true} )); - })); - //ГАВРИЛОВ. ВЕЗДЕ В FETCH ЗАПРОСАХ ПЕРЕХВАТЫВАЙ ОШИБКИ И ВЫВОДИ СООБЩЕНИЯ ОБ ОШИБКЕ. НАПРИМЕМР С 401. В ЭТОМ СЛУЧАЕ НУЖНО ПЕРЕБРАСЫВАТЬ ПОЛЬЗОВАТЕЛЯ НА СТРАНИЦУ АУТЕНТИФИКАЦИИ - //Получае адреса всех офисов, куда могут заказываться такси? - fetch('/public/api/taxi/getOfficeAddress', { - method: 'GET', - credentials: 'include', - }).then(officeAddress_resp => {officeAddress_resp.json().then(officeAddress_json => { - setOfficeAddressInfo(officeAddress_json); - setCheckLoad(loadObj => ( {...loadObj, checkOfficeAddress: true} )); - })}); - //Если в пропсах передается rqstId, происходит редактирование заявки, а не создание новой - получаем данные по редактируемой заявке на такси - if (rqstId) { - fetch(`/public/api/taxi/getOrderById/${rqstId}`, { - method: 'GET', - credentials: 'include', - // headers: new Headers({ - // 'Authorization': `Bearer ${sanctumToken()}` - // }) - }).then(orderData_resp => orderData_resp.json().then( orderData_json => { - console.log(orderData_json) - setOrderData(orderData_json); - setCheckLoad(loadObj => ({...loadObj, orderData: true})); - })); - } - }, []) - - //гаврилов. Нужно ввести объект с данными по запросу и туда класть только нужные данные , а не все параметры пользователя. и тогда не нужно нигде проверять rqstId. Внизу в методе класть в этот объект все нужные параметры - - useEffect ( () => { - //Гаврилов. Причем тут проверка логина? Зачем она? - if (rqstId && orderData.emp_login) { - //Если передан id запроса на редактирование, устанавливаем значение с данными пользователя редактируемого запроса - fetch(`/public/api/taxi/getEmpInfo/${orderData.emp_login}`).then(userData_resp => userData_resp.json().then(userData_json => { - //гаврилов. Вот здесь нужно класть данные в orderData, а также заполнять адрес из и адрес куда - setEditOrderUserData(userData_json[0]); - //setOrderData(prevData => ({...prevData, userData_json[0]})); - //setEmpAddress(editOrderUserData['emp_address']); - setCheckLoad(loadObj => ( {...loadObj, checkEditOrderUserData: true} )); - //ГАВРИЛОВ. вынеси в отедльную функцию определение адреса офиса? - setEmpOfficeAddress(officeAddressInfo.filter(addressInfo => addressInfo.place == userData_json[0].emp_area)[0].address); - })); - } - }, [orderData.emp_login]) - - //Итоговая проверка все ли необходимые данные для рендеринга получены - const isReady = rqstId ? - checkLoad.ccEmp && checkLoad.checkEditOrderUserData && checkLoad.orderData && checkLoad.checkOfficeAddress && checkLoad.getTimePeriods - : checkLoad.ccEmp; - - //Регулировка видимости прелоадера в зависимости от того все ли данные для рендеринга получены или нет - useEffect ( () => { - //isReady ? setPreloaderProp(false) : setPreloaderProp(true); - isReady ? preloaderContext.setPreloaderVisible(false) : preloaderContext.setPreloaderVisible(true); - }, [isReady]) - - if (!isReady) { - return; - } - - return ( -
- {/* */} -
-
-

{rqstId ? 'Редактирование' : 'Создание'} заявки на такси

-
- {/* */} -
- {/* ГАВРИЛОВ как защищаешься от csrf если комментируешь поле ниже? */} - {/* */} -
- dateData.value === orderData.taxi_time) : null} - size = 'm' - onChange = {(_, sel:{caption:string, id:string, value:string}) => { - let selOrderTime = (sel ? sel.value : null); - setOrderData(prevData => ( {...prevData, taxi_time: selOrderTime} )); - //Проверяем относится ли выбранный промежуток времени заказа к утру или нет. Если выбран утренний промежуток, дата откуда - адрес сотрудника, адрес куда - офис, если выбран вечерний промежуток - наоборот - if (orderTimePeriods.filter( e => selOrderTime == e.time_period )[0].is_morning_time == 1) { - console.log(1) - setOrderData(prevData => ( {...prevData, taxi_address_from: editOrderUserData.emp_address, taxi_address_to: empOfficeAddress} )); - } else { - console.log(2) - console.log(empOfficeAddress) - setOrderData(prevData => ( {...prevData, taxi_address_from: empOfficeAddress, taxi_address_to: editOrderUserData.emp_address} )); - } - //Если проверка соответствия и времени заказа не выполняется, сбрасываем дату - if (!checkTimeAndDate(selOrderTime, orderData.taxi_date)) { - popupContext.addPopupArrTest( - [{message: 'Несоответствие времени и даты', type: 'error'}] - ) - setOrderData(prevData => ({...prevData, taxi_date: null})); - } - }} - /> -
-
-