<?php
namespace App\Service;
use App\Repository\PartnerRepository;
use Symfony\Component\HttpFoundation\File\UploadedFile;
class PartnerService extends BaseService
{
/**
* NewsService constructor.
* @param PartnerRepository $repository
*/
public function __construct(
PartnerRepository $repository,
BaseService $baseService
) {
$this->reflectFromParent($baseService);
$this->repository = $repository;
}
public function getListAll($requestData = null)
{
return $this->repository->getListAll($requestData);
}
public function getById($id)
{
return $this->repository->getById($id);
}
public function uploadPhoto(UploadedFile $photo)
{
$folder = $this->container->getParameter('dir.partner');
$newMedia = $this->mediaService->uploadFile($photo, $folder);
return $newMedia['path'];
}
public function removePhoto($entity)
{
$entity->setPhoto(null);
$this->entityManager->flush();
return;
}
public function addEntity($request)
{
$input = [];
// Upload photo
$photo = $request->files->get('photo');
if ($photo) {
$input['photo'] = $this->uploadPhoto($photo);
$request->files->remove('photo');
}
return $this->add($request, $input, null, 'App\DTO\Partner\PartnerOutput', false, [], true);
}
public function updateEntity($request)
{
$input = [];
$entity = $this->get($request->get('id'));
// Remove photo
if ($request->get('removePhoto')) {
$this->removePhoto($entity);
}
// Upload photo
$photo = $request->files->get('photo');
if ($photo) {
$input['photo'] = $this->uploadPhoto($photo);
$request->files->remove('photo');
}
return $this->update($entity, $request, $input, null, 'App\DTO\Partner\PartnerOutput', false, true);
}
public function updateStatus($request)
{
$entity = $this->get($request->get('id'));
$status = $request->get('status');
$entity->setStatus($status);
$this->repository->save($entity);
return $this->autoMapper->map($entity, 'App\DTO\Partner\PartnerOutput');
}
public function deleteEntity($id)
{
$entity = $this->get($id);
$this->delete($entity);
if ($entity->getPhoto()) {
$this->mediaService->deleteFile($entity->getPhoto());
}
return true;
}
}