/**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = SageFornecedor::find();
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to return any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id]);
     $query->andFilterWhere(['like', 'nome', $this->nome])->andFilterWhere(['like', 'endereco', $this->endereco])->andFilterWhere(['like', 'contato', $this->contato]);
     return $dataProvider;
 }
 private function ConverterCSV($file)
 {
     $erros = NULL;
     $file_path = \Yii::getAlias('@upload') . $file;
     $file_handle = fopen($file_path, "r");
     $result = [];
     $out[] = [];
     if ($file_handle !== FALSE) {
         $column_headers = fgetcsv($file_handle, '', ";");
         $count_sub = 2;
         foreach ($column_headers as $setheader) {
             $setheader = $this->r_char(strtolower($setheader), TRUE);
             if (array_key_exists($setheader, $result)) {
                 $result[$setheader . '_' . $count_sub] = array();
                 $count_sub++;
             } else {
                 $result[$setheader] = array();
             }
         }
         $_cabecalho = 0;
         while (!feof($file_handle)) {
             $data = fgetcsv($file_handle, '', ";");
             if (!empty($data)) {
                 $i = 0;
                 foreach ($result as $column => $key) {
                     $out[$_cabecalho][$column] = $data[$i];
                     $i++;
                 }
             }
             $_cabecalho++;
         }
         fclose($file_handle);
     }
     if ($out != NULL) {
         if (is_array($out)) {
             foreach ($out as $outs) {
                 $produto_model = new SageProduto();
                 $subcategoria = SageSubcategoria::find()->innerJoinWith('idCategoria', true)->where(['sage_categoria.nome' => $outs['categoria_2'], 'sage_subcategoria.nome' => $outs['categoria']])->one();
                 if ($subcategoria != NULL) {
                     $produto_model->id_subcategoria1 = $subcategoria->id;
                 } else {
                     $subcategoria1_1 = new SageSubcategoria();
                     $subcategoria1_2 = new SageCategoria();
                     $subcategoria1_2->nome = $outs['categoria'];
                     if ($subcategoria1_2->save()) {
                         $subcategoria1_1->nome = $outs['categoria2'];
                         $subcategoria1_1->id_categoria = $subcategoria1_2->primaryKey;
                         if ($subcategoria1_1->save()) {
                             $produto_model->id_subcategoria1 = $subcategoria1_1->primaryKey;
                         }
                     }
                 }
                 $produto_model->unidade = $outs['unidade'];
                 $produto_model->descricao = $outs['descricao'];
                 $produto_model->identificacao = $outs['identificacao'];
                 $custo = str_replace(".", "", $outs['custo']);
                 $custo = str_replace(",", ".", $custo);
                 $produto_model->custo = $custo;
                 $preco1 = str_replace(".", "", $outs['preco_de_venda_1']);
                 $preco1 = str_replace(",", ".", $preco1);
                 $produto_model->preco_venda1 = $preco1;
                 $produto_model->observacoes = $outs['observacoes'];
                 //fornecedor
                 if ($outs['fornecedor'] == "") {
                     $produto_model->id_fornecedor = 1;
                 } else {
                     $fornecedor_model = SageFornecedor::find()->where(['nome' => $outs['fornecedor']])->one();
                     if ($fornecedor_model != NULL) {
                         $produto_model->id_fornecedor = $fornecedor_model->id;
                     } else {
                         $fornecedor_model = new SageForenecedor();
                         $fornecedor_model->nome = $outs['fornecedor'];
                         //$fornecedor_model->save(false);
                         //$id_fornecedor_model=$fornecedor_model->primaryKey;
                         if ($id_fornecedor_model) {
                             if ($fornecedor_model->save()) {
                                 $produto_model->id_fornecedor = $fornecedor_model->primaryKey;
                             }
                         }
                     }
                 }
                 $produto_model->estoque = $outs['estoque'];
                 $produto_model->codbarras = $outs['cod._barra'];
                 $preco2 = str_replace(".", "", $outs['preco_de_venda_2']);
                 $preco2 = str_replace(",", ".", $preco2);
                 $produto_model->preco_venda2 = $preco2;
                 $preco3 = str_replace(".", "", $outs['preco_de_venda_3']);
                 $preco3 = str_replace(",", ".", $preco3);
                 $produto_model->preco_venda3 = $preco3;
                 $produto_model->estoque_minimo = $outs['estoque_minimo'];
                 $produto_model->estoque_maximo = $outs['estoque_maximo'];
                 $produto_model->estoque_compra = $outs['estoque_compra'];
                 $produto_model->fator_unidade_venda = $outs['fator_unid._de_venda'];
                 $produto_model->ncm = $outs['ncm'];
                 $produto_model->marca = $outs['marca'];
                 $produto_model->peso = $outs['peso'];
                 $produto_model->tamanho = $outs['tamanho'];
                 $produto_model->inativo = $outs['inativo'];
                 $produto_model->tipo = $outs['tipo'];
                 $subcategoria2 = SageSubcategoria::find()->innerJoinWith('idCategoria', true)->where(['sage_categoria.nome' => $outs['categoria_3'], 'sage_subcategoria.nome' => $outs['categoria_4']])->one();
                 if ($subcategoria2 != NULL) {
                     $produto_model->id_subcategoria2 = $subcategoria2->id;
                 } else {
                     $subcategoria2_1 = new SageSubcategoria();
                     $subcategoria2_2 = new SageCategoria();
                     $subcategoria2_2->nome = $outs['categoria_3'];
                     if ($subcategoria2_2->save()) {
                         $subcategoria2_1->nome = $outs['categoria_4'];
                         $subcategoria2_1->id_categoria = $subcategoria2_2->primaryKey;
                         if ($subcategoria2_1->save()) {
                             $produto_model->id_subcategoria2 = $subcategoria2_1->primaryKey;
                         }
                     }
                 }
                 $produto_model->composicao = $outs['composicao'];
                 $produto_model->materia_prima = $outs['materia_prima'];
                 $produto_model->paravenda = $outs['para_venda'];
                 $produto_model->material_expediente = $outs['material_expediente'];
                 $produto_model->moeda = $outs['moeda'];
                 if ($produto_model->validate()) {
                     $produto_model->save();
                 } else {
                     $erros = $produto_model->getErrors();
                 }
             }
             //fim loop
         }
         //
     }
     return $erros;
 }