rm: schedule add: custom date in artisan comand csvExport:generate con check date

This commit is contained in:
Michael 2024-09-06 15:22:33 +02:00
parent 3866a225ec
commit 3ced4077bf
2 changed files with 36 additions and 45 deletions

View File

@ -3,16 +3,18 @@
namespace App\Console\Commands;
use App\Http\Controllers\GiteaApiController\GiteaExport;
use DateTime;
use Illuminate\Console\Command;
use InvalidArgumentException;
class exportCsv extends Command
class csvExport extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'csvExport:generate';
protected $signature = 'csvExport:generate {firstDay?} {lastDay?}';
/**
* The console command description.
@ -31,6 +33,32 @@ class exportCsv extends Command
parent::__construct();
}
function checkDateValid($stringDate){
$d = DateTime::createFromFormat('Y-m-d', $stringDate);
if($d){
$d = $d->format('Y-m-d');
return $d && $d == $stringDate;
}
return false;
}
function checkInputDates(){
$firstDay = $this->argument('firstDay');
$lastDay = $this->argument('lastDay');
try{
if( $firstDay !== null && $lastDay !== null){
$this->info('Rilevate date richieste, controllo la correttezza del formato.');
if(!$this->checkDateValid($firstDay)) throw new InvalidArgumentException('Formato della prima data errata o data inesistente, formato richiesto Y-m-t, data fornita '. $firstDay);
if(!$this->checkDateValid($lastDay)) throw new InvalidArgumentException('Formato della seconda data errata o data inesistente, formato richiesto Y-m-t, data fornita '. $lastDay);
$this->info('Le date richieste sono correte.');
return true;
}
} catch (\InvalidArgumentException $e){
throw new InvalidArgumentException($e->getMessage());
}
$this->info('Non sono state rilevate date custom');
return true;
}
/**
* Execute the console command.
*
@ -40,8 +68,10 @@ class exportCsv extends Command
{
// Write your script logic here
$this->info('Inizio esecuzione.');
$firstDay = date('Y-m-01'); // First day of the current month
$lastDay = date('Y-m-t'); // Last day of the current month
$this->info('Controllo se sono state inserite date custom.');
$this->checkInputDates();
$firstDay = $this->argument('firstDay') ? $this->argument('firstDay') : date('Y-m-01'); // First day of the current month;
$lastDay = $this->argument('lastDay') ? $this->argument('lastDay') : date('Y-m-t'); // Last day of the current month;
$this->info('Export da ' . $firstDay .' a '. $lastDay );
$calculate_agent_cost = true;
$third_party_integrations_allow = true;

View File

@ -2,8 +2,7 @@
namespace App\Console;
use App\Console\Commands\exportCsv;
use App\Console\Commands\exportCsvCli;
use App\Console\Commands\csvExport;
use App\Http\Controllers\GiteaApiController\GiteaExport;
use Dotenv\Dotenv;
use Illuminate\Console\Scheduling\Schedule;
@ -17,7 +16,7 @@ class Kernel extends ConsoleKernel
* @var array
*/
protected $commands = [
exportCsv::class,
csvExport::class,
];
/**
@ -28,43 +27,5 @@ class Kernel extends ConsoleKernel
*/
protected function schedule(Schedule $schedule)
{
$schedule->call(function () {
$firstDay = date('Y-m-01'); // First day of the current month
$lastDay = date('Y-m-t'); // Last day of the current month
$calculate_agent_cost = true;
$third_party_integrations_allow = true;
$third_party_integrations_nextcloud = true;
$third_party_integrations_open_project = false;
$email_send_allow = true;
$gitea_export = new GiteaExport(
$calculate_agent_cost,
$third_party_integrations_allow,
$third_party_integrations_nextcloud,
$third_party_integrations_open_project,
$email_send_allow,
);
$gitea_export->export_issues($firstDay, $lastDay, ['state' => 'closed']);
})->monthly();
$schedule->call(function () {
$firstDay = date('Y-m-01'); // First day of the current month
$lastDay = date('Y-m-t'); // Last day of the current month
$calculate_agent_cost = true;
$third_party_integrations_allow = true;
$third_party_integrations_nextcloud = false;
$third_party_integrations_open_project = false;
$email_send_allow = true;
$gitea_export = new GiteaExport(
$calculate_agent_cost,
$third_party_integrations_allow,
$third_party_integrations_nextcloud,
$third_party_integrations_open_project,
$email_send_allow,
);
$gitea_export->export_issues($firstDay, $lastDay, ['state' => 'closed']);
})->everyFiveMinutes();
}
}