Календарь

pull/3/head
Rustem 2025-02-08 23:15:16 +05:00
parent 05a3f8eeb1
commit 97ec6562f7
8 changed files with 229 additions and 1 deletions

View File

@ -34,7 +34,8 @@ class PipiCarInstallCommands extends InstallCommand
'owners', // Владелец авто
'auto', // авто
'applications', //Заявки
'pipi_users' // Добавление логики для пользователей
'pipi_users', // Добавление логики для пользователей
'auto_calendar' // Добавление логики для пользователей
];
}

View File

@ -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);
}
}
}

View File

@ -0,0 +1,12 @@
<?php
namespace App\Modules\auto\Enums;
enum AutoStatusEnums: string
{
case Free = 'free';
case Rent = 'Аренда';
case Service = 'Сервис';
case Blocked = 'Забронирован';
case Waiting = 'waiting';
}

View File

@ -0,0 +1,9 @@
{
"admin": [
"default",
"add",
"show",
"edit",
"delete"
]
}

View File

@ -0,0 +1,101 @@
{
"module": "pipicar",
"name": "pipicar.auto_calendar",
"type": "crud",
"title": "Календарь Автомобилей",
"data": {
"table": "pipi_auto_calendar",
"pk": "id",
"limit": 25,
"segment": true,
"timestamp": false,
"fields": {
"id": {
"type": "pk"
},
"name": {
"type": "string"
}
}
},
"ui": {
"grid": {
"title": "Цвета Автомобилей",
"template": "app.base.crud.grid",
"cols": [
{
"name": "name",
"caption": "Название цвета"
}
],
"action": {
"head": [
"add"
],
"row": [
"edit",
"delete"
]
},
"filter": {
"template": "app.base.crud.filter",
"rows": [
{
"cols": [
{
"size": 6,
"input": {
"name": "name",
"label": "Название цвета"
}
}
]
}
]
}
},
"forms": {
"add": {
"title": "Добавление цвета",
"template": "app.base.crud.form",
"form": {
"submits": "struct:crud.form.edit.submits",
"rows": [
{
"cols": [
{
"size": 12,
"input": {
"name": "name",
"label": "Название"
}
}
]
}
]
}
},
"edit": {
"title": "Редактирование цвета",
"template": "app.base.crud.form",
"form": {
"rows": [
{
"cols": [
{
"size": 12,
"input": {
"name": "name",
"label": "Название"
}
}
]
}
],
"submits": "struct:crud.form.edit.submits"
}
}
}
},
"actions": "struct:crud.actions"
}

View File

@ -0,0 +1,24 @@
<?php
use A7kz\Platform\Modules\Platform\Segment\Facades\Segment;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
$segments = Segment::listActive();
foreach ($segments as $segment) {
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();
});
}
}
};

View File

@ -0,0 +1,39 @@
<?php
use A7kz\Platform\Models\UniModel;
use A7kz\Platform\Modules\Platform\Core\Facades\Core;
use A7kz\Platform\Modules\Platform\Segment\Facades\Segment;
use Carbon\Carbon;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\Storage;
use \A7kz\Platform\Commands\InstallScript;
return new class extends \A7kz\Platform\Commands\InstallScript {
public function install($module_name, $module_version)
{
}
public function update($module_name, $module_version): void
{
$this->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();
});
}
}
}
};

View File

@ -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);
});