Quellcode durchsuchen

fajl letoltes hiva javitas

master
Dukai Károly vor 3 Jahren
Ursprung
Commit
d9b7184f07
4 geänderte Dateien mit 119 neuen und 130 gelöschten Zeilen
  1. +75
    -76
      modules/custom/arlista/src/Controller/ProductController.php
  2. +1
    -1
      modules/custom/arlista/src/Controller/UploadedFileController.php
  3. +42
    -52
      modules/custom/arlista/src/Factory/AbstractSpreadSheetFactory.php
  4. +1
    -1
      modules/custom/arlista/src/Factory/SpreadSheetFactory.php

+ 75
- 76
modules/custom/arlista/src/Controller/ProductController.php Datei anzeigen

@@ -9,82 +9,81 @@ use Drupal\arlista\Entity\WorkFlow;

class ProductController extends ArlistaAbstractController {

public function actualiseModifiedProductDataOfFile(Request $request) {

$fid = $request->request->get('fid');
$this->getResponseBody()->setFid($fid);
$this->getResponseBody()->setMessage('Sikertelen aktualizáció');

if ($this->currentUser->isAnonymous() || !$this->isAdmin()) {
$this->getResponseBody()->setMessage('Sikertelen azonosítás');
$this->getResponse()->setData($this->getResponseBody()->toArray());
return $this->getResponse();
}

$uploadedFile = $this->getFileFactory()->find($fid);
if (empty($uploadedFile) || empty($fid)) {
$this->getResponseBody()->setMessage('Nincs ilyen fájl');
$this->getResponse()->setData($this->getResponseBody()->toArray());
return $this->getResponse();
}

if (empty($uploadedFile->getTotalProducts() < 1)) {
$this->getResponseBody()->setMessage('A feltöltött fájl nem tartalmaz termékeket');
$this->getResponse()->setData($this->getResponseBody()->toArray());
return $this->getResponse();
}

$products = $this->getProductFactory()->findProductsByUploadedFileId($uploadedFile->getId());
if (empty($products)) {
$this->getResponseBody()->setMessage('A feltöltött fájlhoz kapcsolódó termékek nem találhatóak');
$this->getResponse()->setData($this->getResponseBody()->toArray());
return $this->getResponse();
}
$modifiedProducts = [];

/* @var $product Product */
foreach ($products as $product) {
if ($product->getModifiedAt() > $uploadedFile->getModifiedAt()) {
$modifiedProducts[] = $product;
}
}

$result = [
'products' => $modifiedProducts,
'manufacturer' => $this->getManufacturerFactory()->find($uploadedFile->getParentManufacturerId()),
'totalNumbered' => 0,
'axicoIdCopied' => 0,
'axicoIdContinued' => 0,
'axicoIdGenerated' => 0,
'axicoId' => [],
'axicoIdMissing' => 0,
'status' => false,
'axicoIdRevoked' => 0,
'newProduct' => 0,
'updatedProduct' => 0,
'revokeAxicoId' => 0,
'revokedProducts' => [],
'totalActualised' => 0,
];

$result = $this->getProductFactory()->actualiseProducts($result);
if ($result['totalActualised'] === 0 || !$result['status']) {
$this->getResponseBody()->setMessage('Nincs aktualizálható termék - ellenőrizze a konfigurációkat');
$this->getResponse()->setData($this->getResponseBody()->toArray());
return $this->getResponse();
}

$uploadedFile->setWorkFlow(WorkFlow::ACTIVATED);
$this->getFileFactory()->save($uploadedFile);

unset($result['products'], $result['manufacturer']);

$this->getResponseBody()->setMessage('Sikeres aktualizáció');
$this->getResponseBody()->setData($result);
$this->getResponseBody()->setSuccess(1);
$this->getResponse()->setData($this->getResponseBody()->toArray());

return $this->getResponse();
public function actualiseModifiedProductDataOfFile(Request $request) {

$fid = $request->request->get('fid');
$this->getResponseBody()->setFid($fid);
$this->getResponseBody()->setMessage('Sikertelen aktualizáció');

if ($this->currentUser->isAnonymous() || !$this->isAdmin()) {
$this->getResponseBody()->setMessage('Sikertelen azonosítás');
$this->getResponse()->setData($this->getResponseBody()->toArray());
return $this->getResponse();
}

$uploadedFile = $this->getFileFactory()->find($fid);
if (empty($uploadedFile) || empty($fid)) {
$this->getResponseBody()->setMessage('Nincs ilyen fájl');
$this->getResponse()->setData($this->getResponseBody()->toArray());
return $this->getResponse();
}

if (empty($uploadedFile->getTotalProducts() < 1)) {
$this->getResponseBody()->setMessage('A feltöltött fájl nem tartalmaz termékeket');
$this->getResponse()->setData($this->getResponseBody()->toArray());
return $this->getResponse();
}

$products = $this->getProductFactory()->findProductsByUploadedFileId($uploadedFile->getId());
if (empty($products)) {
$this->getResponseBody()->setMessage('A feltöltött fájlhoz kapcsolódó termékek nem találhatóak');
$this->getResponse()->setData($this->getResponseBody()->toArray());
return $this->getResponse();
}
$modifiedProducts = [];

/* @var $product Product */
foreach ($products as $product) {
if ($product->getModifiedAt() > $uploadedFile->getModifiedAt()) {
$modifiedProducts[] = $product;
}
}

$result = $this->getProductFactory()->actualiseProducts([
'products' => $modifiedProducts,
'manufacturer' => $this->getManufacturerFactory()->find($uploadedFile->getParentManufacturerId()),
'totalNumbered' => 0,
'axicoIdCopied' => 0,
'axicoIdContinued' => 0,
'axicoIdGenerated' => 0,
'axicoId' => [],
'axicoIdMissing' => 0,
'status' => false,
'axicoIdRevoked' => 0,
'newProduct' => 0,
'updatedProduct' => 0,
'revokeAxicoId' => 0,
'revokedProducts' => [],
'totalActualised' => 0,
]);
if ($result['totalActualised'] === 0 || !$result['status']) {
$this->getResponseBody()->setMessage('Nincs aktualizálható termék - ellenőrizze a konfigurációkat');
$this->getResponse()->setData($this->getResponseBody()->toArray());
return $this->getResponse();
}

$uploadedFile->setWorkFlow(WorkFlow::ACTIVATED);
$this->getFileFactory()->save($uploadedFile);

unset($result['products'], $result['manufacturer']);

$this->getResponseBody()->setMessage('Sikeres termék ( ' . $result['totalActualised'] . ' db ) aktualizáció! ');
$this->getResponseBody()->setData($result);
$this->getResponseBody()->setSuccess(1);
$this->getResponse()->setData($this->getResponseBody()->toArray());

return $this->getResponse();
}

}

+ 1
- 1
modules/custom/arlista/src/Controller/UploadedFileController.php Datei anzeigen

@@ -29,7 +29,7 @@ class UploadedFileController extends ArlistaAbstractController {
$uploadedFile = $this->getFileFactory()->find($request->request->get('fid'));
$spreadSheet = $this->getSpreadSheetFactory()->loadUploadedFile($uploadedFile);
if (empty($spreadSheet)) {
$this->getResponseBody()->setMessage('A feltöltött fájl nem tartalmaz excel adatokat');
$this->getResponseBody()->setMessage('A feltöltött fájl nem található!');
$this->getResponse()->setData($this->getResponseBody()->toArray());
return $this->getResponse();
}

+ 42
- 52
modules/custom/arlista/src/Factory/AbstractSpreadSheetFactory.php Datei anzeigen

@@ -6,58 +6,48 @@ use Drupal\arlista\Entity\UploadedFile;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

abstract class AbstractSpreadSheetFactory
{

private $uploadedFileid;

public function initSpreadSheet(): Spreadsheet
{
return new \PhpOffice\PhpSpreadsheet\Spreadsheet();
}

public function getSpreadSheetWriter(SpreadSheet $spreadSheetData)
{
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadSheetData);
$writer->setOffice2003Compatibility(true);
return $writer;
}

public function getUploadedFileid()
{
return $this->uploadedFileid;
}

public function setUploadedFileid($uploadedFileid): void
{
$this->uploadedFileid = $uploadedFileid;
}

public function createNewSpreadSheet(): Spreadsheet
{
return new Spreadsheet();
}

public function createXlsxWriterFromSpreadSheet(Spreadsheet $spreadsheet): Xlsx
{
return new Xlsx($spreadsheet);
}

public function loadUploadedFile(UploadedFile $uploadedFile): Spreadsheet
{
try {
$this->setUploadedFileid($uploadedFile->getId());
$fileManaged = \Drupal::entityTypeManager()
->getStorage('file')
->load($uploadedFile->getFid());

$path = $fileManaged->get('uri')->value;
$path = str_replace("public://", "sites/default/files/", $path);
$spreadSheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($path);
return $spreadSheet;
} catch (exception $e) {
return null;
}
abstract class AbstractSpreadSheetFactory {

private ?int $uploadedFileid = null;

public function initSpreadSheet(): Spreadsheet {
return new \PhpOffice\PhpSpreadsheet\Spreadsheet();
}

public function getSpreadSheetWriter(SpreadSheet $spreadSheetData) {
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadSheetData);
$writer->setOffice2003Compatibility(true);
return $writer;
}

public function getUploadedFileid(): ?int {
return $this->uploadedFileid;
}

public function setUploadedFileid(?int $uploadedFileid): void {
$this->uploadedFileid = $uploadedFileid;
}

public function createNewSpreadSheet(): Spreadsheet {
return new Spreadsheet();
}

public function createXlsxWriterFromSpreadSheet(Spreadsheet $spreadsheet): Xlsx {
return new Xlsx($spreadsheet);
}

public function loadUploadedFile(UploadedFile $uploadedFile): ?Spreadsheet {
try {
$this->setUploadedFileid($uploadedFile->getId());
$fileManaged = \Drupal::entityTypeManager()
->getStorage('file')
->load($uploadedFile->getFid());
$path = str_replace("public://", "sites/default/files/", $fileManaged->get('uri')->value);
$spreadSheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($path);
return $spreadSheet;
} catch (exception $e) {
return null;
}
}

}

+ 1
- 1
modules/custom/arlista/src/Factory/SpreadSheetFactory.php Datei anzeigen

@@ -25,7 +25,7 @@ class SpreadSheetFactory extends AbstractSpreadSheetFactory {
private ?ComponentFactory $componentFactory;
private ?ManufacturerFactory $manufacturerFactory;
private ?CategoryFactory $categoryFactory;
private ?Manufacturer $manufacturer;
private ?Manufacturer $manufacturer = null;
private ?Category $category = null;
private ?Component $component = null;


Laden…
Abbrechen
Speichern