Commit 82eeab63 authored by Chivy Lim's avatar Chivy Lim
Browse files

[TASK] Add spreadsheet import cleanup command

refs KIME-4682
parent 28a8edde
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -38,6 +38,12 @@ class SpreadsheetImportCommandController extends CommandController {
	 */
	protected $persistenceManager;

	/**
	 * @Flow\InjectConfiguration
	 * @var array
	 */
	protected $settings;

	/**
	 * Import one pending queued spreadsheet into Domain data, and it will import the next one if it is done
	 */
@@ -70,4 +76,23 @@ class SpreadsheetImportCommandController extends CommandController {
		}
	}

	/**
	 * Cleanup previous spreadsheet imports by specific time (defined by settings)
	 */
	public function cleanupCommand() {
		$cleanupImportFromPreviousDay = $this->settings['cleanupImportFromPreviousDay'];
		$cleanupFromDate = new \DateTime();
		$cleanupFromDate->sub(new \DateInterval('P' . $cleanupImportFromPreviousDay . 'D'));
		$oldSpreadsheetImports = $this->spreadsheetImportRepository->findPreviousImportsBySpecificDate($cleanupFromDate);
		if ($oldSpreadsheetImports->count() > 0) {
			/** @var SpreadsheetImport $oldSpreadsheetImport */
			foreach ($oldSpreadsheetImports as $oldSpreadsheetImport) {
				$this->spreadsheetImportRepository->remove($oldSpreadsheetImport);
			}
			$this->outputLine('%d spreadsheet imports were removed.', array($oldSpreadsheetImports->count()));
		} else {
			$this->outputLine('There is no spreadsheet import in queue to remove.');
		}
	}

}
+1 −1
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@ class SpreadsheetImport {
	protected $context;

	/**
	 * @ORM\OneToOne(cascade={"persist"})
	 * @ORM\OneToOne(cascade={"persist", "remove"})
	 * @var \TYPO3\Flow\Resource\Resource
	 */
	protected $file;
+11 −0
Original line number Diff line number Diff line
@@ -24,4 +24,15 @@ class SpreadsheetImportRepository extends Repository {
	 */
	protected $defaultOrderings = array('scheduleDate' => \TYPO3\Flow\Persistence\QueryInterface::ORDER_ASCENDING);

	/**
	 * @param \DateTime $dateTime
	 *
	 * @return \TYPO3\Flow\Persistence\QueryResultInterface
	 */
	public function findPreviousImportsBySpecificDate(\DateTime $dateTime) {
		$query = $this->createQuery();
		$constraint = $query->lessThanOrEqual('scheduleDate', $dateTime);
		return $query->matching($constraint)->execute();
	}

}
+1 −0
Original line number Diff line number Diff line
WE:
  SpreadsheetImport:
    cleanupImportFromPreviousDay: 5
    swisscomGrb:
        domain: WE\KIME\Domain\Model\User
        Configuration: