[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhortuneMerchantViewController 4 extends PhortuneMerchantController { 5 6 private $id; 7 8 public function willProcessRequest(array $data) { 9 $this->id = $data['id']; 10 } 11 12 public function processRequest() { 13 $request = $this->getRequest(); 14 $viewer = $request->getUser(); 15 16 $merchant = id(new PhortuneMerchantQuery()) 17 ->setViewer($viewer) 18 ->withIDs(array($this->id)) 19 ->executeOne(); 20 if (!$merchant) { 21 return new Aphront404Response(); 22 } 23 24 $crumbs = $this->buildApplicationCrumbs(); 25 $crumbs->addTextCrumb($merchant->getName()); 26 27 $title = pht( 28 'Merchant %d %s', 29 $merchant->getID(), 30 $merchant->getName()); 31 32 $header = id(new PHUIHeaderView()) 33 ->setObjectName(pht('Merchant %d', $merchant->getID())) 34 ->setHeader($merchant->getName()) 35 ->setUser($viewer) 36 ->setPolicyObject($merchant); 37 38 $providers = id(new PhortunePaymentProviderConfigQuery()) 39 ->setViewer($viewer) 40 ->withMerchantPHIDs(array($merchant->getPHID())) 41 ->execute(); 42 43 $properties = $this->buildPropertyListView($merchant, $providers); 44 $actions = $this->buildActionListView($merchant); 45 $properties->setActionList($actions); 46 $crumbs->setActionList($actions); 47 48 $provider_list = $this->buildProviderList( 49 $merchant, 50 $providers); 51 52 $box = id(new PHUIObjectBoxView()) 53 ->setHeader($header) 54 ->appendChild($properties); 55 56 $xactions = id(new PhortuneMerchantTransactionQuery()) 57 ->setViewer($viewer) 58 ->withObjectPHIDs(array($merchant->getPHID())) 59 ->execute(); 60 61 $timeline = id(new PhabricatorApplicationTransactionView()) 62 ->setUser($viewer) 63 ->setObjectPHID($merchant->getPHID()) 64 ->setTransactions($xactions); 65 66 return $this->buildApplicationPage( 67 array( 68 $crumbs, 69 $box, 70 $provider_list, 71 $timeline, 72 ), 73 array( 74 'title' => $title, 75 )); 76 } 77 78 private function buildPropertyListView( 79 PhortuneMerchant $merchant, 80 array $providers) { 81 82 $viewer = $this->getRequest()->getUser(); 83 84 $view = id(new PHUIPropertyListView()) 85 ->setUser($viewer) 86 ->setObject($merchant); 87 88 $status_view = new PHUIStatusListView(); 89 90 $have_any = false; 91 $any_test = false; 92 foreach ($providers as $provider_config) { 93 $provider = $provider_config->buildProvider(); 94 if ($provider->isEnabled()) { 95 $have_any = true; 96 } 97 if (!$provider->isAcceptingLivePayments()) { 98 $any_test = true; 99 } 100 } 101 102 if ($have_any) { 103 $status_view->addItem( 104 id(new PHUIStatusItemView()) 105 ->setIcon(PHUIStatusItemView::ICON_ACCEPT, 'green') 106 ->setTarget(pht('Accepts Payments')) 107 ->setNote(pht('This merchant can accept payments.'))); 108 109 if ($any_test) { 110 $status_view->addItem( 111 id(new PHUIStatusItemView()) 112 ->setIcon(PHUIStatusItemView::ICON_WARNING, 'yellow') 113 ->setTarget(pht('Test Mode')) 114 ->setNote(pht('This merchant is accepting test payments.'))); 115 } else { 116 $status_view->addItem( 117 id(new PHUIStatusItemView()) 118 ->setIcon(PHUIStatusItemView::ICON_ACCEPT, 'green') 119 ->setTarget(pht('Live Mode')) 120 ->setNote(pht('This merchant is accepting live payments.'))); 121 } 122 } else if ($providers) { 123 $status_view->addItem( 124 id(new PHUIStatusItemView()) 125 ->setIcon(PHUIStatusItemView::ICON_REJECT, 'red') 126 ->setTarget(pht('No Enabled Providers')) 127 ->setNote( 128 pht( 129 'All of the payment providers for this merchant are '. 130 'disabled.'))); 131 } else { 132 $status_view->addItem( 133 id(new PHUIStatusItemView()) 134 ->setIcon(PHUIStatusItemView::ICON_WARNING, 'yellow') 135 ->setTarget(pht('No Providers')) 136 ->setNote( 137 pht( 138 'This merchant does not have any payment providers configured '. 139 'yet, so it can not accept payments. Add a provider.'))); 140 } 141 142 $view->addProperty(pht('Status'), $status_view); 143 144 $this->loadHandles($merchant->getMemberPHIDs()); 145 146 $view->addProperty( 147 pht('Members'), 148 $this->renderHandlesForPHIDs($merchant->getMemberPHIDs())); 149 150 $view->invokeWillRenderEvent(); 151 152 $description = $merchant->getDescription(); 153 if (strlen($description)) { 154 $description = PhabricatorMarkupEngine::renderOneObject( 155 id(new PhabricatorMarkupOneOff())->setContent($description), 156 'default', 157 $viewer); 158 159 $view->addSectionHeader(pht('Description')); 160 $view->addTextContent($description); 161 } 162 163 return $view; 164 } 165 166 private function buildActionListView(PhortuneMerchant $merchant) { 167 $viewer = $this->getRequest()->getUser(); 168 $id = $merchant->getID(); 169 170 $can_edit = PhabricatorPolicyFilter::hasCapability( 171 $viewer, 172 $merchant, 173 PhabricatorPolicyCapability::CAN_EDIT); 174 175 $view = id(new PhabricatorActionListView()) 176 ->setUser($viewer) 177 ->setObject($merchant); 178 179 $view->addAction( 180 id(new PhabricatorActionView()) 181 ->setName(pht('Edit Merchant')) 182 ->setIcon('fa-pencil') 183 ->setDisabled(!$can_edit) 184 ->setWorkflow(!$can_edit) 185 ->setHref($this->getApplicationURI("merchant/edit/{$id}/"))); 186 187 $view->addAction( 188 id(new PhabricatorActionView()) 189 ->setName(pht('View Orders')) 190 ->setIcon('fa-shopping-cart') 191 ->setHref($this->getApplicationURI("merchant/orders/{$id}/")) 192 ->setDisabled(!$can_edit) 193 ->setWorkflow(!$can_edit)); 194 195 return $view; 196 } 197 198 private function buildProviderList( 199 PhortuneMerchant $merchant, 200 array $providers) { 201 202 $viewer = $this->getRequest()->getUser(); 203 $id = $merchant->getID(); 204 205 $can_edit = PhabricatorPolicyFilter::hasCapability( 206 $viewer, 207 $merchant, 208 PhabricatorPolicyCapability::CAN_EDIT); 209 210 $provider_list = id(new PHUIObjectItemListView()) 211 ->setNoDataString(pht('This merchant has no payment providers.')); 212 213 foreach ($providers as $provider_config) { 214 $provider = $provider_config->buildProvider(); 215 $provider_id = $provider_config->getID(); 216 217 $item = id(new PHUIObjectItemView()) 218 ->setHeader($provider->getName()); 219 220 if ($provider->isEnabled()) { 221 if ($provider->isAcceptingLivePayments()) { 222 $item->setBarColor('green'); 223 } else { 224 $item->setBarColor('yellow'); 225 $item->addIcon('fa-exclamation-triangle', pht('Test Mode')); 226 } 227 228 $item->addAttribute($provider->getConfigureProvidesDescription()); 229 } else { 230 // Don't show disabled providers to users who can't manage the merchant 231 // account. 232 if (!$can_edit) { 233 continue; 234 } 235 $item->setDisabled(true); 236 $item->addAttribute( 237 phutil_tag('em', array(), pht('This payment provider is disabled.'))); 238 } 239 240 241 if ($can_edit) { 242 $edit_uri = $this->getApplicationURI( 243 "/provider/edit/{$provider_id}/"); 244 $disable_uri = $this->getApplicationURI( 245 "/provider/disable/{$provider_id}/"); 246 247 if ($provider->isEnabled()) { 248 $disable_icon = 'fa-times'; 249 $disable_name = pht('Disable'); 250 } else { 251 $disable_icon = 'fa-check'; 252 $disable_name = pht('Enable'); 253 } 254 255 $item->addAction( 256 id(new PHUIListItemView()) 257 ->setIcon($disable_icon) 258 ->setHref($disable_uri) 259 ->setName($disable_name) 260 ->setWorkflow(true)); 261 262 $item->addAction( 263 id(new PHUIListItemView()) 264 ->setIcon('fa-pencil') 265 ->setHref($edit_uri) 266 ->setName(pht('Edit'))); 267 } 268 269 $provider_list->addItem($item); 270 } 271 272 $add_action = id(new PHUIButtonView()) 273 ->setTag('a') 274 ->setHref($this->getApplicationURI('provider/edit/?merchantID='.$id)) 275 ->setText(pht('Add Payment Provider')) 276 ->setDisabled(!$can_edit) 277 ->setWorkflow(!$can_edit) 278 ->setIcon(id(new PHUIIconView())->setIconFont('fa-plus')); 279 280 $header = id(new PHUIHeaderView()) 281 ->setHeader(pht('Payment Providers')) 282 ->addActionLink($add_action); 283 284 return id(new PHUIObjectBoxView()) 285 ->setHeader($header) 286 ->appendChild($provider_list); 287 } 288 289 290 291 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |