| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- <?php
- namespace App\Services;
- use App\Helpers\DateHelper;
- use App\Models\Import;
- use App\Models\MafOrder;
- use App\Models\Order;
- use App\Models\Product;
- use App\Models\ProductSKU;
- use Exception;
- class ImportMafsService extends ImportBaseService
- {
- const HEADERS = [
- 'ID' => 'products_sku.id',
- 'Год' => 'products_sku.year',
- 'Округ' => 'districts.shortname',
- 'Район' => 'areas.name',
- 'Адрес площадки' => 'orders.object_address',
- '№ заказа МАФ' => 'maf_orders.order_number',
- 'Статус' => 'products_sku.status',
- 'RFID' => 'products_sku.rfid',
- 'Номер фабрики' => 'products_sku.factory_number',
- 'Дата производства' => 'products_sku.manufacture_date',
- 'Номер ведомости' => 'products_sku.statement_number',
- 'Дата ведомости' => 'products_sku.statement_date',
- 'Номер УПД' => 'products_sku.upd_number',
- 'Номер номенклатуры' => 'products.nomenclature_number',
- 'Артикул' => 'products.article',
- 'Наименование по ТЗ' => 'products.name_tz',
- 'Тип по ТЗ' => 'products.type_tz',
- 'Тип' => 'products.type',
- 'Наименование производителя' => 'products.manufacturer_name',
- 'Примечания' => 'products_sku.comment',
- // заголовки из файла для проверки и маппинга
- ];
- public function __construct(Import $import)
- {
- parent::__construct($import);
- $this->headers = self::HEADERS;
- }
- public function handle(): bool
- {
- if(!$this->prepare()) {
- return false;
- }
- $strNumber = 0;
- $result = [
- 'mafsUpdated' => 0,
- ];
- foreach($this->rowIterator as $row){
- $strNumber++;
- $r = $this->rowToArray($row);
- if($strNumber === 1) {
- echo $this->import->log('Skip headers Row: ' . $strNumber);
- continue;
- }
- try {
- $logMessage = "Row $strNumber: " . $r['orders.object_address'] . '. ';
- $id = (int) $r['products_sku.id'];
- $data = [
- 'rfid' => (string) $r['products_sku.rfid'],
- 'factory_number' => (string) $r['products_sku.factory_number'],
- 'manufacture_date' => (!is_null($r['products_sku.manufacture_date']) && DateHelper::isDate($r['products_sku.manufacture_date'])) ? DateHelper::getDateForDB($r['products_sku.manufacture_date']) : null,
- 'statement_number' => (string) $r['products_sku.statement_number'],
- 'statement_date' => (!is_null($r['products_sku.statement_date']) && DateHelper::isDate($r['products_sku.statement_date'])) ? DateHelper::getDateForDB((int)$r['products_sku.statement_date']) : null,
- 'upd_number' => (string) $r['products_sku.upd_number'],
- 'comment' => (string) $r['products_sku.comment'],
- ];
- $logMessage .= $r['products_sku.statement_date'] . ' ' . $r['products_sku.manufacture_date'] .' ';
- $productSKU = ProductSKU::query()
- ->where('id', $id)
- ->first();
- if ($productSKU) {
- $logMessage .= 'Found and updated product with id: ' . $productSKU->id;
- $productSKU->update($data);
- $productSKU->save();
- } else {
- echo $this->import->log('Product sku with id ' . $id . ' NOT FOUND!', 'WARNING');
- }
- echo $this->import->log($logMessage);
- } catch (\Exception $e) {
- echo $this->import->log($e->getMessage(), 'WARNING');
- }
- }
- echo $this->import->log(print_r($result, true));
- $this->import->status = 'DONE';
- $this->import->save();
- return true;
- }
- }
|