/var/www/vhosts/ihelp.ro/httpdocs/src/Controller
Edit: /var/www/vhosts/ihelp.ro/httpdocs/src/Controller/ProductFavoritesController.php (6595B)
Authentication->addUnauthenticatedActions(['addRemove', 'index']);
}
/**
* Index method
*/
public function index()
{
$this->paginate = [
'limit' => CATEGORY_LIST_PAGE_LIMIT,
];
$condition = [];
$productFavorites = null;
// daca este user logat
if (!empty($this->userAuth->id) && $this->userAuth->id) {
$condition = ['ProductFavorites.user_id' => $this->userAuth->id, 'Products.is_active' => true];
$productFavorites = $this->paginate(
$this->ProductFavorites->find()
->contain(['Products', 'Products.FeaturedImage'])
->where($condition)
)->toArray();
} else { // nu este logat
$session = $this->request->getSession();
if ($session->check('favorite_identifier')) {
$favorite_identifier = $session->read('favorite_identifier');
$condition = ['ProductFavorites.uuid' => $favorite_identifier, 'Products.is_active' => true];
$productFavorites = $this->paginate(
$this->ProductFavorites->find()
->contain(['Products', 'Products.FeaturedImage'])
->where($condition)
)->toArray();
}
}
$this->set(compact('productFavorites'));
}
/**
* Add method
*/
public function addRemove($uuidProd)
{
$this->autoRender = false;
$data = [];
if (!empty($uuidProd)) {
if ($this->request->is('post')) {
$favorite_identifier = $this->identifireIdFavoriteSession();
$idProd = $this->ProductFavorites->Products->find()
->where(['Products.uuid' => $uuidProd, 'Products.is_active' => true])
->first()
->id;
if (!empty($idProd)) { // if product
$productFavorite = $this->ProductFavorites->newEmptyEntity();
$data = [
'product_id' => $idProd,
'uuid' => $favorite_identifier,
'is_active' => true
];
if (!empty($this->userAuth->id) && $this->userAuth->id) { //is login
// delete if product is in favorite
$productFavoriteEntity = $this->ProductFavorites->find()
->where(['ProductFavorites.user_id' => $this->userAuth->id, 'ProductFavorites.product_id' => $idProd])
->first();
if (!empty($productFavoriteEntity)) {
$productFavorite = $this->ProductFavorites->get($productFavoriteEntity->id);
if (!empty($productFavoriteEntity)) {
if ($this->ProductFavorites->delete($productFavorite)) {
$this->Flash->success(__('Produsul a fost scos de la favorite..'));
} else {
$this->Flash->error(__('TProdusul nu a fost scos de la favorite..'));
}
return $this->redirect($this->referer());
}
}
// save in favorite
$data['user_id'] = $this->userAuth->id;
$productFavorite = $this->ProductFavorites->patchEntity($productFavorite, $data);
if ($this->ProductFavorites->save($productFavorite)) {
$this->Flash->success(__('The product favorite has been saved.'));
return $this->redirect($this->referer());
}
$this->Flash->error(__('Produsul nu a putut fi adaugat la favorite.'));
return $this->redirect($this->referer());
} else { //is not login
// delete if product is in favorite
$productFavoriteEntity = $this->ProductFavorites->find()
->where(['ProductFavorites.user_id IS' => null, 'ProductFavorites.uuid' => $favorite_identifier, 'ProductFavorites.product_id' => $idProd])
->first();
if (!empty($productFavoriteEntity)) {
$productFavorite = $this->ProductFavorites->get($productFavoriteEntity->id);
if ($this->ProductFavorites->delete($productFavorite)) {
$this->Flash->success(__('Produsul a fost scos de la favorite..'));
} else {
$this->Flash->error(__('TProdusul nu a fost scos de la favorite..'));
}
return $this->redirect($this->referer());
}
// save in favorite
$productFavorite = $this->ProductFavorites->patchEntity($productFavorite, $data);
if ($this->ProductFavorites->save($productFavorite)) {
$this->Flash->success(__('The product favorite has been saved.'));
return $this->redirect($this->referer());
}
$this->Flash->error(__('Produsul nu a putut fi adaugat la favorite.'));
return $this->redirect($this->referer());
}
} else { // the product id not exist
$this->Flash->error(__('Produsul nu exista.'));
return $this->redirect($this->referer());
}
} else { // is not post
$this->Flash->error(__('Transmitere incorecta.'));
return $this->redirect($this->referer());
}
} else { // the uuid not exist
$this->Flash->error(__('Cod produs incorect.'));
return $this->redirect($this->referer());
}
}
}