1+ <?php
2+ /**
3+ * Created by PhpStorm.
4+ * User: o5k4r1n
5+ * Date: 29-05-18
6+ * Time: 10:44 AM
7+ */
8+ class Zendesk_Zendesk_Helper_Sync extends Mage_Core_Helper_Abstract {
9+
10+ public function getCustomerData ($ customer ){
11+ if (!Mage::getStoreConfig ('zendesk/general/customer_sync ' ))
12+ return ;
13+
14+ $ user = null ;
15+ //$customer = $event->getCustomer();
16+ $ email = $ customer ->getEmail ();
17+ $ orig_email = $ customer ->getOrigData ();
18+ $ orig_email = $ orig_email ['email ' ];
19+ echo "correo: " .$ email ;
20+ //Get Customer Group
21+ $ group_id = $ customer ->getGroupId ();
22+ $ group = Mage::getModel ('customer/group ' )->load ($ group_id );
23+
24+ //Get Customer Last Login Date
25+ $ log_customer = Mage::getModel ('log/customer ' )->loadByCustomer ($ customer );
26+ if ($ log_customer ->getLoginAt ())
27+ $ logged_in = date ("Y-m-d\TH:i:s\Z " ,strtotime ($ log_customer ->getLoginAt ()));
28+ else
29+ $ logged_in = "" ;
30+
31+ //Get Customer Sales Statistics
32+ $ order_totals = Mage::getResourceModel ('sales/order_collection ' );
33+ $ lifetime_sale = 0 ;
34+ $ average_sale = 0 ;
35+
36+ if (is_object ($ order_totals )) {
37+ $ order_totals
38+ ->addFieldToFilter ('customer_id ' , $ customer ->getId ())
39+ ->addFieldToFilter ('status ' , Mage_Sales_Model_Order::STATE_COMPLETE );
40+
41+ $ order_totals ->getSelect ()
42+ ->reset (Zend_Db_Select::COLUMNS )
43+ ->columns (new Zend_Db_Expr ("SUM(grand_total) as total " ))
44+ ->columns (new Zend_Db_Expr ("AVG(grand_total) as avg_total " ))
45+ ->group ('customer_id ' );
46+
47+ if (count ($ order_totals ) > 0 ) {
48+ $ sum = (float ) $ order_totals ->getFirstItem ()->getTotal ();
49+ $ avg = (float ) $ order_totals ->getFirstItem ()->getAvgTotal ();
50+
51+ $ lifetime_sale = Mage::helper ('core ' )->currency ($ sum , true , false );
52+ $ average_sale = Mage::helper ('core ' )->currency ($ avg , true , false );
53+ }
54+ }
55+
56+ $ info ['user ' ] = array (
57+ "name " => $ customer ->getFirstname () . " " . $ customer ->getLastname (),
58+ "email " => $ email ,
59+ "user_fields " => array (
60+ "group " => $ group ->getCode (),
61+ "name " => $ customer ->getFirstname () . " " . $ customer ->getLastname (),
62+ "id " => $ customer ->getId (),
63+ "logged_in " => $ logged_in ,
64+ "average_sale " => $ average_sale ,
65+ "lifetime_sale " => $ lifetime_sale
66+ )
67+ );
68+
69+ if ($ orig_email && $ orig_email !== $ email ) {
70+ $ user = Mage::getModel ('zendesk/api_users ' )->find ($ orig_email );
71+
72+ if (isset ($ user ['id ' ])) {
73+ $ data ['identity ' ] = array (
74+ 'type ' => 'email ' ,
75+ 'value ' => $ email ,
76+ 'verified ' => true
77+ );
78+ $ identity = Mage::getModel ('zendesk/api_users ' )->addIdentity ($ user ['id ' ],$ data );
79+ if (isset ($ identity ['id ' ])) {
80+ Mage::getModel ('zendesk/api_users ' )->setPrimaryIdentity ($ user ['id ' ], $ identity ['id ' ]);
81+ }
82+ }
83+ }
84+ if (!$ user ) {
85+ $ user = Mage::getModel ('zendesk/api_users ' )->find ($ email );
86+ }
87+
88+ if (isset ($ user ['id ' ])) {
89+ $ this ->syncData ($ info );
90+ } else {
91+ $ info ['user ' ]['verified ' ] = true ;
92+ $ user = Mage::getModel ('zendesk/api_users ' )->create ($ info );
93+ }
94+ return $ user ;
95+ }
96+ public function syncData ($ info )
97+ {
98+ Mage::getModel ('zendesk/api_users ' )->create ($ info );
99+ }
100+ }
0 commit comments