1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
<?php
class ManufacturerWriter implements ManufacturerWriterInterface
{
protected $queryBuilder;
protected $languageProvider;
public function __construct(CI_DB_query_builder $queryBuilder, LanguageProvider $languageProvider)
{
$this->queryBuilder = $queryBuilder;
$this->languageProvider = $languageProvider;
}
public function store(ManufacturerInterface $manufacturer)
{
$dataArray = [
'manufacturers_name' => $manufacturer->getName(),
'manufacturers_image' => $manufacturer->getImage(),
'date_added' => $manufacturer->getDateAdded()->format('Y-m-d H:i:s'),
];
$this->queryBuilder->insert('manufacturers', $dataArray);
$manufacturerId = $this->queryBuilder->insert_id();
foreach($manufacturer->getUrls() as $languageCode => $url)
{
$this->queryBuilder->insert('manufacturers_info', [
'manufacturers_id' => $manufacturerId,
'languages_id' => $this->languageProvider->getIdByCode(MainFactory::create('LanguageCode',
new StringType($languageCode))),
'manufacturers_url' => $url
]);
}
$manufacturer->setId(new IdType($manufacturerId));
return $this;
}
public function update(ManufacturerInterface $manufacturer)
{
$dataArray = [
'manufacturers_name' => $manufacturer->getName(),
'manufacturers_image' => $manufacturer->getImage(),
];
$this->queryBuilder->update('manufacturers', $dataArray, ['manufacturers_id' => $manufacturer->getId()]);
foreach($manufacturer->getUrls() as $languageCode => $url)
{
$languageId = $this->languageProvider->getIdByCode(new LanguageCode(new StringType($languageCode)));
$this->queryBuilder->update('manufacturers_info', ['manufacturers_url' => $url],
['manufacturers_id' => $manufacturer->getId(), 'languages_id' => $languageId]);
}
return $this;
}
}