added dev data and transaction creation scripts
This commit is contained in:
parent
6940006b06
commit
606d5bffc2
3 changed files with 194 additions and 0 deletions
90
lib/Pear/LocalLoop/Command/dev_transactions.pm
Normal file
90
lib/Pear/LocalLoop/Command/dev_transactions.pm
Normal file
|
@ -0,0 +1,90 @@
|
|||
package Pear::LocalLoop::Command::dev_transactions;
|
||||
use Mojo::Base 'Mojolicious::Command';
|
||||
|
||||
use Mojo::Util 'getopt';
|
||||
|
||||
use DateTime;
|
||||
use DateTime::Format::Strptime;
|
||||
|
||||
has description => 'Input Dev Transaction';
|
||||
|
||||
has usage => sub { shift->extract_usage };
|
||||
|
||||
sub run {
|
||||
my ( $self, @args ) = @_;
|
||||
|
||||
getopt \@args,
|
||||
'f|force' => \my $force,
|
||||
'd|date=s' => \my $date,
|
||||
'n|number=i' => \my $number,
|
||||
'c|count=i' => \my $count;
|
||||
|
||||
unless ( defined $force ) {
|
||||
say "Will not do anything without force option";
|
||||
return;
|
||||
}
|
||||
|
||||
if ( $ENV{MOJO_MODE} eq 'production' || $self->app->mode eq 'production' ) {
|
||||
say "Will not run dev data fixtures in production!";
|
||||
return;
|
||||
}
|
||||
|
||||
my $date_formatter = DateTime::Format::Strptime->new(
|
||||
pattern => '%Y-%m-%d'
|
||||
);
|
||||
|
||||
my $datetime;
|
||||
|
||||
if ( defined $date ) {
|
||||
|
||||
$datetime = $date_formatter->parse_datetime($date);
|
||||
|
||||
unless ( defined $datetime ) {
|
||||
say "Unrecognised date format, please use 'YYYY-MM-DD' Format";
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
$datetime = DateTime->today;
|
||||
}
|
||||
|
||||
my $schema = $self->app->schema;
|
||||
|
||||
my $user_rs = $schema->resultset('User');
|
||||
|
||||
my $organisation_rs = $user_rs->search({ customer_id => undef });
|
||||
|
||||
my $dtf = $schema->storage->datetime_parser;
|
||||
|
||||
my @organisations = $organisation_rs->all;
|
||||
|
||||
unless ( defined $number ) {
|
||||
$number = 1;
|
||||
}
|
||||
|
||||
for my $day_sub ( 0 .. $count ) {
|
||||
$datetime->subtract( days => $day_sub );
|
||||
for ( 1 .. $number ) {
|
||||
for my $user_result ( $user_rs->all ) {
|
||||
$user_result->create_related( 'transactions', {
|
||||
seller_id => $organisations[int(rand($#organisations))]->id,
|
||||
value => int(rand(9999)) / 100,
|
||||
proof_image => 'a',
|
||||
submitted_at => $dtf->format_datetime($datetime->clone->add( minutes => int(rand(1440)) )),
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
Usage: APPLICATION dev_transactions [OPTIONS]
|
||||
|
||||
Options:
|
||||
|
||||
-f, --force Actually insert the data
|
||||
-d, --date Date to create the transactions on
|
||||
|
||||
=cut
|
||||
|
||||
1;
|
Reference in a new issue