%PDF- %PDF-
| Direktori : /www/varak.net/nextcloud.varak.net/apps_old/apps/cospend/lib/Command/ |
| Current File : /www/varak.net/nextcloud.varak.net/apps_old/apps/cospend/lib/Command/DeleteBills.php |
<?php
/**
* Nextcloud - Cospend
*
* This file is licensed under the Affero General Public License version 3 or
* later. See the COPYING file.
*
* @author Julien Veyssier <julien-nc@posteo.net>
* @copyright Julien Veyssier 2023
*/
namespace OCA\Cospend\Command;
use DateTime;
use OC\Core\Command\Base;
use OCA\Cospend\Db\BillMapper;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
class DeleteBills extends Base {
public function __construct(private BillMapper $billMapper) {
parent::__construct();
}
protected function configure() {
$this->setName('cospend:delete-bills')
->setDescription('Delete some bills of a project')
->addArgument(
'project_id',
InputArgument::REQUIRED,
'The id of the project'
)
->addOption(
'simulate',
's',
InputOption::VALUE_NONE,
'Only simulate bill deletion and print bills that would be deleted'
)
->addOption(
'what',
'w',
InputOption::VALUE_REQUIRED,
'Only delete the bills with this "what" value'
)
->addOption(
'min_timestamp',
't',
InputOption::VALUE_REQUIRED,
'Only delete the bills after this timestamp'
);
}
protected function execute(InputInterface $input, OutputInterface $output) {
$projectId = $input->getArgument('project_id');
$what = $input->getOption('what');
$minTs = $input->getOption('min_timestamp');
$minTs = $minTs === null ? null : (int) $minTs;
if ($input->getOption('simulate')) {
$output->writeln('This is just a simulation');
}
$billsToDelete = $this->billMapper->getBillsToDelete($projectId, $what, $minTs);
foreach ($billsToDelete as $bill) {
$ts = $bill->getTimestamp();
$date = (new DateTime())->setTimestamp($ts)->format('c');
$output->writeln('DELETE [' . $bill->getId() . '] ' . $bill->getWhat() . ' ; ' . $bill->getAmount() . ' ; ' . $date . ' ; ' . $bill->getPayerid());
}
if ($input->getOption('simulate')) {
$output->writeln('0 bill deleted');
$output->writeln('0 bill ower deleted');
} else {
$nbDeleted = $this->billMapper->deleteBills($projectId, $what, $minTs);
$output->writeln($nbDeleted['bills'] . ' bills deleted');
$output->writeln($nbDeleted['billOwers'] . ' bill owers deleted');
}
return 0;
}
}