visuddhinanda пре 2 година
родитељ
комит
092ed70d4a
1 измењених фајлова са 138 додато и 0 уклоњено
  1. 138 0
      app/Console/Commands/UpgradeQuote.php

+ 138 - 0
app/Console/Commands/UpgradeQuote.php

@@ -0,0 +1,138 @@
+<?php
+
+namespace App\Console\Commands;
+
+use Illuminate\Console\Command;
+use App\Models\PaliSentence;
+use App\Models\WbwTemplate;
+use App\Models\Sentence;
+use App\Http\Api\ChannelApi;
+use Illuminate\Support\Str;
+
+class UpgradeQuote extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'upgrade:quote {book?}';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = 'Command description';
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return int
+     */
+    public function handle()
+    {
+        $start = time();
+        $channelId = ChannelApi::getSysChannel('_System_Quote_');
+        if($channelId===false){
+            $this->error('no channel');
+            return 1;
+        }
+
+
+        for ($i=1; $i <= 217; $i++) {
+            if(!empty($this->argument('book'))){
+                if($i != $this->argument('book')){
+                    continue;
+                }
+            }
+            $pts_book=0;
+            $pts_page=0;
+            $myanmar_book=0;
+            $myanmar_page=0;
+            $cs_para=0;
+
+            $pali = PaliSentence::where('book',$i);
+            $bar = $this->output->createProgressBar(PaliSentence::where('book',$i)->count());
+            $pali = $pali->select('book','paragraph','word_begin','word_end')->cursor();
+            foreach ($pali as $value) {
+                # code...
+                $wbwContent=[];
+                $words = WbwTemplate::where("book",$value->book)
+                                    ->where("paragraph",$value->paragraph)
+                                    ->where("wid",">=",$value->word_begin)
+                                    ->where("wid","<=",$value->word_end)
+                                    ->orderBy('wid','asc')
+                                    ->get();
+                $sent = '';
+                foreach ($words as $wbw_word) {
+                    # code...
+                    if($wbw_word->type === '.ctl.'){
+                        if(substr($wbw_word->word,0,1) === 'M'){
+                            $m = explode('.',substr($wbw_word->word,1));
+                            $myanmar_book=(int)$m[0];
+                            $myanmar_page=(int)$m[1];
+                        }
+                        if(substr($wbw_word->word,0,1) === 'P'){
+                            $m = explode('.',substr($wbw_word->word,1));
+                            $pts_book=(int)$m[0];
+                            $pts_page=(int)$m[1];
+                        }
+                    }
+                    if($wbw_word->style === 'paranum'){
+                        $cs_para=(int)$wbw_word->word;
+                    }
+                }
+                $wbwContent = [
+                    'pts_book'=>$pts_book,
+                    'pts_page'=>$pts_page,
+                    'myanmar_book'=> $myanmar_book,
+                    'myanmar_page'=> $myanmar_page,
+                    'cs_para'=> $cs_para,
+                ];
+                $sent = \json_encode($wbwContent,JSON_UNESCAPED_UNICODE);
+
+                $newRow = Sentence::firstOrNew(
+                    [
+                        "book_id" => $value->book,
+                        "paragraph" => $value->paragraph,
+                        "word_start" => $value->word_begin,
+                        "word_end" => $value->word_end,
+                        "channel_uid" => $channelId,
+                    ],
+                    [
+                        'id' =>app('snowflake')->id(),
+                        'uid' =>Str::uuid(),
+                    ]
+                    );
+                $newRow->editor_uid = config("app.admin.root_uuid");
+                $newRow->content = trim($sent);
+                $newRow->content_type = "json";
+                $newRow->strlen = mb_strlen($sent,"UTF-8");
+                $newRow->status = 10;
+                $newRow->create_time = time()*1000;
+                $newRow->modify_time = time()*1000;
+                $newRow->language = 'en';
+                $newRow->save();
+
+                $bar->advance();
+            }
+            $bar->finish();
+        }
+
+
+
+		$this->info("finished ".(time()-$start)."s");
+        return 0;
+    }
+}