Advertisement
lmenezes001

Untitled

Dec 18th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.57 KB | None | 0 0
  1. <?php
  2. //print 01
  3. namespace Controllers\Produtos;
  4.  
  5. use Slim\Slim;
  6. use Models\Produto;
  7. use Models\Categoria;
  8. use Models\Click;
  9. use Models\Cliente;
  10.  
  11. class Detalhes extends \Controller {
  12.  
  13. private $produto = null;
  14. private $categoria = null;
  15. private $cliente = null;
  16. private $click = null;
  17.  
  18. public function __construct($categoria, $produto) {
  19. $this->loadCategoria($categoria);
  20. if($this->categoria) {
  21. $this->loadProduto($produto);
  22. if($this->produto) {
  23. $this->registerClick();
  24. $this->setView();
  25. } else {
  26. Slim::getInstance()->redirect('/');
  27. }
  28. } else {
  29. Slim::getInstance()->redirect('/');
  30. }
  31. $this->click();
  32. }
  33.  
  34. private function loadCategoria($categoria) {
  35. $categoria = Categoria::where([
  36. array('status', 1),
  37. array('slug', $categoria)
  38. ]);
  39. if ($categoria->count() > 0) {
  40. $this->categoria = $categoria->first();
  41. }
  42. }
  43.  
  44. private function loadProduto($produto) {
  45. $produto = Produto::where([
  46. array('status', 1),
  47. array('slug', $produto),
  48. array('categoria', $this->categoria->id)
  49. ]);
  50. if ($produto->count() > 0) {
  51. $this->produto = $produto->first();
  52. }
  53. }
  54.  
  55. private function registerClick() {
  56. $this->produto->cliques++;
  57. $this->produto->save();
  58. }
  59.  
  60. private function click(){
  61. if(isset($_SESSION['client'])){
  62. $this->cliente = Cliente::find($_SESSION['client']);
  63. if($this->cliente){
  64. $this->click = Click::where([
  65. array('id_user', $this->cliente->id),
  66. array('id_product', $this->produto->id)
  67. ]);
  68. if($this->click->count() == 0){
  69. $this->click = new Click([]);
  70. $this->click->id_user = $this->cliente->id;
  71. $this->click->id_product = $this->produto->id;
  72. $this->click->save();
  73. }
  74. }
  75. }
  76. }
  77.  
  78. public function getProductPerUser(){
  79. if($this->cliente){
  80. $clicks = Click::where([
  81. array('id_user', $this->cliente->id),
  82. array('id_product', '<>', $this->produto->id)
  83. ]);
  84. if($clicks->count() > 0){
  85. $click = new Click();
  86. $clicks->id_user = $this->cliente->id;
  87. $clicks->productsPerUser()->associate($clicks->id_product);
  88. return $clicks;
  89. }
  90. return null;
  91. }else{
  92. return null;
  93. }
  94. }
  95.  
  96. public function getProduto() {
  97. return $this->produto;
  98. }
  99.  
  100. }
  101. //print 02
  102. namespace Models;
  103.  
  104. class Click extends \Model {
  105. public $timestamps = false;
  106. protected $table = 'cliques';
  107. protected $hasStatus = true;
  108. protected $appends = [
  109. 'id_user', 'id_product'
  110. ];
  111.  
  112.  
  113. public function productsPerUser(){
  114. return $this->belongsTo('Models\Produto', 'id_produto');
  115. }
  116.  
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement