diff --git a/core/legacy/Statistics/SubPanelContractsRenewalDate.php b/core/legacy/Statistics/SubPanelContractsRenewalDate.php new file mode 100644 index 000000000..b65f37fc5 --- /dev/null +++ b/core/legacy/Statistics/SubPanelContractsRenewalDate.php @@ -0,0 +1,73 @@ +extractContext($query); + if (empty($module) || empty($id)) { + return $this->getEmptyResponse(self::KEY); + } + + $subpanelName = $query['params']['subpanel'] ?? ''; + if (!empty($subpanelName)) { + $subpanel = $subpanelName; + } + + $this->init(); + $this->startLegacyApp(); + $dateNow = date("Y-m-d"); + $contractsWhere = " aos_contracts.`end_date` >= '$dateNow' "; + + $queries = $this->getQueries($module, $id, $subpanel); + $parts = $queries[0]; + $parts['select'] = 'SELECT aos_contracts.`end_date`'; + if (!empty($parts['where'])) { + $contractsWhere = " AND " . $contractsWhere; + } + $parts['where'] .= $contractsWhere; + $parts['order_by'] .= 'ORDER BY aos_contracts.`end_date` ASC LIMIT 1'; + $dbQuery = $this->joinQueryParts($parts); + $result = $this->fetchRow($dbQuery); + + if (empty($result)) { + $statistic = $this->getEmptyResponse(self::KEY); + $this->close(); + + return $statistic; + } + + $statistic = $this->buildSingleValueResponse(self::KEY, 'date', ['value' => $result['end_date']]); + + $this->close(); + + return $statistic; + } +} diff --git a/core/legacy/Statistics/SubpanelContractsRenewalDate.php b/core/legacy/Statistics/SubpanelContractsRenewalDate.php deleted file mode 100644 index 02290a0a9..000000000 --- a/core/legacy/Statistics/SubpanelContractsRenewalDate.php +++ /dev/null @@ -1,40 +0,0 @@ -setId(self::KEY); - $statistic->setData([ - 'type' => 'date', - 'value' => '2021-02-15' - ]); - - $statistic->setMetadata([ - 'type' => 'single-value-statistic', - 'dataType' => 'date', - ]); - - return $statistic; - } -} diff --git a/tests/_mock/Mock/core/legacy/Statistics/SubPanelContractsRenewalDateMock.php b/tests/_mock/Mock/core/legacy/Statistics/SubPanelContractsRenewalDateMock.php new file mode 100644 index 000000000..fc8132a6e --- /dev/null +++ b/tests/_mock/Mock/core/legacy/Statistics/SubPanelContractsRenewalDateMock.php @@ -0,0 +1,42 @@ + '', + 'where' => '', + 'order_by' => '', + ], + + ]; + } + + /** + * @inheritDoc + */ + public function fetchRow(string $query): array + { + return $this->getMockQueryResults(); + } + + protected function startLegacyApp(): void + { + } +} diff --git a/tests/unit/core/legacy/Statistics/SubPanelContractsRenewalDateTest.php b/tests/unit/core/legacy/Statistics/SubPanelContractsRenewalDateTest.php new file mode 100644 index 000000000..5fc5c8f68 --- /dev/null +++ b/tests/unit/core/legacy/Statistics/SubPanelContractsRenewalDateTest.php @@ -0,0 +1,130 @@ +tester->getProjectDir(); + $legacyDir = $this->tester->getLegacyDir(); + $legacySessionName = $this->tester->getLegacySessionName(); + $defaultSessionName = $this->tester->getDefaultSessionName(); + + $legacyScope = $this->tester->getLegacyScope(); + + $moduleNameMapper = new ModuleNameMapperHandler( + $projectDir, + $legacyDir, + $legacySessionName, + $defaultSessionName, + $legacyScope + ); + + + $this->handler = new SubPanelContractsRenewalDateMock( + $projectDir, + $legacyDir, + $legacySessionName, + $defaultSessionName, + $legacyScope, + $moduleNameMapper + ); + } + + /** + * Test Unsupported context module + * @throws Exception + */ + public function testUnsupportedContextModule(): void + { + $this->handler->reset(); + + $result = $this->handler->getData( + [ + 'key' => '', + 'context' => [ + 'id' => '12345' + ] + ] + ); + + static::assertNotNull($result); + static::assertNotNull($result->getData()); + static::assertNotNull($result->getMetadata()); + static::assertIsArray($result->getData()); + static::assertIsArray($result->getMetadata()); + static::assertEquals('contracts', $result->getId()); + static::assertArrayHasKey('type', $result->getMetadata()); + static::assertEquals('single-value-statistic', $result->getMetadata()['type']); + static::assertArrayHasKey('dataType', $result->getMetadata()); + static::assertEquals('varchar', $result->getMetadata()['dataType']); + static::assertArrayHasKey('value', $result->getData()); + static::assertEquals('-', $result->getData()['value']); + } + + /** + * Test Get Next Renewal Date + * @throws Exception + */ + public function testGetNextRenewalDate(): void + { + $this->handler->reset(); + + $rows = [ + [ + 'end_date' => '12/12/2019', + ], + ]; + $this->handler->setMockQueryResult($rows); + + $result = $this->handler->getData( + [ + 'key' => 'contracts', + 'context' => [ + 'module' => 'accounts', + 'id' => '12345', + ], + 'params' => [ + 'subpanel' => 'test_contracts' + ] + ] + ); + + static::assertNotNull($result); + static::assertNotNull($result->getData()); + static::assertNotNull($result->getMetadata()); + static::assertIsArray($result->getData()); + static::assertIsArray($result->getMetadata()); + static::assertArrayHasKey('value', $result->getData()); + static::assertEquals('12/12/2019', $result->getData()['value']); + static::assertEquals('contracts', $result->getId()); + static::assertArrayHasKey('type', $result->getMetadata()); + static::assertEquals('single-value-statistic', $result->getMetadata()['type']); + static::assertArrayHasKey('dataType', $result->getMetadata()); + static::assertEquals('date', $result->getMetadata()['dataType']); + } +}