/**
  * @test
  */
 public function doNotInsertWhenValuesAreadyExist()
 {
     $countryMap = new CountryMap();
     $service = new DatacenterService($this->dao, $countryMap);
     $service->insertValues($this->inputFile, 1, 1, 1, 1, 1);
     $dataParam = new DataParam(1, 1, 1, 1, 1, 1);
     $this->assertEquals(2, $service->getValuesWithSimpleFilter($dataParam)->count());
     $this->emptyDatabase();
     $file = __DIR__ . "/Teste.xls";
     $this->spreadsheetReader = new Spreadsheet_Excel_Reader($file);
     $this->inputFile->setNewSpreadsheet($this->spreadsheetReader);
     $service->insertValues($this->inputFile, 1, 1, 1, 1, 1);
     $dataParam_2 = new DataParam(1, 1, 1, 1, 1, 1);
     $this->assertEquals(4, $service->getValuesWithSimpleFilter($dataParam_2)->count());
 }
 /**
  * @test
  */
 public function serviceInsertionTest()
 {
     $excelInputFile = $this->mockExcelInputFile();
     $data = new ArrayObject();
     $this->repository->expects($this->any())->method("save")->will($this->returnValue(true));
     $list = new ArrayObject();
     $list->append($this->buildData(1990, 222));
     $list->append($this->buildData(1991, 2432));
     $list->append($this->buildData(1992, 453));
     //$list->append($this->buildData(1993, 234));
     $this->repository->expects($this->any())->method('getValuesWithSimpleFilter')->will($this->returnValue($list->getIterator()));
     $this->service = new DatacenterService($this->repository, new CountryMap());
     $subgroup = $destiny = $type = $variety = $font = 1;
     $this->assertTrue($this->service->insertValues($excelInputFile, $subgroup, $destiny, $type, $variety, $font));
 }
 public function saveValues(ExcelInputFile $excelInputFile, $subgroup, $font, $origin, $destiny, $coffeType, $variety, $typeCountry = null, $internationalTrade = false)
 {
     if (SessionAdmin::isLogged()) {
         CacheCountry::setCacheBehavior(SessionAdmin::getCacheBehavior());
         try {
             if (!is_null($typeCountry)) {
                 $countries = $excelInputFile->getValuesOfColumn(1);
                 $wrongSelected = $this->countriesSelectedAreCorrect($typeCountry, $countries);
                 if (sizeof($wrongSelected) > 0) {
                     $nameOfWrongCountries = $this->countriesAsString($wrongSelected);
                     $message = "- Os seguintes países presentes na planilha (" . utf8_encode($nameOfWrongCountries) . ") não correspondem ao grupo que você selecionou.";
                     $message .= "\n\n";
                     $message .= "\t- Confirme se os países existem na lista (origem ou destino) que você selecionou;";
                     $message .= "\n\n";
                     $message .= "\t- Verifique se falta acentuação no nome do país da planinha selecionada.";
                     $message .= "\n\n";
                     $message .= "\t- Também certifique-se de que os nomes dos países estejam em português e sem abreviações";
                     throw new WrongFormatException($message);
                 }
             }
             if ($this->datacenterService->insertValues($excelInputFile, $subgroup, $origin, $destiny, $coffeType, $variety, $font, $typeCountry, $internationalTrade)) {
                 return $this->jsonResponse->response(true, "Dados inseridos com sucesso!")->serialize();
             } else {
                 $message = "Dados não inseridos. Verifique a possibilidade de já existirem dados referentes a esta planilha";
                 return $this->jsonResponse->response(true, $message)->serialize();
             }
         } catch (Exception $e) {
             return $this->jsonResponse->response(false, $e->getMessage())->serialize();
         }
     } else {
         throw new LoginException();
     }
 }