From 97ec6562f7982c8692ce78f3d5663c4980899129 Mon Sep 17 00:00:00 2001 From: Rustem Date: Sat, 8 Feb 2025 23:15:16 +0500 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=B0=D0=BB=D0=B5=D0=BD=D0=B4=D0=B0?= =?UTF-8?q?=D1=80=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Console/PipiCarInstallCommands.php | 3 +- app/Http/Controllers/Sync1cApiController.php | 37 +++++++ modules/auto/Enums/AutoStatusEnums.php | 12 +++ modules/auto_calendar/access.json | 9 ++ modules/auto_calendar/app.json | 101 +++++++++++++++++++ modules/auto_calendar/migrate.php | 24 +++++ modules/auto_calendar/script.php | 39 +++++++ routes/api.php | 5 + 8 files changed, 229 insertions(+), 1 deletion(-) create mode 100644 modules/auto/Enums/AutoStatusEnums.php create mode 100644 modules/auto_calendar/access.json create mode 100644 modules/auto_calendar/app.json create mode 100644 modules/auto_calendar/migrate.php create mode 100644 modules/auto_calendar/script.php diff --git a/app/Console/PipiCarInstallCommands.php b/app/Console/PipiCarInstallCommands.php index 9e0386c..176be68 100644 --- a/app/Console/PipiCarInstallCommands.php +++ b/app/Console/PipiCarInstallCommands.php @@ -34,7 +34,8 @@ class PipiCarInstallCommands extends InstallCommand 'owners', // Владелец авто 'auto', // авто 'applications', //Заявки - 'pipi_users' // Добавление логики для пользователей + 'pipi_users', // Добавление логики для пользователей + 'auto_calendar' // Добавление логики для пользователей ]; } diff --git a/app/Http/Controllers/Sync1cApiController.php b/app/Http/Controllers/Sync1cApiController.php index b9cada1..5385e5d 100644 --- a/app/Http/Controllers/Sync1cApiController.php +++ b/app/Http/Controllers/Sync1cApiController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers; use A7kz\Platform\Models\UniModel; use A7kz\Platform\Modules\Platform\Segment\Facades\Segment; +use App\Modules\auto\Enums\AutoStatusEnums; use Exception; use Illuminate\Http\Request; use Illuminate\Support\Carbon; @@ -218,4 +219,40 @@ class Sync1cApiController extends Controller return response()->json(['error' => 'Failed to synchronize owner contracts'], 500); } } + + public function syncCarCalendar(Request $request) { + try { + + Log::error('Запрос календаря пришел'); + + DB::beginTransaction(); + + $segments = Segment::listActive(); + + foreach ($segments as $segment) { + foreach ($request->all() as $value) { + UniModel::model('pipi_owner_contracts', $segment->connector)->updateOrCreate( + [ + 'auto_id' => UniModel::model('pipi_auto')->where('name', $value['Имущество'])->first()?->id, + 'date' => $this->formatDate($value['Дата']), + 'status' => AutoStatusEnums::from($value['Статус'])->name + ], + [ + 'auto_id' => UniModel::model('pipi_auto')->where('name', $value['Имущество'])->first()?->id, + 'date' => $this->formatDate($value['Дата']), + 'status' => AutoStatusEnums::from($value['Статус'])->name + ] + ); + } + } + + + DB::commit(); + return response()->json(['message' => 'Calendar synchronized successfully'], 200); + } catch (Exception $e) { + DB::rollBack(); + Log::error('Error syncing calendar: ' . $e->getMessage()); + return response()->json(['error' => 'Failed to synchronize calendar'], 500); + } + } } diff --git a/modules/auto/Enums/AutoStatusEnums.php b/modules/auto/Enums/AutoStatusEnums.php new file mode 100644 index 0000000..57362f2 --- /dev/null +++ b/modules/auto/Enums/AutoStatusEnums.php @@ -0,0 +1,12 @@ +connector)->create('pipi_auto_calendar', static function (Blueprint $table) { + $table->id(); + $table->string('auto_id')->nullable()->comment('Автомобиль'); + $table->date('date')->nullable()->comment('Дата'); + $table->string('status')->nullable()->comment('Статус'); + $table->timestamps(); + }); + } + } +}; diff --git a/modules/auto_calendar/script.php b/modules/auto_calendar/script.php new file mode 100644 index 0000000..b9c5691 --- /dev/null +++ b/modules/auto_calendar/script.php @@ -0,0 +1,39 @@ +upgrade(); + } + + private function upgrade(): void + { + $segments = Segment::listActive(); + foreach ($segments as $segment) { + if (!Schema::connection($segment->connector)->hasTable('pipi_auto_calendar')) { + Schema::connection($segment->connector)->create('pipi_auto_calendar', static function (Blueprint $table) { + $table->id(); + $table->string('auto_id')->nullable()->comment('Автомобиль'); + $table->date('date')->nullable()->comment('Дата'); + $table->string('status')->nullable()->comment('Статус'); + $table->timestamps(); + }); + } + } + } +}; diff --git a/routes/api.php b/routes/api.php index 2ab7ddc..9b5e701 100644 --- a/routes/api.php +++ b/routes/api.php @@ -20,6 +20,7 @@ Route::prefix('1c')->group(function () { Route::post('syncAutoData', [Sync1cApiController::class, 'syncAutoData']); Route::post('syncOwners', [Sync1cApiController::class, 'syncOwners']); Route::post('syncOwnerContracts', [Sync1cApiController::class, 'syncOwnerContracts']); + Route::post('syncCarCalendar', [Sync1cApiController::class, 'syncCarCalendar']); }); Route::prefix('mobile')->group(function () { @@ -28,3 +29,7 @@ Route::prefix('mobile')->group(function () { Route::post('getApplications', [MobileApiController::class, 'getApplications']); Route::post('login', [MobileApiController::class, 'login']); }); + +Route::get('/', function (Request $request) { + dd(123); +});