private function mockExcelInputFile()
 {
     $this->inputFile = $this->getMockbuilder('ExcelInputFile')->disableOriginalConstructor()->getMock();
     $this->inputFile->expects($this->any())->method('firstRow')->will($this->returnValue(array("Paises", "Origem", 1990, 1991, 1992)));
     $return = array(array("Brasil", 222, 2432, 453), array("Colombia", 3242, 534, 345, 234));
     $this->inputFile->expects($this->any())->method('allTheLinesButTheFirst')->will($this->returnValue($return));
     $this->inputFile->expects($this->any())->method('getYears')->will($this->returnValue(array(1990, 1991, 1992)));
 }
 /**
  * @test
  */
 public function correctFormat()
 {
     $file = __DIR__ . "/Teste.xls";
     $this->spreadsheetReader = new Spreadsheet_Excel_Reader($file);
     $this->inputFile = new ExcelInputFile($this->spreadsheetReader);
     $values = $this->inputFile->getYears();
     $this->assertEquals(4, sizeof($values));
     $values = $this->inputFile->getValuesFromACountry("Brasil");
     $this->assertTrue($this->associativeArrayEquals($this->expectedValuesFromACountry(), $values));
 }
 /**
  * @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());
 }
 public function linesWithValuesAreCorrect()
 {
     $allLines = $this->excelInputFile->allTheLinesButTheFirst();
     foreach ($allLines as $line) {
         if (!is_string($line[1])) {
             return false;
         }
         if (!$this->lineNumberPatterns($line)) {
             return false;
         }
         array_shift($line);
         if (sizeof($line) > sizeof($this->excelInputFile->getYears())) {
             return false;
         }
     }
     return true;
 }
 private function insertValuesIfACountryDoesNotHaveItStoredYet(ArrayIterator $dataValues, ExcelInputFile $excelInputFile, $country)
 {
     $yearsToInsert = new ArrayObject();
     $i = 0;
     foreach ($excelInputFile->getYears() as $year) {
         if (!$this->thisYearIsAlreadyStored($dataValues, $year)) {
             $yearsToInsert->append($year);
         }
     }
     return $yearsToInsert;
 }
 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();
     }
 }