芝麻web文件管理V1.00
编辑当前文件:/home/pulsehostuk9/public_html/invoicer.pulsehost.co.uk/app/Models/ExchangeRateProvider.php
'array', 'driver_config' => 'array', 'active' => 'boolean', ]; } public function company(): BelongsTo { return $this->belongsTo(Company::class); } public function setCurrenciesAttribute($value) { $this->attributes['currencies'] = json_encode($value); } public function setDriverConfigAttribute($value) { $this->attributes['driver_config'] = json_encode($value); } public function scopeWhereCompany($query) { $query->where('exchange_rate_providers.company_id', request()->header('company')); } public static function createFromRequest(ExchangeRateProviderRequest $request) { $exchangeRateProvider = self::create($request->getExchangeRateProviderPayload()); return $exchangeRateProvider; } public function updateFromRequest(ExchangeRateProviderRequest $request) { $this->update($request->getExchangeRateProviderPayload()); return $this; } public static function checkActiveCurrencies($request) { $query = ExchangeRateProvider::whereJsonContains('currencies', $request->currencies) ->where('active', true) ->get(); return $query; } public function checkUpdateActiveCurrencies($request) { $query = ExchangeRateProvider::where('active', $request->active) ->where('id', '<>', $this->id) ->whereJsonContains('currencies', $request->currencies) ->get(); return $query; } public static function checkExchangeRateProviderStatus($request) { switch ($request['driver']) { case 'currency_freak': $url = 'https://api.currencyfreaks.com/latest?apikey='.$request['key'].'&symbols=INR&base=USD'; $response = Http::get($url)->json(); if (array_key_exists('success', $response)) { if ($response['success'] == false) { return respondJson($response['error']['message'], $response['error']['message']); } } return response()->json([ 'exchangeRate' => array_values($response['rates']), ], 200); break; case 'currency_layer': $url = 'http://api.currencylayer.com/live?access_key='.$request['key'].'&source=INR¤cies=USD'; $response = Http::get($url)->json(); if (array_key_exists('success', $response)) { if ($response['success'] == false) { return respondJson($response['error']['info'], $response['error']['info']); } } return response()->json([ 'exchangeRate' => array_values($response['quotes']), ], 200); break; case 'open_exchange_rate': $url = 'https://openexchangerates.org/api/latest.json?app_id='.$request['key'].'&base=INR&symbols=USD'; $response = Http::get($url)->json(); if (array_key_exists('error', $response)) { return respondJson($response['message'], $response['description']); } return response()->json([ 'exchangeRate' => array_values($response['rates']), ], 200); break; case 'currency_converter': $url = self::getCurrencyConverterUrl($request['driver_config']); $url = $url.'/api/v7/convert?apiKey='.$request['key']; $query = 'INR_USD'; $url = $url."&q={$query}".'&compact=y'; $response = Http::get($url)->json(); return response()->json([ 'exchangeRate' => array_values($response[$query]), ], 200); break; } } public static function getCurrencyConverterUrl($data) { switch ($data['type']) { case 'PREMIUM': return 'https://api.currconv.com'; break; case 'PREPAID': return 'https://prepaid.currconv.com'; break; case 'FREE': return 'https://free.currconv.com'; break; case 'DEDICATED': return $data['url']; break; } } }