/**
  * Creates a new Order model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  * @return mixed
  */
 public function actionCreate()
 {
     $modelClient = new Client();
     $modelsOrder = [new Order()];
     if ($modelClient->load(Yii::$app->request->post())) {
         $modelsOrder = Model::createMultiple(Order::classname());
         Model::loadMultiple($modelsOrder, Yii::$app->request->post());
         // validate all models
         $valid = $modelClient->validate();
         $valid = Model::validateMultiple($modelsOrder) && $valid;
         if ($valid) {
             $transaction = \Yii::$app->db->beginTransaction();
             try {
                 if ($flag = $modelClient->save(false)) {
                     foreach ($modelsOrder as $modelOrder) {
                         $modelOrder->id_client = $modelClient->id;
                         if (!($flag = $modelOrder->save(false))) {
                             $transaction->rollBack();
                             break;
                         }
                     }
                 }
                 if ($flag) {
                     $transaction->commit();
                     return $this->redirect(['view', 'id' => $modelClient->id]);
                 }
             } catch (Exception $e) {
                 $transaction->rollBack();
             }
         }
     }
     return $this->render('create', ['modelClient' => $modelClient, 'modelsOrder' => empty($modelsOrder) ? [new Order()] : $modelsOrder]);
 }
 /**
  * create new client
  * @return avoid
  */
 public function actionCreate()
 {
     $client = new Client();
     $groups = new Group();
     $groups_clients = new GroupClient();
     if ($client->load(Yii::$app->request->post()) && $client->validate()) {
         // get post variable of GroupClient
         $list_groups = Yii::$app->request->post()['Group']['id'];
         // groups is required
         if (!empty($list_groups)) {
             // save client table first
             $client->save();
             // each group will be saved with a corresponding client which be saved before
             foreach ($list_groups as $key => $group) {
                 $groups_clients = new GroupClient();
                 $groups_clients->clients_id = $client->id;
                 $groups_clients->groups_id = $group;
                 $groups_clients->save();
             }
             // everything is ok, redirect to clients list page
             $errors = $groups_clients->getErrors();
             if (empty($errors)) {
                 return $this->redirect(['/clients']);
             }
         } else {
             $groups->addError('id', 'Groups can not blank');
         }
     }
     return $this->render('create', ['client' => $client, 'groups' => $groups, 'groups_clients' => $groups_clients]);
 }
 /**
  * Update the specified resource in storage.
  *
  * @param  Request $request
  * @param  int     $id
  * @return Response
  */
 public function update(Client $table, Request $request, $id)
 {
     $table->validate($request, $table->rules());
     $table = $table->find($id);
     foreach (\Input::except('_token', '_method', 'client_logo') as $k => $v) {
         if (is_array($v)) {
             $v = json_encode($v);
         }
         $table->{$k} = $v;
     }
     $table->save();
     if ($request->hasFile('client_logo')) {
         $table->uploadFile($request->file("client_logo"), $id);
     }
     $notification[] = array('type' => 'success', 'message' => \Lang::get('notification.edit_success'));
     \Session::flash('notification', $notification);
     return redirect('client');
 }