Browse Source

implemented sql to gsheet

= 3 năm trước cách đây
mục cha
commit
63d27d96e0

+ 0 - 1
app/Console/Commands/clientsToGsheet.php

@@ -4,7 +4,6 @@ namespace App\Console\Commands;
 
 use App\Models\BDTDevice;
 use App\Models\Client;
-use App\Models\SimpleProduct;
 use Google\Service\Sheets\ValueRange;
 use Google_Client;
 use Illuminate\Console\Command;

+ 99 - 0
app/Http/Controllers/GsheetController.php

@@ -0,0 +1,99 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Exception;
+use Google\Service\Sheets\ValueRange;
+use Google_Client;
+use Illuminate\Console\Command;
+use Revolution\Google\Sheets\Facades\Sheets;
+use Revolution\Google\Sheets\Sheets as SheetsSheets;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+
+class GsheetController extends Controller
+{
+    
+
+    public function testGsheet(){
+        $sql = 'SELECT uid, name_first, name_last FROM client';
+        $sqlParams = [];
+
+        $values = $this->getValues($sql, $sqlParams);
+
+        $spreadsheetId = '1jRCkukeSfZufY8gpKSGYgv9cgeDbA1ZYP4pKJhyPP_o';
+        $sheetName = 'Sheet1';
+        return $this->exportToGsheet($sql, $sqlParams, $spreadsheetId, $sheetName);
+
+    }
+
+
+    private function exportToGsheet($sql, $sqlParams, $spreadsheetId, $sheetName){
+       
+        $client = $this->getApiClient();
+        $service = new \Google\Service\Sheets($client);
+
+        
+        $values = $this->getValues($sql, $sqlParams);
+
+        $range = $sheetName.'!A1:V1';
+        $body = new ValueRange([
+            'values' => $values
+        ]);
+        $params = [
+           'valueInputOption' => 'RAW'
+        ];
+
+        $result = $service->spreadsheets_values->append($spreadsheetId, $range, $body, $params);
+
+        return $result;
+    }
+
+
+    function getApiClient(){
+      
+        $KEY_FILE_LOCATION = storage_path('stag-gsheets-d9ead2f78b4b.json');
+
+        $client = new Google_Client();
+        $client->setApplicationName("My Rooster Admin");
+        $client->setAuthConfig($KEY_FILE_LOCATION);
+        
+        $client->setScopes([\Google\Service\Sheets::DRIVE, \Google\Service\Sheets::SPREADSHEETS]);
+
+        return $client;
+
+    }
+
+
+    private function getValues($sql, $sqlParams){
+
+        $values = [];
+
+        $raws = DB::select($sql, $sqlParams);
+
+        if(!count($raws)){
+            throw new \Exception("No data");
+        }
+
+        $firstRaw = $raws[0];
+
+        $headers = [];
+        foreach($firstRaw as $k => $val) {
+            $headers[] = $k;
+        }
+        $values[] = $headers;
+
+        
+        foreach($raws as $raw){
+            $rawStr = '';
+            foreach($headers as $header ){
+                $rawStr = $rawStr.$raw->$header.'~~';
+            }
+            $values[] = explode('~~', $rawStr);
+        }
+        
+       
+        return $values;
+    }
+
+}

+ 4 - 0
routes/web.php

@@ -200,6 +200,8 @@ Route::middleware('pro.auth')->group(function () {
         });
     });
 
+    //Route::get('test-gsheet', 'GsheetController@testGsheet');
+
     Route::name('admin.')->prefix('a')->middleware('pro.auth.admin')->group(function () {
         // TODO
 
@@ -217,6 +219,8 @@ Route::middleware('pro.auth')->group(function () {
         Route::get('reports', 'AdminController@reports')->name('reports');
         Route::get('supply-orders', 'AdminController@supply_orders')->name('supply_orders');
         Route::get('get-create-new-patient-script-template', 'AdminController@getCreateNewPatientScriptTemplate')->name('getCreateNewPatientScriptTemplate');
+    
+       
     });
 
     Route::name('practice-management.')->prefix('practice-management')->group(function () {