File indexing completed on 2024-12-22 05:33:27
0001 <?php 0002 0003 /** 0004 * ocs-webserver 0005 * 0006 * Copyright 2016 by pling GmbH. 0007 * 0008 * This file is part of ocs-webserver. 0009 * 0010 * This program is free software: you can redistribute it and/or modify 0011 * it under the terms of the GNU Affero General Public License as 0012 * published by the Free Software Foundation, either version 3 of the 0013 * License, or (at your option) any later version. 0014 * 0015 * This program is distributed in the hope that it will be useful, 0016 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0018 * GNU Affero General Public License for more details. 0019 * 0020 * You should have received a copy of the GNU Affero General Public License 0021 * along with this program. If not, see <http://www.gnu.org/licenses/>. 0022 **/ 0023 class Backend_MemberpayoutController extends Local_Controller_Action_Backend 0024 { 0025 0026 const RESULT_OK = "OK"; 0027 const RESULT_ERROR = "ERROR"; 0028 const DATA_ID_NAME = 'id'; 0029 0030 /** @var Default_Model_Member */ 0031 protected $_model; 0032 0033 protected $_modelName = 'Default_Model_DbTable_MemberPayout'; 0034 protected $_pageTitle = 'Manage Payouts'; 0035 0036 public function init() 0037 { 0038 $this->_model = new $this->_modelName(); 0039 0040 $this->view->pageTitle = $this->_pageTitle; 0041 0042 parent::init(); 0043 } 0044 0045 public function indexAction() 0046 { 0047 0048 } 0049 0050 public function createAction() 0051 { 0052 $jTableResult = array(); 0053 try { 0054 $newRow = $this->_model->createRow($this->getAllParams()); 0055 $result = $newRow->save(); 0056 0057 $jTableResult['Result'] = self::RESULT_OK; 0058 $jTableResult['Record'] = $newRow->toArray(); 0059 } catch (Exception $e) { 0060 Zend_Registry::get('logger')->err(__METHOD__ . ' - ' . print_r($e, true)); 0061 $translate = Zend_Registry::get('Zend_Translate'); 0062 $jTableResult['Result'] = self::RESULT_ERROR; 0063 $jTableResult['Message'] = $translate->_('Error while processing data.'); 0064 } 0065 0066 $this->_helper->json($jTableResult); 0067 } 0068 0069 public function updateAction() 0070 { 0071 $jTableResult = array(); 0072 try { 0073 $values = $this->getAllParams(); 0074 0075 foreach ($values as $key => $value) { 0076 if ($value == '') { 0077 $values[$key] = new Zend_Db_Expr('NULL'); 0078 } 0079 } 0080 0081 $record = $this->_model->save($values); 0082 $resultArray = $record->toArray(); 0083 $resultArray['color'] = '#ffffff'; 0084 0085 $jTableResult = array(); 0086 $jTableResult['Result'] = self::RESULT_OK; 0087 $jTableResult['Record'] = $resultArray; 0088 } catch (Exception $e) { 0089 Zend_Registry::get('logger')->err(__METHOD__ . ' - ' . print_r($e, true)); 0090 $translate = Zend_Registry::get('Zend_Translate'); 0091 $jTableResult['Result'] = self::RESULT_ERROR; 0092 $jTableResult['Message'] = $translate->_('Error while processing data.'); 0093 } 0094 0095 $this->_helper->json($jTableResult); 0096 } 0097 0098 public function deleteAction() 0099 { 0100 $dataId = (int)$this->getParam(self::DATA_ID_NAME, null); 0101 0102 $this->_model->setDeleted($dataId); 0103 0104 $identity = Zend_Auth::getInstance()->getIdentity(); 0105 Default_Model_ActivityLog::logActivity($dataId, null, $identity->member_id, Default_Model_ActivityLog::BACKEND_USER_DELETE, 0106 null); 0107 0108 $jTableResult = array(); 0109 $jTableResult['Result'] = self::RESULT_OK; 0110 0111 $this->_helper->json($jTableResult); 0112 } 0113 0114 public function listAction() 0115 { 0116 $startIndex = (int)$this->getParam('jtStartIndex'); 0117 $pageSize = (int)$this->getParam('jtPageSize'); 0118 $sorting = $this->getParam('jtSorting'); 0119 $filter['yearmonth'] = $this->getParam('filter_yearmonth'); 0120 if (!$this->getParam('filter_yearmonth')) { 0121 $filter['yearmonth'] = date("Ym", strtotime("first day of previous month")); 0122 } 0123 $filter['status'] = $this->getParam('filter_status'); 0124 $filter['member_id'] = $this->getParam('filter_member_id'); 0125 $filter['paypal_mail'] = $this->getParam('filter_paypal_mail'); 0126 $filter['mail'] = $this->getParam('filter_mail'); 0127 0128 0129 $sql = " 0130 select member_payout.*, payout_status.color 0131 from member_payout 0132 join payout_status on payout_status.id = member_payout.`status` 0133 0134 "; 0135 0136 0137 $select = $this->_model->select()->order($sorting)->limit($pageSize, $startIndex); 0138 0139 $where = " WHERE 1=1 "; 0140 0141 /* 0142 $select->join('payout_status', 0143 'member_payout.status = payout_status.id', 0144 array('color') 0145 );*/ 0146 // foreach ($filter as $key => $value) { 0147 // if (false === empty($value)) { 0148 // $select->where("{$key} like ?", $value); 0149 // } 0150 // } 0151 0152 $metadata = $this->_model->info(Zend_Db_Table_Abstract::METADATA); 0153 0154 foreach ($filter as $key => $value) { 0155 if (is_array($value)) { 0156 $list = ''; 0157 foreach ($value as $element) { 0158 if (isset($element)) { 0159 $list = $list . ',' . $element; 0160 } 0161 } 0162 0163 if (empty($list)) { 0164 continue; 0165 } 0166 0167 $list = substr($list, 1); 0168 0169 $select->where("{$key} in ({$list})"); 0170 0171 $where .= " AND {$key} in ({$list})"; 0172 0173 continue; 0174 } 0175 if (false === empty($value)) { 0176 $data_type = $metadata[$key]['DATA_TYPE']; 0177 if (($data_type == 'varchar') OR ($data_type == 'text')) { 0178 $likeText = "'%".$value."%'"; 0179 $select->where("{$key} like ?", $likeText); 0180 $where .= " AND {$key} like ".$likeText; 0181 } else { 0182 $select->where("{$key} = ?", $value); 0183 $where .= " AND {$key} = " . $value; 0184 } 0185 } 0186 } 0187 $sql .= $where; 0188 $sql .= " ORDER BY ". $sorting; 0189 $sql .= " LIMIT ".$startIndex.",".$pageSize; 0190 0191 $reports = $this->_model->fetchAll($select); 0192 $reportsReturn = $this->_model->getAdapter()->fetchAll($sql); 0193 0194 $reportsAll = $this->_model->fetchAll($select->limit(null, null)->reset('columns') 0195 ->columns(array('countAll' => new Zend_Db_Expr('count(*)')))); 0196 0197 $jTableResult = array(); 0198 $jTableResult['Result'] = self::RESULT_OK; 0199 $jTableResult['Records'] = $reportsReturn; 0200 $jTableResult['TotalRecordCount'] = $reportsAll->current()->countAll; 0201 0202 $this->_helper->json($jTableResult); 0203 } 0204 0205 public function exportAction() 0206 { 0207 $startIndex = (int)$this->getParam('jtStartIndex'); 0208 $pageSize = (int)$this->getParam('jtPageSize'); 0209 $sorting = $this->getParam('jtSorting'); 0210 $filter['yearmonth'] = $this->getParam('filter_yearmonth'); 0211 if (!$this->getParam('filter_yearmonth')) { 0212 $filter['yearmonth'] = date("Ym", strtotime("first day of previous month")); 0213 } 0214 $filter['status'] = $this->getParam('filter_status'); 0215 $filter['member_id'] = $this->getParam('filter_member_id'); 0216 $filter['paypal_mail'] = $this->getParam('filter_paypal_mail'); 0217 $filter['mail'] = $this->getParam('filter_mail'); 0218 $fields = $this->getParam('field_list'); 0219 0220 $select = $this->_model->select(); 0221 0222 $select->from('member_payout', 0223 array('member_id as MemberId', 'paypal_mail as PayPalMail', 'amount as Amount', 'status as Status'))->order($sorting) 0224 ->limit($pageSize, $startIndex) 0225 ; 0226 /* 0227 $select->join('payout_status', 0228 'member_payout.status = payout_status.id', 0229 array('color') 0230 );*/ 0231 // foreach ($filter as $key => $value) { 0232 // if (false === empty($value)) { 0233 // $select->where("{$key} like ?", $value); 0234 // } 0235 // } 0236 0237 $metadata = $this->_model->info(Zend_Db_Table_Abstract::METADATA); 0238 0239 foreach ($filter as $key => $value) { 0240 if (is_array($value)) { 0241 $list = ''; 0242 foreach ($value as $element) { 0243 if (isset($element)) { 0244 $list = $list . ',' . $element; 0245 } 0246 } 0247 0248 if (empty($list)) { 0249 continue; 0250 } 0251 0252 $list = substr($list, 1); 0253 0254 $select->where("{$key} in ({$list})"); 0255 0256 continue; 0257 } 0258 if (false === empty($value)) { 0259 $data_type = $metadata[$key]['DATA_TYPE']; 0260 if (($data_type == 'varchar') OR ($data_type == 'text')) { 0261 $select->where("{$key} like ?", '%' . $value . '%'); 0262 } else { 0263 $select->where("{$key} = ?", $value); 0264 } 0265 } 0266 } 0267 0268 $reports = $this->_model->fetchAll($select); 0269 0270 $reportsAll = $this->_model->fetchAll($select->limit(null, null)->reset('columns') 0271 ->columns(array('countAll' => new Zend_Db_Expr('count(*)')))); 0272 0273 $jTableResult = array(); 0274 $jTableResult['Result'] = self::RESULT_OK; 0275 $jTableResult['Records'] = $reports->toArray(); 0276 $jTableResult['TotalRecordCount'] = $reportsAll->current()->countAll; 0277 0278 $filename = "Payout_" . $filter['yearmonth'] . ".xls"; 0279 header("Content-Type: application/vnd.ms-excel"); 0280 header("Content-Disposition: attachment; filename=\"$filename\""); 0281 $this->exportFile($reports->toArray()); 0282 //$this->_helper->json($jTableResult); 0283 } 0284 0285 function exportFile($records) 0286 { 0287 $heading = false; 0288 if (!empty($records)) { 0289 foreach ($records as $row) { 0290 if (!$heading) { 0291 // display field/column names as a first row 0292 echo implode("\t", array_keys($row)) . "\n"; 0293 $heading = true; 0294 } 0295 echo implode("\t", array_values($row)) . "\n"; 0296 } 0297 } 0298 exit; 0299 } 0300 0301 public function memberinfoAction() 0302 { 0303 $jTableResult = array(); 0304 try { 0305 $memberId = (int)$this->getParam('member_id'); 0306 0307 $modelMember = new Default_Model_Member(); 0308 $record = $modelMember->find($memberId)->current(); 0309 $this->view->member = $record; 0310 $view = $this->view->render('user/member.phtml'); 0311 0312 $jTableResult = array(); 0313 $jTableResult['Result'] = self::RESULT_OK; 0314 $jTableResult['Record'] = $record->toArray(); 0315 $jTableResult['ViewRecord'] = $view; 0316 } catch (Exception $e) { 0317 Zend_Registry::get('logger')->err(__METHOD__ . ' - ' . print_r($e, true)); 0318 $translate = Zend_Registry::get('Zend_Translate'); 0319 $jTableResult['Result'] = self::RESULT_ERROR; 0320 $jTableResult['Message'] = $translate->_('Error while processing data.'); 0321 } 0322 0323 $this->_helper->json($jTableResult); 0324 } 0325 0326 }