| | |
| | | <?php |
| | | namespace JVBase\rest\routes; |
| | | |
| | | use JVBase\base\Site; |
| | | use JVBase\importers\JaneAppClientImporter; |
| | | use JVBase\importers\JaneAppSalesImporter; |
| | | use JVBase\managers\CustomTable; |
| | |
| | | public function __construct() |
| | | { |
| | | $this->cacheName = 'referrals'; |
| | | $this->cacheTtl = HOUR_IN_SECONDS; |
| | | $this->cacheTtl = (int)HOUR_IN_SECONDS; |
| | | parent::__construct(); |
| | | |
| | | $this->referrals = CustomTable::for('referrals'); |
| | |
| | | 'action' => 'string|required|enum:invite,consulted,treated,remove,resend' |
| | | ]) |
| | | ->auth('user') |
| | | ->rateLimit(10); |
| | | ->rateLimit(10) |
| | | ->register(); |
| | | |
| | | // Referral code endpoint |
| | | Route::for('referrals/code') |
| | |
| | | ->post([$this, 'validateCode']) |
| | | ->args(['code' => 'string|required']) |
| | | ->auth('public') |
| | | ->rateLimit(10); |
| | | ->rateLimit(10) |
| | | ->register(); |
| | | |
| | | // Stats endpoint |
| | | Route::for('referrals/stats') |
| | | ->get([$this, 'getStats']) |
| | | ->args(['user' => 'integer']) |
| | | ->auth('user') |
| | | ->rateLimit(30); |
| | | ->rateLimit(30) |
| | | ->register(); |
| | | |
| | | // Settings endpoint (admin only) |
| | | Route::for('referrals/settings') |
| | | ->get([$this, 'getSettings']) |
| | | ->post([$this, 'updateSettings']) |
| | | ->auth('admin') |
| | | ->rateLimit(10); |
| | | ->rateLimit(10) |
| | | ->register(); |
| | | |
| | | // CSV Upload endpoints (admin only) |
| | | Route::for('referrals/upload-clients') |
| | | ->post([$this, 'handleClientUpload']) |
| | | ->auth('admin') |
| | | ->rateLimit(3); |
| | | ->rateLimit(3) |
| | | ->register(); |
| | | |
| | | Route::for('referrals/upload-sales') |
| | | ->post([$this, 'handleSalesUpload']) |
| | | ->auth('admin') |
| | | ->rateLimit(3); |
| | | ->rateLimit(3) |
| | | ->register(); |
| | | } |
| | | |
| | | /** |
| | |
| | | ]; |
| | | |
| | | $response = $this->success($data); |
| | | return $this->addCacheHeaders($response, $cache_key, $data); |
| | | return $this->addCacheHeaders($response); |
| | | } |
| | | |
| | | /** |
| | |
| | | $stats = JVB()->referrals()->getUserStats($user_id); |
| | | |
| | | $response = $this->success(['items' => [$stats]]); |
| | | return $this->addCacheHeaders($response, $cache_key, $stats, 5 * MINUTE_IN_SECONDS); |
| | | return $this->addCacheHeaders($response); |
| | | } |
| | | |
| | | /** |
| | |
| | | |
| | | // Import using JaneAppClientImporter |
| | | $importer = new JaneAppClientImporter(); |
| | | $default_role = get_option(BASE . 'referral_role', JVB_USER); |
| | | $default_role = get_option(BASE . 'referral_role', Site::getDefaultReferralRole()); |
| | | |
| | | $options = [ |
| | | 'update_existing' => true, |