/
ildar8919
/
Mediahosting
Обзор
Документация
Войти
/
ildar8919
/
Mediahosting
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
app/Http/Controllers/ApiDataController.php
116 строк
6 KB
Ildar
Добавление новых файлов
18 янв 2025, 15:18
18 янв 2025, 15:18
a5e5342
Код
Авторство
О чём код?
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Picture; use App\Models\Nomenclature; use App\Helpers\ImageHandler; class ApiDataController extends Controller { public function store(Request $request){ $validatedNomenclature = $request->validate([ 'UUID' => 'required|string|max:255', // UUID номеклатуры 'name_full' => 'required|string|max:255', // Имя товара для модели Nomenclature 'deletion_mark' => 'required|boolean', // Пометка на удалление 'manufacturer' => 'required|string|max:255', // Производитель 'category' => 'required|string|max:255', // Категория товара 'type_of_product' => 'required|string|max:255', // Тип товара 'article' => 'required|string|max:255', // Артикул товара 'crossID' => 'required|integer', ]); $validatedPicture = $request->validate([ 'pictures' => 'nullable|array', 'pictures.*.UUID' => 'required|string|max:255', // UUID картинки 'pictures.*.name_in_1C' => 'required|string|max:255', // Название картинки 'pictures.*.extension' => 'required|string|max:255', // Расширение картинки 'pictures.*.base64' => 'required|string|max:100000000', // Base64 картинки ]); $nomenclature = new Nomenclature(); $nomenclature->UUID = $validatedNomenclature['UUID']; $nomenclature->article = $validatedNomenclature['article']; $nomenclature->name_full = $validatedNomenclature['name_full']; $nomenclature->manufacturer = $validatedNomenclature['manufacturer']; $nomenclature->CROSSID = $validatedNomenclature['crossID']; $nomenclature->type_of_product = $validatedNomenclature['type_of_product']; $nomenclature->category = $validatedNomenclature['category']; $nomenclature->deletion_mark = $validatedNomenclature['deletion_mark']; try { // Пытаемся сохранить новую запись $nomenclature->save(); } catch (\Exception $e) { // Если сохранение не удалось, пытаемся обновить запись Nomenclature::updateOrCreate( ['UUID' => $validatedNomenclature['UUID']], // Уникальный идентификатор для поиска [ 'article' => $validatedNomenclature['article'], 'name_full' => $validatedNomenclature['name_full'], 'manufacturer' => $validatedNomenclature['manufacturer'], 'CROSSID' => $validatedNomenclature['crossID'], 'type_of_product' => $validatedNomenclature['type_of_product'], 'category' => $validatedNomenclature['category'], 'deletion_mark' => $validatedNomenclature['deletion_mark'], ] ); } /*$nomenclature = Nomenclature::updateOrCreate([ 'UUID' => $validatedNomenclature['UUID'], 'name_full' => $validatedNomenclature['name_full'], 'deletion_mark' => $validatedNomenclature['deletion_mark'], 'manufacturer' => $validatedNomenclature['manufacturer'], 'category' => $validatedNomenclature['category'], 'type_of_product' => $validatedNomenclature['type_of_product'], 'article' => $validatedNomenclature['article'], ]);*/ foreach ($validatedPicture['pictures'] as $pictureData) { // Создаем новый экземпляр модели Picture $picture = new Picture(); // Заполняем атрибуты модели Picture $picture->UUID = $pictureData['UUID']; $picture->name_in_1C = $pictureData['name_in_1C']; $picture->extension = $pictureData['extension']; try { $imagePath = ImageHandler::saveBase64Image( $pictureData['base64'], 'img', $pictureData['UUID'] . $picture->extension); $picture->name_in_mediahosting = $pictureData['UUID']; $picture->path = $imagePath; } catch (\Exception $e) { return response()->json(['error' => $e->getMessage()], 400); } //$picture->base64 = $pictureData['base64']; // Сохраняем Base64 изображение // Связываем картинку с номенклатурой $picture->UUID_nomenclature = $nomenclature->UUID; // Сохраняем картинку try { // Пытаемся сохранить картинку $picture->save(); } catch (\Exception $e) { // Если сохранение не удалось, пытаемся обновить запись Picture::updateOrCreate( ['UUID' => $pictureData['UUID']], // Уникальный идентификатор для поиска [ 'name_in_1C' => $pictureData['name_in_1C'], 'extension' => $pictureData['extension'], 'name_in_mediahosting' => $pictureData['UUID'], 'path' => $imagePath, 'UUID_nomenclature' => $nomenclature->UUID, ] ); } } return response()->json( [ 'message' => 'Данные успешно сохранены!', 'nomenclature_id' => $nomenclature->UUID ], 201); } }