2019-07-02 15:21:01 +01:00
package Pear::LocalLoop::Controller::Admin::ImportFrom ;
use Mojo::Base 'Mojolicious::Controller' ;
2019-07-05 15:30:31 +01:00
use Moo ;
2019-07-05 18:44:46 +01:00
use Try::Tiny ;
2019-07-14 15:15:14 +01:00
use Mojo::File qw/path/ ;
2019-07-05 15:30:31 +01:00
2019-07-04 14:16:49 +01:00
sub index {
my $ c = shift ;
2019-07-14 15:15:14 +01:00
$ c - > stash - > { org_entities } = [
map {
{ id = > $ _ - > entity_id , name = > $ _ - > name }
2019-09-06 17:31:09 +01:00
} $ c - > schema - > resultset ( 'Organisation' ) - > search ( { name = > { like = > '%lancashire%' } } , { columns = > [ qw/ entity_id name / ] } )
2019-07-14 15:15:14 +01:00
] ;
2019-07-04 14:16:49 +01:00
2019-07-05 15:30:31 +01:00
$ c - > app - > max_request_size ( 104857600 ) ;
2019-07-04 14:16:49 +01:00
}
sub post_suppliers {
my $ c = shift ;
2019-07-05 15:30:31 +01:00
unless ( $ c - > param ( 'suppliers_csv' ) ) {
2019-07-14 15:15:14 +01:00
$ c - > flash ( error = > "No CSV file given" ) ;
return $ c - > redirect_to ( '/admin/import_from' ) ;
2019-07-05 15:30:31 +01:00
}
# Check file size
if ( $ c - > req - > is_limit_exceeded ) {
2019-07-14 15:15:14 +01:00
$ c - > flash ( error = > "CSV file size is too large" ) ;
return $ c - > redirect_to ( '/admin/import_from' ) ;
2019-07-05 15:30:31 +01:00
}
2019-07-08 16:41:59 +01:00
2019-07-08 18:12:35 +01:00
my $ file = $ c - > param ( 'suppliers_csv' ) ;
2019-07-08 16:41:59 +01:00
2019-07-14 15:15:14 +01:00
my $ filename = path ( $ c - > app - > config - > { upload_path } , time . 'suppliers.csv' ) ;
2019-07-08 16:41:59 +01:00
2019-07-08 18:12:35 +01:00
$ file - > move_to ( $ filename ) ;
2019-07-08 16:41:59 +01:00
2019-07-14 15:15:14 +01:00
my $ job_id = $ c - > minion - > enqueue ( 'csv_supplier_import' = > [ $ filename ] ) ;
2019-07-08 16:41:59 +01:00
2019-09-06 17:31:09 +01:00
$ c - > flash ( success = > "CSV import started, see status of minion job at: " . $ c - > link_to ( 'Minion Job' , "/admin/minion/jobs?id=$job_id" ) ) ;
2019-08-29 16:37:55 +01:00
return $ c - > redirect_to ( '/admin/import_from' ) ;
}
sub post_postcodes {
my $ c = shift ;
unless ( $ c - > param ( 'postcodes_csv' ) ) {
$ c - > flash ( error = > "No CSV file given" ) ;
return $ c - > redirect_to ( '/admin/import_from' ) ;
}
# Check file size
if ( $ c - > req - > is_limit_exceeded ) {
$ c - > flash ( error = > "CSV file size is too large" ) ;
return $ c - > redirect_to ( '/admin/import_from' ) ;
}
my $ file = $ c - > param ( 'postcodes_csv' ) ;
my $ filename = path ( $ c - > app - > config - > { upload_path } , time . 'postcodes.csv' ) ;
$ file - > move_to ( $ filename ) ;
my $ job_id = $ c - > minion - > enqueue ( 'csv_postcode_import' = > [ $ filename ] ) ;
2019-09-06 17:31:09 +01:00
$ c - > flash ( success = > "CSV import started, see status of minion job at: " . $ c - > link_to ( 'Minion Job' , "/admin/minion/jobs?id=$job_id" ) ) ;
2019-07-14 15:15:14 +01:00
return $ c - > redirect_to ( '/admin/import_from' ) ;
2019-07-04 14:16:49 +01:00
}
sub post_transactions {
my $ c = shift ;
2019-07-14 15:15:14 +01:00
unless ( $ c - > param ( 'entity_id' ) ne '' ) {
$ c - > flash ( error = > "Please Choose an organisation" ) ;
return $ c - > redirect_to ( '/admin/import_from' ) ;
}
2019-07-05 15:30:31 +01:00
unless ( $ c - > param ( 'transactions_csv' ) ) {
2019-07-14 15:15:14 +01:00
$ c - > flash ( error = > "No CSV file given" ) ;
return $ c - > redirect_to ( '/admin/import_from' ) ;
2019-07-05 15:30:31 +01:00
}
# Check file size
if ( $ c - > req - > is_limit_exceeded ) {
2019-07-14 15:15:14 +01:00
$ c - > flash ( error = > "CSV file size is too large" ) ;
return $ c - > redirect_to ( '/admin/import_from' ) ;
2019-07-05 15:30:31 +01:00
}
2019-07-08 18:12:35 +01:00
my $ file = $ c - > param ( 'transactions_csv' ) ;
2019-07-14 15:15:14 +01:00
my $ filename = path ( $ c - > app - > config - > { upload_path } , time . 'transactions.csv' ) ;
2019-07-08 18:12:35 +01:00
$ file - > move_to ( $ filename ) ;
2019-07-14 15:15:14 +01:00
my $ job_id = $ c - > minion - > enqueue ( 'csv_transaction_import' = > [ $ filename , $ c - > param ( 'entity_id' ) ] ) ;
2019-07-08 18:12:35 +01:00
2019-09-06 17:31:09 +01:00
$ c - > flash ( success = > "CSV import started, see status of minion job at: " . $ c - > link_to ( 'Minion Job' , "/admin/minion/jobs?id=$job_id" ) ) ;
2019-07-14 15:15:14 +01:00
return $ c - > redirect_to ( '/admin/import_from' ) ;
2019-07-04 14:16:49 +01:00
}
1 ;