66namespace Magento \Customer \Ui \Component \DataProvider ;
77
88use Magento \Customer \Api \CustomerMetadataInterface ;
9+ use Magento \Customer \Model \AccountManagement ;
910use Magento \Framework \Api \AttributeValueFactory ;
11+ use Magento \Framework \App \Config \ScopeConfigInterface ;
1012use Magento \Framework \Exception \NoSuchEntityException ;
1113use Magento \Customer \Api \GroupRepositoryInterface ;
14+ use Magento \Framework \App \ObjectManager ;
15+ use Magento \Store \Model \ScopeInterface ;
1216use Magento \Store \Model \StoreManagerInterface ;
1317
1418/**
@@ -31,6 +35,21 @@ class Document extends \Magento\Framework\View\Element\UiComponent\DataProvider\
3135 */
3236 private static $ websiteAttributeCode = 'website_id ' ;
3337
38+ /**
39+ * @var string
40+ */
41+ private static $ websiteIdAttributeCode = 'original_website_id ' ;
42+
43+ /**
44+ * @var string
45+ */
46+ private static $ confirmationAttributeCode = 'confirmation ' ;
47+
48+ /**
49+ * @var string
50+ */
51+ private static $ accountLockAttributeCode = 'lock_expires ' ;
52+
3453 /**
3554 * @var CustomerMetadataInterface
3655 */
@@ -46,23 +65,31 @@ class Document extends \Magento\Framework\View\Element\UiComponent\DataProvider\
4665 */
4766 private $ storeManager ;
4867
68+ /**
69+ * @var ScopeConfigInterface
70+ */
71+ private $ scopeConfig ;
72+
4973 /**
5074 * Document constructor.
5175 * @param AttributeValueFactory $attributeValueFactory
5276 * @param GroupRepositoryInterface $groupRepository
5377 * @param CustomerMetadataInterface $customerMetadata
5478 * @param StoreManagerInterface $storeManager
79+ * @param ScopeConfigInterface $scopeConfig
5580 */
5681 public function __construct (
5782 AttributeValueFactory $ attributeValueFactory ,
5883 GroupRepositoryInterface $ groupRepository ,
5984 CustomerMetadataInterface $ customerMetadata ,
60- StoreManagerInterface $ storeManager
85+ StoreManagerInterface $ storeManager ,
86+ ScopeConfigInterface $ scopeConfig = null
6187 ) {
6288 parent ::__construct ($ attributeValueFactory );
6389 $ this ->customerMetadata = $ customerMetadata ;
6490 $ this ->groupRepository = $ groupRepository ;
6591 $ this ->storeManager = $ storeManager ;
92+ $ this ->scopeConfig = $ scopeConfig ?: ObjectManager::getInstance ()->create (ScopeConfigInterface::class);
6693 }
6794
6895 /**
@@ -80,6 +107,12 @@ public function getCustomAttribute($attributeCode)
80107 case self ::$ websiteAttributeCode :
81108 $ this ->setWebsiteValue ();
82109 break ;
110+ case self ::$ confirmationAttributeCode :
111+ $ this ->setConfirmationValue ();
112+ break ;
113+ case self ::$ accountLockAttributeCode :
114+ $ this ->setAccountLockValue ();
115+ break ;
83116 }
84117 return parent ::getCustomAttribute ($ attributeCode );
85118 }
@@ -133,5 +166,49 @@ private function setWebsiteValue()
133166 $ value = $ this ->getData (self ::$ websiteAttributeCode );
134167 $ list = $ this ->storeManager ->getWebsites ();
135168 $ this ->setCustomAttribute (self ::$ websiteAttributeCode , $ list [$ value ]->getName ());
169+ $ this ->setCustomAttribute (self ::$ websiteIdAttributeCode , $ value );
170+ }
171+
172+ /**
173+ * Update confirmation value
174+ * Method set confirmation text value to match what is shown in grid
175+ * @return void
176+ */
177+ private function setConfirmationValue ()
178+ {
179+ $ value = $ this ->getData (self ::$ confirmationAttributeCode );
180+ $ websiteId = $ this ->getData (self ::$ websiteIdAttributeCode ) ?: $ this ->getData (self ::$ websiteAttributeCode );
181+ $ isConfirmRequired = (bool )$ this ->scopeConfig ->getValue (
182+ AccountManagement::XML_PATH_IS_CONFIRM ,
183+ ScopeInterface::SCOPE_WEBSITES ,
184+ $ websiteId
185+ );
186+
187+ $ valueText = __ ('Confirmation Not Required ' );
188+ if ($ isConfirmRequired ) {
189+ $ valueText = $ value === null ? __ ('Confirmed ' ) : __ ('Confirmation Required ' );
190+ }
191+
192+ $ this ->setCustomAttribute (self ::$ confirmationAttributeCode , $ valueText );
193+ }
194+
195+ /**
196+ * Update lock expires value
197+ * Method set account lock text value to match what is shown in grid
198+ * @return void
199+ */
200+ private function setAccountLockValue ()
201+ {
202+ $ value = $ this ->getDataByPath (self ::$ accountLockAttributeCode );
203+
204+ $ valueText = __ ('Unlocked ' );
205+ if ($ value !== null ) {
206+ $ lockExpires = new \DateTime ($ value );
207+ if ($ lockExpires > new \DateTime ()) {
208+ $ valueText = __ ('Locked ' );
209+ }
210+ }
211+
212+ $ this ->setCustomAttribute (self ::$ accountLockAttributeCode , $ valueText );
136213 }
137214}
0 commit comments