Пример #1
0
 /**
  * Update the specified resource in storage.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
 public function update(Request $request, $id)
 {
     $family = Family::find($id);
     $family->alias = \Request::input('title');
     $family->description = \Request::input('description');
     $family->save();
     return redirect()->back();
 }
Пример #2
0
 public function index($cat = null, $id = null)
 {
     if (!$cat) {
         $resource = \App\Models\Kingdom::select('kingdom.kingdom_name as name', 'kingdom.kingdom_id as id', DB::raw('count(barcode.barcode_id) as count'), DB::raw("CONCAT('/dnabarcode/kingdom/', kingdom.kingdom_id) AS url"));
         $resourceData = $resource->join('phylum', 'kingdom.kingdom_id', '=', 'phylum.kingdom_id', 'left outer')->join('class', 'phylum.phylum_id', '=', 'class.phylum_id', 'left outer')->join('order', 'class.class_id', '=', 'order.class_id', 'left outer')->join('family', 'order.order_id', '=', 'family.order_id', 'left outer')->join('genus', 'family.family_id', '=', 'genus.family_id', 'left outer')->join('species', 'genus.genus_id', '=', 'species.genus_id', 'left outer')->join('barcode', 'barcode.species', '=', 'species.species_id', 'left outer')->groupBy('kingdom.kingdom_id', 'kingdom.kingdom_name')->paginate(20);
     } else {
         switch ($cat) {
             case 'kingdom':
                 $resource = \App\Models\Kingdom::find($id);
                 $resourceData = $resource->phylums()->select('phylum.phylum_name as name', 'phylum.phylum_id as id', DB::raw('count(barcode.barcode_id) as count'), DB::raw("CONCAT('/dnabarcode/phylum/', phylum.phylum_id) AS url"))->join('class', 'phylum.phylum_id', '=', 'class.phylum_id', 'left outer')->join('order', 'class.class_id', '=', 'order.class_id', 'left outer')->join('family', 'order.order_id', '=', 'family.order_id', 'left outer')->join('genus', 'family.family_id', '=', 'genus.family_id', 'left outer')->join('species', 'genus.genus_id', '=', 'species.genus_id', 'left outer')->join('barcode', 'barcode.species', '=', 'species.species_id', 'left outer')->groupBy('phylum.phylum_id', 'phylum.phylum_name')->paginate(20);
                 array_unshift($this->breadcrumbs, array('name' => $resource->kingdom_name));
                 break;
             case 'phylum':
                 $resource = \App\Models\Phylum::find($id);
                 $resourceData = $resource->classes()->select('class.class_name as name', 'class.class_id as id', DB::raw('count(barcode.barcode_id) as count'), DB::raw("CONCAT('/dnabarcode/class/', class.class_id) AS url"))->join('order', 'class.class_id', '=', 'order.class_id', 'left outer')->join('family', 'order.order_id', '=', 'family.order_id', 'left outer')->join('genus', 'family.family_id', '=', 'genus.family_id', 'left outer')->join('species', 'genus.genus_id', '=', 'species.genus_id', 'left outer')->join('barcode', 'barcode.species', '=', 'species.species_id', 'left outer')->groupBy('class.class_id', 'class.class_name')->paginate(20);
                 array_unshift($this->breadcrumbs, array('name' => $resource->phylum_name));
                 array_unshift($this->breadcrumbs, array('name' => $resource->kingdom->kingdom_name, 'url' => '/dnabarcode/kingdom/' . $resource->kingdom->kingdom_id));
                 break;
             case 'class':
                 $resource = \App\Models\Classes::find($id);
                 $resourceData = $resource->orders()->select('order.order_name as name', 'order.order_id as id', DB::raw('count(barcode.barcode_id) as count'), DB::raw("CONCAT('/dnabarcode/order/', order.order_id) AS url"))->join('family', 'order.order_id', '=', 'family.order_id', 'left outer')->join('genus', 'family.family_id', '=', 'genus.family_id', 'left outer')->join('species', 'genus.genus_id', '=', 'species.genus_id', 'left outer')->join('barcode', 'barcode.species', '=', 'species.species_id', 'left outer')->groupBy('order.order_id', 'order.order_name')->paginate(20);
                 array_unshift($this->breadcrumbs, array('name' => $resource->class_name));
                 array_unshift($this->breadcrumbs, array('name' => $resource->phylum->phylum_name, 'url' => '/dnabarcode/phylum/' . $resource->phylum->phylum_id));
                 array_unshift($this->breadcrumbs, array('name' => $resource->phylum->kingdom->kingdom_name, 'url' => '/dnabarcode/kingdom/' . $resource->phylum->kingdom->kingdom_id));
                 break;
             case 'order':
                 $resource = \App\Models\Order::find($id);
                 $resourceData = $resource->families()->select('family.family_name as name', 'family.family_id as id', DB::raw('count(barcode.barcode_id) as count'), DB::raw("CONCAT('/dnabarcode/family/', family.family_id) AS url"))->join('genus', 'family.family_id', '=', 'genus.family_id', 'left outer')->join('species', 'genus.genus_id', '=', 'species.genus_id', 'left outer')->join('barcode', 'barcode.species', '=', 'species.species_id', 'left outer')->groupBy('family.family_id', 'family.family_name')->paginate(20);
                 array_unshift($this->breadcrumbs, array('name' => $resource->order_name));
                 array_unshift($this->breadcrumbs, array('name' => $resource->classes->class_name, 'url' => '/dnabarcode/class/' . $resource->classes->class_id));
                 array_unshift($this->breadcrumbs, array('name' => $resource->classes->phylum->phylum_name, 'url' => '/dnabarcode/phylum/' . $resource->classes->phylum->phylum_id));
                 array_unshift($this->breadcrumbs, array('name' => $resource->classes->phylum->kingdom->kingdom_name, 'url' => '/dnabarcode/kingdom/' . $resource->classes->phylum->kingdom->kingdom_id));
                 break;
             case 'family':
                 $resource = \App\Models\Family::find($id);
                 $resourceData = $resource->genus()->select('genus.genus_name as name', 'genus.genus_id as id', DB::raw('count(barcode.barcode_id) as count'), DB::raw("CONCAT('/dnabarcode/genus/', genus.genus_id) AS url"))->join('species', 'genus.genus_id', '=', 'species.genus_id', 'left outer')->groupBy('genus.genus_id', 'genus.genus_name')->join('barcode', 'barcode.species', '=', 'species.species_id', 'left outer')->paginate(20);
                 array_unshift($this->breadcrumbs, array('name' => $resource->family_name));
                 array_unshift($this->breadcrumbs, array('name' => $resource->order->order_name, 'url' => '/dnabarcode/order/' . $resource->order->order_id));
                 array_unshift($this->breadcrumbs, array('name' => $resource->order->classes->class_name, 'url' => '/dnabarcode/class/' . $resource->order->classes->class_id));
                 array_unshift($this->breadcrumbs, array('name' => $resource->order->classes->phylum->phylum_name, 'url' => '/dnabarcode/phylum/' . $resource->order->classes->phylum->phylum_id));
                 array_unshift($this->breadcrumbs, array('name' => $resource->order->classes->phylum->kingdom->kingdom_name, 'url' => '/dnabarcode/kingdom/' . $resource->order->classes->phylum->kingdom->kingdom_id));
                 break;
             case 'genus':
                 $resource = \App\Models\Genus::find($id);
                 $resourceData = $resource->species()->select('species.species_name as name', DB::raw("CONCAT('/viewbarcode?id=' , barcode_id) AS url"))->join('barcode', 'barcode.species', '=', 'species.species_id')->where('barcode.status', 1)->paginate(20);
                 array_unshift($this->breadcrumbs, array('name' => $resource->genus_name));
                 array_unshift($this->breadcrumbs, array('name' => $resource->family->family_name, 'url' => '/dnabarcode/family/' . $resource->family->order_id));
                 array_unshift($this->breadcrumbs, array('name' => $resource->family->order->order_name, 'url' => '/dnabarcode/order/' . $resource->family->order->order_id));
                 array_unshift($this->breadcrumbs, array('name' => $resource->family->order->classes->class_name, 'url' => '/dnabarcode/class/' . $resource->family->order->classes->class_id));
                 array_unshift($this->breadcrumbs, array('name' => $resource->family->order->classes->phylum->phylum_name, 'url' => '/dnabarcode/phylum/' . $resource->family->order->classes->phylum->phylum_id));
                 array_unshift($this->breadcrumbs, array('name' => $resource->family->order->classes->phylum->kingdom->kingdom_name, 'url' => '/dnabarcode/kingdom/' . $resource->family->order->classes->phylum->kingdom->kingdom_id));
                 break;
         }
     }
     array_unshift($this->breadcrumbs, array('name' => 'DNA Barcode', 'url' => '/dnabarcode'));
     $viewData = array('resource' => $resourceData, 'breadcrumbs' => $this->breadcrumbs, 'cat' => $cat);
     return view('list')->with($viewData);
 }
Пример #3
0
 public static function joinMemberToFamilyAndSave($model, $user_id, $family_id)
 {
     if (!$user_id || !$family_id) {
         return 'Não foi fornecido um parametro necessário.';
     }
     $user = \app\models\User::findIdentity($user_id);
     if (!$user) {
         return 'O utilizador ainda não tem registo no memoboard.';
     }
     //O utilizador não pode pertencer a nenhuma familia ou ser membro
     if ($user->family_id) {
         return 'Este utilizador já pertence a uma família.';
     }
     $family = \app\models\Family::find()->where(['id' => $family_id])->one();
     if (!$family) {
         return 'A familia não exste.';
     }
     if (!$family->accepts_members) {
         return 'A familia ' . $family->name . ' não está a aceitar novos membros.';
     }
     //Se já existir um user não pode associar outros
     if ($model->user_id) {
         return 'Não pode alterar membros da família por outros.';
     }
     //Cria membro
     $model->user_type = \app\enum\UserType::Utilizador_registado;
     $model->family_id = $family->id;
     $model->user_id = $user->id;
     if (!$model->validate()) {
         return 'Dados não válidos:<br>' . implode('<br>', $model->errors);
     }
     $transaction = Yii::$app->db->beginTransaction();
     if (!$model->save()) {
         $transaction->rollBack();
         return 'Não foi possível salvar os dados.';
     }
     //Cria um calendário para oo membro se não existir
     $my_cal = \app\models\Calendar::findOne(['member_id' => $model->id]);
     if (!$my_cal) {
         $my_cal = new \app\models\Calendar();
         $my_cal->member_id = $model->id;
         $my_cal->name = $model->name;
         if (!$my_cal->save()) {
             $transaction->rollBack();
             return 'Não foi possível salvar o calendário.';
         }
     }
     //Coloca valores no utilizador
     $user->family_id = $family->id;
     $user->family_member_id = $model->id;
     $user->calendar_id = $my_cal->id;
     if (!$user->save(['family_id', 'family_member_id', 'calendar_id'])) {
         $transaction->rollBack();
         return 'Não foi possível atualizar o utilizador.';
     }
     $transaction->commit();
     //Coloca nas prefeencias do utilizador o calendário
     //para mostrar imediatamente
     $user->setPreference('tasks_selected', $model->id);
     $user->setPreference('calendars_selected', $model->id);
     return true;
 }