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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Reports\Model;
/**
* Events model
*
* @method string getLoggedAt()
* @method \Magento\Reports\Model\Event setLoggedAt(string $value)
* @method int getEventTypeId()
* @method \Magento\Reports\Model\Event setEventTypeId(int $value)
* @method int getObjectId()
* @method \Magento\Reports\Model\Event setObjectId(int $value)
* @method int getSubjectId()
* @method \Magento\Reports\Model\Event setSubjectId(int $value)
* @method int getSubtype()
* @method \Magento\Reports\Model\Event setSubtype(int $value)
* @method int getStoreId()
* @method \Magento\Reports\Model\Event setStoreId(int $value)
*
* @author Magento Core Team <core@magentocommerce.com>
* @api
* @since 100.0.2
*/
class Event extends \Magento\Framework\Model\AbstractModel
{
const EVENT_PRODUCT_VIEW = 1;
const EVENT_PRODUCT_SEND = 2;
const EVENT_PRODUCT_COMPARE = 3;
const EVENT_PRODUCT_TO_CART = 4;
const EVENT_PRODUCT_TO_WISHLIST = 5;
const EVENT_WISHLIST_SHARE = 6;
/**
* @var \Magento\Framework\Stdlib\DateTime\DateTimeFactory
*/
protected $_dateFactory;
/**
* @var \Magento\Reports\Model\Event\TypeFactory
*/
protected $_eventTypeFactory;
/**
* @param \Magento\Framework\Model\Context $context
* @param \Magento\Framework\Registry $registry
* @param \Magento\Framework\Stdlib\DateTime\DateTimeFactory $dateFactory
* @param \Magento\Reports\Model\Event\TypeFactory $eventTypeFactory
* @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
* @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
* @param array $data
*/
public function __construct(
\Magento\Framework\Model\Context $context,
\Magento\Framework\Registry $registry,
\Magento\Framework\Stdlib\DateTime\DateTimeFactory $dateFactory,
\Magento\Reports\Model\Event\TypeFactory $eventTypeFactory,
\Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
\Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
array $data = []
) {
parent::__construct($context, $registry, $resource, $resourceCollection, $data);
$this->_dateFactory = $dateFactory;
$this->_eventTypeFactory = $eventTypeFactory;
}
/**
* Initialize resource
*
* @return void
*/
protected function _construct()
{
$this->_init(\Magento\Reports\Model\ResourceModel\Event::class);
}
/**
* Before Event save process
*
* @return $this
*/
public function beforeSave()
{
$date = $this->_dateFactory->create();
$this->setLoggedAt($date->gmtDate());
return parent::beforeSave();
}
/**
* Update customer type after customer login
*
* @param int $visitorId
* @param int $customerId
* @param array $types
* @return $this
*/
public function updateCustomerType($visitorId, $customerId, $types = null)
{
if ($types === null) {
$types = [];
$typesCollection = $this->_eventTypeFactory->create()->getCollection();
foreach ($typesCollection as $eventType) {
if ($eventType->getCustomerLogin()) {
$types[$eventType->getId()] = $eventType->getId();
}
}
}
$this->getResource()->updateCustomerType($this, $visitorId, $customerId, $types);
return $this;
}
/**
* Clean events (visitors)
*
* @return $this
*/
public function clean()
{
$this->getResource()->clean($this);
return $this;
}
}