server/src/app/Http/Controllers/Api/LexvoController.php
changeset 339 766af1228b05
parent 329 0a2c2ad49d75
child 430 46b4d1971fee
equal deleted inserted replaced
338:4a3899b6a7ed 339:766af1228b05
     5 use Illuminate\Http\Request;
     5 use Illuminate\Http\Request;
     6 use CorpusParole\Http\Requests;
     6 use CorpusParole\Http\Requests;
     7 use CorpusParole\Http\Controllers\Controller;
     7 use CorpusParole\Http\Controllers\Controller;
     8 use CorpusParole\Services\LexvoResolverInterface;
     8 use CorpusParole\Services\LexvoResolverInterface;
     9 use CorpusParole\Services\LexvoResolverException;
     9 use CorpusParole\Services\LexvoResolverException;
       
    10 
       
    11 use CorpusParole\Libraries\Filters\CorpusFilterManager;
       
    12 use CorpusParole\Libraries\Utils;
    10 
    13 
    11 class LexvoController extends Controller
    14 class LexvoController extends Controller
    12 {
    15 {
    13     public function __construct(LexvoResolverInterface $lexvoResolver) {
    16     public function __construct(LexvoResolverInterface $lexvoResolver) {
    14         $this->lexvoResolver = $lexvoResolver;
    17         $this->lexvoResolver = $lexvoResolver;
    21      * @return \Illuminate\Http\Response
    24      * @return \Illuminate\Http\Response
    22      */
    25      */
    23     public function show($id)
    26     public function show($id)
    24     {
    27     {
    25         try {
    28         try {
    26             return response()->json(['lexvoids' => $this->lexvoResolver->getNames(explode(",", $id))]);
    29             $ids = [];
       
    30             $corpusIds = [];
       
    31             foreach(explode(",", $id) as $idStr) {
       
    32                 if(Utils::startsWith($idStr, config('corpusparole.language_corpus_node_prefix'))) {
       
    33                     $corpusIds[] = $idStr;
       
    34                 } else {
       
    35                     $ids[] = $idStr;
       
    36                 }
       
    37             }
       
    38             $lexvosNames = $this->lexvoResolver->getNames($ids);
       
    39             $corpusNames = array_reduce($corpusIds, function($res,$cid) {
       
    40                 $cNode = CorpusFilterManager::getLanguageNode($cid);
       
    41                 if(is_null($cNode)) {
       
    42                     $res[$cid] = null;
       
    43                 } else {
       
    44                     $res[$cid] = $cNode['name'];
       
    45                 }
       
    46                 return $res;
       
    47             }, []);
       
    48             return response()->json(['lexvoids' => array_merge($lexvosNames, $corpusNames)]);
    27         } catch (LexvoResolverException $e) {
    49         } catch (LexvoResolverException $e) {
    28             abort(500, $e->getMessage());
    50             abort(500, $e->getMessage());
    29         }
    51         }
    30     }
    52     }
    31 
    53