Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- //print 01
- namespace Controllers\Produtos;
- use Slim\Slim;
- use Models\Produto;
- use Models\Categoria;
- use Models\Click;
- use Models\Cliente;
- class Detalhes extends \Controller {
- private $produto = null;
- private $categoria = null;
- private $cliente = null;
- private $click = null;
- public function __construct($categoria, $produto) {
- $this->loadCategoria($categoria);
- if($this->categoria) {
- $this->loadProduto($produto);
- if($this->produto) {
- $this->registerClick();
- $this->setView();
- } else {
- Slim::getInstance()->redirect('/');
- }
- } else {
- Slim::getInstance()->redirect('/');
- }
- $this->click();
- }
- private function loadCategoria($categoria) {
- $categoria = Categoria::where([
- array('status', 1),
- array('slug', $categoria)
- ]);
- if ($categoria->count() > 0) {
- $this->categoria = $categoria->first();
- }
- }
- private function loadProduto($produto) {
- $produto = Produto::where([
- array('status', 1),
- array('slug', $produto),
- array('categoria', $this->categoria->id)
- ]);
- if ($produto->count() > 0) {
- $this->produto = $produto->first();
- }
- }
- private function registerClick() {
- $this->produto->cliques++;
- $this->produto->save();
- }
- private function click(){
- if(isset($_SESSION['client'])){
- $this->cliente = Cliente::find($_SESSION['client']);
- if($this->cliente){
- $this->click = Click::where([
- array('id_user', $this->cliente->id),
- array('id_product', $this->produto->id)
- ]);
- if($this->click->count() == 0){
- $this->click = new Click([]);
- $this->click->id_user = $this->cliente->id;
- $this->click->id_product = $this->produto->id;
- $this->click->save();
- }
- }
- }
- }
- public function getProductPerUser(){
- if($this->cliente){
- $clicks = Click::where([
- array('id_user', $this->cliente->id),
- array('id_product', '<>', $this->produto->id)
- ]);
- if($clicks->count() > 0){
- $click = new Click();
- $clicks->id_user = $this->cliente->id;
- $clicks->productsPerUser()->associate($clicks->id_product);
- return $clicks;
- }
- return null;
- }else{
- return null;
- }
- }
- public function getProduto() {
- return $this->produto;
- }
- }
- //print 02
- namespace Models;
- class Click extends \Model {
- public $timestamps = false;
- protected $table = 'cliques';
- protected $hasStatus = true;
- protected $appends = [
- 'id_user', 'id_product'
- ];
- public function productsPerUser(){
- return $this->belongsTo('Models\Produto', 'id_produto');
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement