check
This commit is contained in:
@@ -2,9 +2,6 @@ package Dojo::Controller::Home;
|
||||
use Mojo::Base 'Mojolicious::Controller';
|
||||
use Mojo::Template;
|
||||
use Dojo::Support qw{ log get_names};
|
||||
# estos son paypal=======:w
|
||||
use LWP::UserAgent;
|
||||
use HTTP::Request::Common;
|
||||
use JSON;
|
||||
use Data::Dumper;
|
||||
#=========================
|
||||
@@ -70,25 +67,6 @@ sub pang {
|
||||
my $h=$c->dbv->pang_md;
|
||||
map { $c->stash( $_ => $h->{$_}) } keys %$h;
|
||||
$c->stash(layout=>'default');
|
||||
|
||||
}
|
||||
|
||||
sub cal {
|
||||
my $c = shift;
|
||||
my $data=$c->dbv->calendar_events;
|
||||
my $block=$c->dbv->calendar_monthblock;
|
||||
my %h;
|
||||
map{ push @{ $h{$_->{bid}} },$_; }(@$data);
|
||||
$c->stash( r=>\%h, b=>$block);
|
||||
$c->stash(layout=>'default');
|
||||
}
|
||||
|
||||
sub event{
|
||||
my $c = shift;
|
||||
my $data=$c->dbv->event($c->param('id'));
|
||||
$c->redirect_to('cal') unless ($data->{'cname'});
|
||||
$c->stash($data);
|
||||
$c->stash(layout=> "defaultContact");
|
||||
}
|
||||
|
||||
sub contact{
|
||||
@@ -114,56 +92,6 @@ sub contact2{
|
||||
$c->stash(layout=>'default');
|
||||
}
|
||||
|
||||
sub store{
|
||||
my $c = shift;
|
||||
$c->stash( r=>$c->dbg->store);
|
||||
$c->stash(layout=> "defaultContact");
|
||||
}
|
||||
|
||||
sub storep{
|
||||
my $c=shift;
|
||||
if( defined($c->req->json) ){
|
||||
my $oid = $c->req->json->{'orderID'} //0;
|
||||
log( $oid );
|
||||
#credentials====
|
||||
my $client='AQdZ1JJL-GNBgGTI3W6cXChmj6MnZsInRGlWeHw1kbGiE_49eTtZ2fPvEq9ersU2y6O5WpxccdsyAQw7';
|
||||
my $secter='EBn8CNOCrJbVZ_fNllXB7oUIm9_vhtqrJMm2zSBGbxSyiiych3cHOIWOLAD5NVw4Z3dmNhmsHQwPsrZ0';
|
||||
my $pauth='https://api.sandbox.paypal.com/v1/oauth2/token/';
|
||||
my $porder='https://api.sandbox.paypal.com/v2/checkout/orders/';
|
||||
#=================
|
||||
#pre auth ====
|
||||
my $ua = LWP::UserAgent->new;
|
||||
my $req=POST $pauth, ["grant_type"=>"client_credentials"];
|
||||
$req->authorization_basic($client,$secter);
|
||||
$req->content_type('application/x-www-form-urlencoded');
|
||||
my $res=$ua->request($req);
|
||||
log("paypal pre auth error! $res->status_line") unless ($res->is_success );
|
||||
my $json = JSON->new->utf8;
|
||||
my $r=$json->decode($res->decoded_content);
|
||||
#==============
|
||||
|
||||
#order details ====
|
||||
my $ub = LWP::UserAgent->new;
|
||||
$ub->default_header('Content-Type'=> 'application/json' );
|
||||
$ub->default_header('Authorization'=> 'Bearer ' . $r->{access_token} );
|
||||
my $resb=$ub->get($porder.$oid);
|
||||
log("paypal checkout error!") unless ($resb->is_success );
|
||||
my $jsonb = JSON->new->utf8;
|
||||
my $s=$jsonb->decode($resb->decoded_content);
|
||||
#===================
|
||||
$c->rendered(200); #es default,nomas para enfatizar que puede ser 400 o 500
|
||||
# interesan create time, id, payer: email address, shippng address
|
||||
}
|
||||
else{
|
||||
my $data=$c->dbg->store_id($c->param('id'));
|
||||
$c->redirect_to('cal') if ($c->param('id')==4);
|
||||
$c->redirect_to('store') unless ($data->{'id'});
|
||||
$c->stash($data);
|
||||
$c->stash(layout=>'default');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
sub tv{
|
||||
my $c = shift;
|
||||
$c->stash( videos=>$c->dbv->tv_videos, table=>$c->dbv->tv_series);
|
||||
@@ -181,21 +109,21 @@ sub bcast{
|
||||
$c->stash(layout=> "defaultContact");
|
||||
}
|
||||
|
||||
sub radio{
|
||||
my $c=shift;
|
||||
$c->stash(layout=> "defaultContact");
|
||||
$c->stash($c->dbv->mod);
|
||||
$c->stash(nick=>$c->session("nick"));
|
||||
}
|
||||
sub radio{
|
||||
my $c=shift;
|
||||
$c->stash(layout=> "defaultContact");
|
||||
$c->stash($c->dbv->mod);
|
||||
$c->stash(nick=>$c->session("nick"));
|
||||
}
|
||||
|
||||
sub candy{
|
||||
my $c=shift;
|
||||
$c->stash( css=>["/ext/candy/libs.min.css","/home/candy/default.css"]);
|
||||
$c->stash( js=>["/home/candy/loader.js","/ext/candy/libs.min.js","/ext/candy/candy.min.js"]);
|
||||
sub candy{
|
||||
my $c=shift;
|
||||
$c->stash( css=>["/ext/candy/libs.min.css","/home/candy/default.css"]);
|
||||
$c->stash( js=>["/home/candy/loader.js","/ext/candy/libs.min.js","/ext/candy/candy.min.js"]);
|
||||
|
||||
$c->stash(layout=> "clean");
|
||||
$c->stash(nick=>$c->session("nick"));
|
||||
}
|
||||
$c->stash(layout=> "clean");
|
||||
$c->stash(nick=>$c->session("nick"));
|
||||
}
|
||||
|
||||
#==============================================================================
|
||||
|
||||
@@ -234,55 +162,6 @@ sub bcast{
|
||||
$c->stash(layout=>"admin");
|
||||
}
|
||||
|
||||
sub admin_eventos{
|
||||
my $c=shift;
|
||||
if ( (my $t=$c->param('type') // "") =~/[ecp]/){
|
||||
my $id=$c->param('id');
|
||||
my $req=$c->param('req');
|
||||
if ( $req eq "Eliminar"){
|
||||
$c->dbv->event_del($id) if ($t eq 'e');
|
||||
$c->dbv->course_del($id) if ($t eq 'c');
|
||||
$c->dbv->place_del($id) if ($t eq 'p');
|
||||
}
|
||||
elsif( $req eq "Aceptar"){
|
||||
if($t eq 'e'){
|
||||
my @list=map{$c->param($_)}qw/eplace yini mini dini yend mend dend cost promo pen ecourse eimg een id/;
|
||||
$c->dbv->event_up(@list) if ($id ==0);
|
||||
$c->dbv->event_ch(@list) if ($id >0);
|
||||
}
|
||||
if($t eq 'c'){
|
||||
my @list=map{$c->param($_)}qw/cname csubjects cservices cen id/;
|
||||
$c->dbv->course_up(@list) if ($id ==0);
|
||||
$c->dbv->course_ch(@list) if ($id >0);
|
||||
}
|
||||
if($t eq 'p'){
|
||||
my @list=map{$c->param($_)}qw/pname paddr pobs pto pst pco plat plng pen id/;
|
||||
$c->dbv->place_up(@list) if ($id ==0);
|
||||
$c->dbv->place_ch(@list) if ($id >0);
|
||||
}
|
||||
}
|
||||
$c->redirect_to("/admin/eventos");
|
||||
}
|
||||
|
||||
$c->stash(
|
||||
courses=>$c->dbv->courses,
|
||||
places=>$c->dbv->places,
|
||||
months=>$c->dbv->months,
|
||||
events=>$c->dbv->events,
|
||||
img=>$c->dbv->eimgList,
|
||||
);
|
||||
$c->stash(template=>"home/admin/event");
|
||||
$c->stash(layout=>"admin");
|
||||
}
|
||||
sub admin_tienda{
|
||||
my $c=shift;
|
||||
$c->stash(u=>$c->dbv->user_heads);
|
||||
$c->stash(s=>$c->dbv->store_heads);
|
||||
$c->stash(template=>"home/admin/tienda");
|
||||
$c->stash(layout=>"admin");
|
||||
|
||||
}
|
||||
|
||||
sub admin_json{
|
||||
my $c=shift;
|
||||
my $id = $c->param('id');
|
||||
@@ -290,10 +169,6 @@ sub bcast{
|
||||
my $json = "304";
|
||||
$json = $c->dbv->msg($id) if $req=~/mensaje/;
|
||||
$json = $c->dbv->user($id) if $req=~/usuarios/;
|
||||
$json = $c->dbv->astore($id) if $req=~/tienda/;
|
||||
$json = $c->dbv->course($id) if $req=~/course/;
|
||||
$json = $c->dbv->place($id) if $req=~/place/;
|
||||
$json = $c->dbv->eventa($id) if $req=~/event/;
|
||||
$c->render(json=>$json);
|
||||
}
|
||||
|
||||
|
||||
107
lib/Dojo/Controller/Misc.pm
Normal file
107
lib/Dojo/Controller/Misc.pm
Normal file
@@ -0,0 +1,107 @@
|
||||
package Dojo::Controller::Misc;
|
||||
use Mojo::Base 'Mojolicious::Controller';
|
||||
use Mojo::Template;
|
||||
use Dojo::Support qw{ log get_names};
|
||||
# estos son paypal=======:w
|
||||
use LWP::UserAgent;
|
||||
use HTTP::Request::Common;
|
||||
use JSON;
|
||||
use Data::Dumper;
|
||||
|
||||
# 4000004840000008 3, 6, 9, 12, and 18 month installment plans available
|
||||
# "*p4000004840000008
|
||||
# 4242424242424242 No installment plans available.
|
||||
my $sky='sk_test_GXWsfsoxy5336LrSw7SgTXNC00TV9O4Dbq';
|
||||
my $api_create_path='https://api.stripe.com/v1/payment_intents';
|
||||
|
||||
sub stripe {
|
||||
my $self = shift;
|
||||
my $request = defined ($self->req->json)? $self->req->json->{'req'}:"start";
|
||||
|
||||
# item info ======================
|
||||
my $header = "Beijing Wisdom </br> Healing Center";
|
||||
my $title = "Retiro Curso de Tercer método de ZhiNengQiGong";
|
||||
my $subtitle = "Una experiencia de instrucción del tercer método y profundización con los instructores ZhangQing (Helen) y QiuFuChun (Karl).";
|
||||
my ($amount,$description,$max_time) = (1417500,"Tercer método",9);
|
||||
# ==============================
|
||||
|
||||
if( $request eq "precheck" ){
|
||||
my $pmi=$self->req->json->{'payment_method_id'} // 0;
|
||||
my $t = intentCreate( $pmi, $amount, $description, $max_time);
|
||||
$self->render(json=>$t);
|
||||
}
|
||||
|
||||
elsif( $request eq "check" ){
|
||||
my $pii = $self->req->json->{'payment_intent_id'};
|
||||
my $plan = $self->req->json->{'selected_plan'}//0;
|
||||
|
||||
unless ($plan==0) {if ($plan->{count} > $max_time) {
|
||||
log("\n\n max time instalment attempt\n\n");
|
||||
$self->render(json=>{'error'=>'max time error'});
|
||||
return 0;
|
||||
}}
|
||||
my $r = intentConfirm($pii,$plan);
|
||||
$self->render(json=>$r);
|
||||
}
|
||||
|
||||
else {
|
||||
$self->stash(header=>$header);
|
||||
$self->stash(title=>$title);
|
||||
$self->stash(subtitle=>$subtitle);
|
||||
$self->stash(layout=>'xpay');
|
||||
}
|
||||
}
|
||||
|
||||
#stripe appi functions
|
||||
sub intentCreate{
|
||||
my ($pmi,$amount,$descriptor,$max_time) = @_;
|
||||
my $payment_info=[
|
||||
'payment_method'=>$pmi,
|
||||
'amount'=>$amount,
|
||||
'currency'=>'mxn',
|
||||
'description'=>$descriptor,
|
||||
'payment_method_options[card][installments][enabled]'=>'true'
|
||||
];
|
||||
my $r=stripeAppi($api_create_path,$payment_info);
|
||||
my $t->{intent_id}=$r->{id};
|
||||
foreach (@{$r->{payment_method_options}{card}{installments}{available_plans}}){
|
||||
push (@{$t->{available_plans}}, $_) unless ($_->{count}>$max_time);
|
||||
}
|
||||
return $t;
|
||||
}
|
||||
|
||||
sub intentConfirm{
|
||||
my ($pii,$plan) = @_;
|
||||
my $api_confirm_path = "https://api.stripe.com/v1/payment_intents/$pii/confirm";
|
||||
my $cplan=0;
|
||||
|
||||
$cplan = [
|
||||
'payment_method_options[card][installments][plan][type]'=>'fixed_count',
|
||||
'payment_method_options[card][installments][plan][interval]'=>'month',
|
||||
'payment_method_options[card][installments][plan][count]'=>$plan->{count},
|
||||
]
|
||||
unless ($plan==0);
|
||||
my $r = stripeAppi($api_confirm_path,$cplan);
|
||||
my $rtt = {
|
||||
'status'=>$r->{'status'},
|
||||
'plan' => $r->{'payment_method_options'}{'card'}{'installments'}{'plan'},
|
||||
};
|
||||
return $rtt;
|
||||
}
|
||||
|
||||
sub stripeAppi{
|
||||
my ($path,$data) = @_;
|
||||
my $req = POST $path, $data;
|
||||
$req->authorization_basic($sky,'');
|
||||
$req->content_type('application/x-www-form-urlencoded');
|
||||
my $ua = LWP::UserAgent->new;
|
||||
my $res=$ua->request($req);
|
||||
unless ($res->is_success){
|
||||
log("stripe error! path=$path\n data=".Dumper($data)."\n $res->status_line ");
|
||||
return 0;
|
||||
}
|
||||
my $json = JSON->new->utf8;
|
||||
return $json->decode($res->decoded_content);
|
||||
}
|
||||
|
||||
1;
|
||||
280
lib/Dojo/Controller/Proc.pm
Normal file
280
lib/Dojo/Controller/Proc.pm
Normal file
@@ -0,0 +1,280 @@
|
||||
package Dojo::Controller::Proc;
|
||||
use Mojo::Base 'Mojolicious::Controller';
|
||||
use Mojo::Template;
|
||||
use Dojo::Support qw{ log get_names};
|
||||
# estos son paypal=======:w
|
||||
use LWP::UserAgent;
|
||||
use HTTP::Request::Common;
|
||||
use JSON;
|
||||
use Data::Dumper;
|
||||
#=========================
|
||||
sub tst{
|
||||
my $c=shift;
|
||||
if( defined($c->req->json) ){
|
||||
my $oid = $c->req->json->{'orderID'} //0;
|
||||
log( $oid );
|
||||
#credentials====
|
||||
my $client='AQdZ1JJL-GNBgGTI3W6cXChmj6MnZsInRGlWeHw1kbGiE_49eTtZ2fPvEq9ersU2y6O5WpxccdsyAQw7';
|
||||
my $secter='EBn8CNOCrJbVZ_fNllXB7oUIm9_vhtqrJMm2zSBGbxSyiiych3cHOIWOLAD5NVw4Z3dmNhmsHQwPsrZ0';
|
||||
my $pauth='https://api.sandbox.paypal.com/v1/oauth2/token/';
|
||||
my $porder='https://api.sandbox.paypal.com/v2/checkout/orders/';
|
||||
#=================
|
||||
#pre auth ====
|
||||
my $ua = LWP::UserAgent->new;
|
||||
my $req=POST $pauth, ["grant_type"=>"client_credentials"];
|
||||
$req->authorization_basic($client,$secter);
|
||||
$req->content_type('application/x-www-form-urlencoded');
|
||||
my $res=$ua->request($req);
|
||||
log("paypal pre auth error! $res->status_line") unless ($res->is_success );
|
||||
my $json = JSON->new->utf8;
|
||||
my $r=$json->decode($res->decoded_content);
|
||||
#==============
|
||||
|
||||
#order details ====
|
||||
my $ub = LWP::UserAgent->new;
|
||||
$ub->default_header('Content-Type'=> 'application/json' );
|
||||
$ub->default_header('Authorization'=> 'Bearer ' . $r->{access_token} );
|
||||
my $resb=$ub->get($porder.$oid);
|
||||
log("paypal checkout error!") unless ($resb->is_success );
|
||||
my $jsonb = JSON->new->utf8;
|
||||
my $s=$jsonb->decode($resb->decoded_content);
|
||||
#===================
|
||||
$c->rendered(200); #es default,nomas para enfatizar que puede ser 400 o 500
|
||||
# interesan create time, id, payer: email address, shippng address
|
||||
}
|
||||
else{
|
||||
my $data=$c->dbg->store_id($c->param('id'));
|
||||
$c->redirect_to('store') unless ($data->{'id'});
|
||||
$c->stash($data);
|
||||
$c->stash(layout=>'default');
|
||||
}
|
||||
#$c->render(text=> $c->config->{radio}{'channel'});
|
||||
|
||||
}
|
||||
# User ========================================================================
|
||||
|
||||
sub cal {
|
||||
my $c = shift;
|
||||
my $data=$c->mproc->calendar_events;
|
||||
my $block=$c->mproc->calendar_monthblock;
|
||||
my %h;
|
||||
map{ push @{ $h{$_->{bid}} },$_; }(@$data);
|
||||
$c->stash( r=>\%h, b=>$block);
|
||||
$c->stash(layout=>'default');
|
||||
}
|
||||
|
||||
sub event{
|
||||
my $c = shift;
|
||||
my $data=$c->mproc->event($c->param('id'));
|
||||
$c->redirect_to('cal') unless ($data->{'cname'});
|
||||
$c->stash($data);
|
||||
$c->stash(layout=> "defaultContact");
|
||||
}
|
||||
|
||||
|
||||
sub store{
|
||||
my $c = shift;
|
||||
$c->stash( r=>$c->dbg->store);
|
||||
$c->stash(layout=> "defaultContact");
|
||||
}
|
||||
|
||||
sub storep{
|
||||
my $c=shift;
|
||||
if( defined($c->req->json) ){
|
||||
my $oid = $c->req->json->{'orderID'} //0;
|
||||
log( $oid );
|
||||
#credentials====
|
||||
my $client='AQdZ1JJL-GNBgGTI3W6cXChmj6MnZsInRGlWeHw1kbGiE_49eTtZ2fPvEq9ersU2y6O5WpxccdsyAQw7';
|
||||
my $secter='EBn8CNOCrJbVZ_fNllXB7oUIm9_vhtqrJMm2zSBGbxSyiiych3cHOIWOLAD5NVw4Z3dmNhmsHQwPsrZ0';
|
||||
my $pauth='https://api.sandbox.paypal.com/v1/oauth2/token/';
|
||||
my $porder='https://api.sandbox.paypal.com/v2/checkout/orders/';
|
||||
#=================
|
||||
#pre auth ====
|
||||
my $ua = LWP::UserAgent->new;
|
||||
my $req=POST $pauth, ["grant_type"=>"client_credentials"];
|
||||
$req->authorization_basic($client,$secter);
|
||||
$req->content_type('application/x-www-form-urlencoded');
|
||||
my $res=$ua->request($req);
|
||||
log("paypal pre auth error! $res->status_line") unless ($res->is_success );
|
||||
my $json = JSON->new->utf8;
|
||||
my $r=$json->decode($res->decoded_content);
|
||||
#==============
|
||||
|
||||
#order details ====
|
||||
my $ub = LWP::UserAgent->new;
|
||||
$ub->default_header('Content-Type'=> 'application/json' );
|
||||
$ub->default_header('Authorization'=> 'Bearer ' . $r->{access_token} );
|
||||
my $resb=$ub->get($porder.$oid);
|
||||
log("paypal checkout error!") unless ($resb->is_success );
|
||||
my $jsonb = JSON->new->utf8;
|
||||
my $s=$jsonb->decode($resb->decoded_content);
|
||||
#===================
|
||||
$c->rendered(200); #es default,nomas para enfatizar que puede ser 400 o 500
|
||||
# interesan create time, id, payer: email address, shippng address
|
||||
}
|
||||
else{
|
||||
my $data=$c->dbg->store_id($c->param('id'));
|
||||
$c->redirect_to('cal') if ($c->param('id')==4);
|
||||
$c->redirect_to('store') unless ($data->{'id'});
|
||||
$c->stash($data);
|
||||
$c->stash(layout=>'default');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
sub spay{
|
||||
my $c = shift;
|
||||
my $data=$c->mproc->store_id($c->param('class'),$c->param('id'));
|
||||
$c->stash($data);
|
||||
if( ($c->param('id') <= 86) && ($c->param('id') >= 80) )
|
||||
{ $c->stash(layout=>'xpay');}
|
||||
else {$c->stash(layout=>'default');}
|
||||
}
|
||||
|
||||
#stripe appi functions
|
||||
sub intentCreate{
|
||||
my $c = shift;
|
||||
unless (defined ($c->req->json)){
|
||||
$c->stash(layout=>'clean');
|
||||
$c->render(template=>'home/not_found', status=>404);
|
||||
return 0;
|
||||
}
|
||||
my $pmi=$c->req->json->{'payment_method_id'} // 0;
|
||||
my $data=$c->mproc->intentCreate($c->req->json->{'tid'});
|
||||
my ($amount,$description,$max_time) = ($data->{'precio'},$data->{'nombre'},9);
|
||||
my $api_create_path='https://api.stripe.com/v1/payment_intents';
|
||||
my $payment_info=[
|
||||
'payment_method'=>$pmi,
|
||||
'amount'=>$amount,
|
||||
'currency'=>'mxn',
|
||||
'description'=>$description,
|
||||
'payment_method_options[card][installments][enabled]'=>'true'
|
||||
];
|
||||
my $r=stripeAppi($api_create_path,$payment_info);
|
||||
my $t->{intent_id}=$r->{id};
|
||||
foreach (@{$r->{payment_method_options}{card}{installments}{available_plans}}){
|
||||
push (@{$t->{available_plans}}, $_) unless ($_->{count}>$max_time);
|
||||
}
|
||||
$c->render(json=>$t);
|
||||
return 0;
|
||||
}
|
||||
|
||||
sub intentConfirm{
|
||||
my $c = shift;
|
||||
my $max_time = 9;
|
||||
unless (defined ($c->req->json)){
|
||||
$c->stash(layout=>'clean');
|
||||
$c->render(template=>'home/not_found', status=>404);
|
||||
return;
|
||||
}
|
||||
my $pii = $c->req->json->{'payment_intent_id'};
|
||||
my $plan = $c->req->json->{'selected_plan'}//0;
|
||||
my $api_confirm_path = "https://api.stripe.com/v1/payment_intents/$pii/confirm";
|
||||
|
||||
unless ($plan==0) {if ($plan->{count} > $max_time) {
|
||||
log("\n\n max time instalment attempt\n\n");
|
||||
$c->render(json=>{'error'=>'max time error'});
|
||||
return 0;
|
||||
}}
|
||||
my $cplan=0;
|
||||
|
||||
$cplan = [
|
||||
'payment_method_options[card][installments][plan][type]'=>'fixed_count',
|
||||
'payment_method_options[card][installments][plan][interval]'=>'month',
|
||||
'payment_method_options[card][installments][plan][count]'=>$plan->{count},
|
||||
]
|
||||
unless ($plan==0);
|
||||
my $r = stripeAppi($api_confirm_path,$cplan);
|
||||
my $data=$c->mproc->intentCreate($c->req->json->{'tid'});
|
||||
my $rtt = {
|
||||
'status'=>$r->{'status'},
|
||||
'plan' => $r->{'payment_method_options'}{'card'}{'installments'}{'plan'},
|
||||
};
|
||||
$c->render(json=>$rtt);
|
||||
return 0;
|
||||
}
|
||||
|
||||
sub stripeAppi{
|
||||
my $sky='sk_test_GXWsfsoxy5336LrSw7SgTXNC00TV9O4Dbq';
|
||||
my ($path,$data) = @_;
|
||||
my $req = POST $path, $data;
|
||||
$req->authorization_basic($sky,'');
|
||||
$req->content_type('application/x-www-form-urlencoded');
|
||||
my $ua = LWP::UserAgent->new;
|
||||
my $res=$ua->request($req);
|
||||
unless ($res->is_success){
|
||||
log("stripe error! path=$path\n data=".Dumper($data)."\n $res->status_line ");
|
||||
return 0;
|
||||
}
|
||||
my $json = JSON->new->utf8;
|
||||
return $json->decode($res->decoded_content);
|
||||
}
|
||||
|
||||
# Admin =======================================================================
|
||||
|
||||
|
||||
sub admin_eventos{
|
||||
my $c=shift;
|
||||
if ( (my $t=$c->param('type') // "") =~/[ecp]/){
|
||||
my $id=$c->param('id');
|
||||
my $req=$c->param('req');
|
||||
if ( $req eq "Eliminar"){
|
||||
$c->dbv->event_del($id) if ($t eq 'e');
|
||||
$c->dbv->course_del($id) if ($t eq 'c');
|
||||
$c->dbv->place_del($id) if ($t eq 'p');
|
||||
}
|
||||
elsif( $req eq "Aceptar"){
|
||||
if($t eq 'e'){
|
||||
my @list=map{$c->param($_)}qw/eplace yini mini dini yend mend dend cost promo pen ecourse eimg een id/;
|
||||
$c->dbv->event_up(@list) if ($id ==0);
|
||||
$c->dbv->event_ch(@list) if ($id >0);
|
||||
}
|
||||
if($t eq 'c'){
|
||||
my @list=map{$c->param($_)}qw/cname csubjects cservices cen id/;
|
||||
$c->dbv->course_up(@list) if ($id ==0);
|
||||
$c->dbv->course_ch(@list) if ($id >0);
|
||||
}
|
||||
if($t eq 'p'){
|
||||
my @list=map{$c->param($_)}qw/pname paddr pobs pto pst pco plat plng pen id/;
|
||||
$c->dbv->place_up(@list) if ($id ==0);
|
||||
$c->dbv->place_ch(@list) if ($id >0);
|
||||
}
|
||||
}
|
||||
$c->redirect_to("/admin/eventos");
|
||||
}
|
||||
|
||||
$c->stash(
|
||||
courses=>$c->dbv->courses,
|
||||
places=>$c->dbv->places,
|
||||
months=>$c->dbv->months,
|
||||
events=>$c->dbv->events,
|
||||
img=>$c->dbv->eimgList,
|
||||
);
|
||||
$c->stash(template=>"home/admin/event");
|
||||
$c->stash(layout=>"admin");
|
||||
}
|
||||
sub admin_tienda{
|
||||
my $c=shift;
|
||||
$c->stash(u=>$c->dbv->user_heads);
|
||||
$c->stash(s=>$c->dbv->store_heads);
|
||||
$c->stash(template=>"home/admin/tienda");
|
||||
$c->stash(layout=>"admin");
|
||||
|
||||
}
|
||||
|
||||
sub admin_json{
|
||||
my $c=shift;
|
||||
my $id = $c->param('id');
|
||||
my $req = $c->param('dreq');
|
||||
my $json = "304";
|
||||
$json = $c->dbv->astore($id) if $req=~/tienda/;
|
||||
$json = $c->dbv->course($id) if $req=~/course/;
|
||||
$json = $c->dbv->place($id) if $req=~/place/;
|
||||
$json = $c->dbv->eventa($id) if $req=~/event/;
|
||||
$c->render(json=>$json);
|
||||
}
|
||||
|
||||
|
||||
#==============================================================================
|
||||
|
||||
1;
|
||||
0
lib/Dojo/Model/Data/admin/tienda/json/qStore.q
Normal file → Executable file
0
lib/Dojo/Model/Data/admin/tienda/json/qStore.q
Normal file → Executable file
0
lib/Dojo/Model/Data/admin/tienda/qStore.q
Normal file → Executable file
0
lib/Dojo/Model/Data/admin/tienda/qStore.q
Normal file → Executable file
@@ -1,10 +1,6 @@
|
||||
|
||||
select distinct
|
||||
concat(mes.nombre,' ',year(evento.fecha_inicio)) as text,
|
||||
date_format(evento.fecha_inicio,'%Y%m') as id
|
||||
from evento
|
||||
inner join mes on month(evento.fecha_inicio)=mes.id
|
||||
where evento.estado=1
|
||||
order by evento.fecha_inicio
|
||||
;
|
||||
|
||||
month(tienda_evento.fecha_inicio) as month,
|
||||
year(tienda_evento.fecha_inicio) as year,
|
||||
date_format(tienda_evento.fecha_inicio,'%Y%m') as id
|
||||
from tienda_evento
|
||||
where estado=1 and estore = 1;
|
||||
|
||||
@@ -1,23 +1,20 @@
|
||||
|
||||
select
|
||||
date_format(evento.fecha_inicio,'%Y%m') as bid,
|
||||
evento.id as eeid,
|
||||
date_format(tienda_evento.fecha_inicio,'%Y%m') as bid,
|
||||
tienda_evento.id as eeid,
|
||||
concat(lugar.municipio,", ",lugar.federativa) as ciudad,
|
||||
concat(lugar.nombre,". ") as lugar,
|
||||
lugar.direccion as dir,
|
||||
case when month(evento.fecha_inicio) = month(evento.fecha_fin)
|
||||
then concat("Del ", day(evento.fecha_inicio)," al ",day(evento.fecha_fin)," de ",mi.nombre)
|
||||
else concat("Del ",day(evento.fecha_inicio)," de ",mi.nombre," al ",
|
||||
day(evento.fecha_fin)," de ", mo.nombre)
|
||||
end as fecha,
|
||||
day(tienda_evento.fecha_inicio) as dini,
|
||||
day(tienda_evento.fecha_fin) as dfin,
|
||||
month(tienda_evento.fecha_inicio) as mini,
|
||||
month(tienda_evento.fecha_fin) as mfin,
|
||||
curso.nombre as nombre,
|
||||
evento.imagen_chica as imagen_chica
|
||||
from evento
|
||||
inner join lugar on evento.lugar_id=lugar.id
|
||||
inner join curso on evento.curso_id=curso.id
|
||||
join mes as mi on mi.id=month(evento.fecha_inicio)
|
||||
join mes as mo on mo.id=month(evento.fecha_fin)
|
||||
where evento.estado=1
|
||||
order by evento.fecha_inicio
|
||||
tienda_evento.imagen_chica as imagen_chica
|
||||
from tienda_evento
|
||||
inner join lugar on tienda_evento.lugar_id=lugar.id
|
||||
inner join curso on tienda_evento.curso_id=curso.id
|
||||
where tienda_evento.estado=1 and tienda_evento.estore=1
|
||||
order by tienda_evento.fecha_inicio
|
||||
;
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
|
||||
select
|
||||
|
||||
curso.nombre as cname,
|
||||
@@ -7,23 +7,20 @@ select
|
||||
lugar.direccion as paddr,
|
||||
lugar.observacion as pobs,
|
||||
lugar.municipio as city,
|
||||
evento.precio as cost,
|
||||
case evento.promo_estado when 1 then coalesce(evento.promocion,"") else "" end as promo,
|
||||
tienda_evento.precio as cost,
|
||||
tienda_evento.spay as spay,
|
||||
case tienda_evento.promo_estado when 1 then coalesce(tienda_evento.promocion,"") else "" end as promo,
|
||||
curso.temario as csubjects,
|
||||
curso.servicios as cservices,
|
||||
|
||||
lugar.nombre as pname,
|
||||
case when month(evento.fecha_inicio) = month(evento.fecha_fin)
|
||||
then concat("Del ", day(evento.fecha_inicio)," al ",day(evento.fecha_fin)," de ",mi.nombre)
|
||||
else concat("Del ",day(evento.fecha_inicio)," de ",mi.nombre," al ",
|
||||
day(evento.fecha_fin)," de ", mo.nombre)
|
||||
end as date
|
||||
|
||||
day(tienda_evento.fecha_inicio) as dini,
|
||||
day(tienda_evento.fecha_fin) as dend,
|
||||
month(tienda_evento.fecha_inicio) as mini,
|
||||
month(tienda_evento.fecha_fin) as mend
|
||||
|
||||
from evento
|
||||
inner join lugar on evento.lugar_id=lugar.id
|
||||
inner join curso on evento.curso_id=curso.id
|
||||
join mes as mi on mi.id=month(evento.fecha_inicio)
|
||||
join mes as mo on mo.id=month(evento.fecha_fin)
|
||||
where evento.estado=1
|
||||
and evento.id = ?
|
||||
from tienda_evento
|
||||
inner join lugar on tienda_evento.lugar_id=lugar.id
|
||||
inner join curso on tienda_evento.curso_id=curso.id
|
||||
where tienda_evento.estado=1
|
||||
and tienda_evento.id = ?
|
||||
;
|
||||
|
||||
30
lib/Dojo/Model/Data/store/qEstore.q
Executable file
30
lib/Dojo/Model/Data/store/qEstore.q
Executable file
@@ -0,0 +1,30 @@
|
||||
select
|
||||
t.id as tid,
|
||||
c.nombre as nombre,
|
||||
c.subnombre as subnombre,
|
||||
c.descripcion as descripcion,
|
||||
c.maestro as maestro,
|
||||
c.imagen_a as cimga,
|
||||
c.imagen_b as cimgb,
|
||||
c.imagen_c as cimgc,
|
||||
day(t.fecha_inicio) as dini,
|
||||
month(t.fecha_inicio) as mini,
|
||||
day(t.fecha_fin) as dfin,
|
||||
month(t.fecha_fin) as mfin,
|
||||
t.precio as precio,
|
||||
t.promocion as promo,
|
||||
t.promo_estado as promo_estado,
|
||||
t.playera_estado as playera_estado,
|
||||
t.cupo as cupo,
|
||||
l.nombre as lnombre,
|
||||
l.federativa as federativa,
|
||||
l.pais as pais,
|
||||
l.municipio as municipio
|
||||
from tienda_evento as t
|
||||
join curso as c on c.id = t.curso_id
|
||||
join lugar as l on l.id = t.lugar_id
|
||||
|
||||
where t.id=? and t.estado =1
|
||||
;
|
||||
|
||||
|
||||
156
lib/Dojo/Model/Vdgproc.pm
Normal file
156
lib/Dojo/Model/Vdgproc.pm
Normal file
@@ -0,0 +1,156 @@
|
||||
package Dojo::Model::Vdgproc; use Mojo::File 'path';
|
||||
use Mojo::JSON qw(decode_json encode_json);
|
||||
use Dojo::Support qw{month_num2txt log dmph} ;
|
||||
use Mojo::Base 'Mojolicious::Controller';
|
||||
|
||||
|
||||
use File::Basename;
|
||||
use Encode qw(decode_utf8 encode_utf8);
|
||||
use Text::Markdown qw{ markdown };
|
||||
use DBI;
|
||||
use Dojo::Conf;
|
||||
|
||||
sub new { bless {}, shift };
|
||||
my $data_path = path('lib/Dojo/Model/Data')->make_path;
|
||||
#just for fun
|
||||
|
||||
|
||||
sub calendar_monthblock {
|
||||
my $r = _read ($data_path->child("cal/q1Block.q")->slurp);
|
||||
map { $_->{fecha}=month_num2txt($_->{month})." ".$_->{year} } @$r;
|
||||
return $r;
|
||||
}
|
||||
|
||||
sub mtxt {
|
||||
my ($di, $mi, $df, $mf)=@_; # dini,mini,dfin,mfin
|
||||
my $txt;
|
||||
if ($mi == $mf){
|
||||
if ($di == $df){ $txt = "$di de ".month_num2txt($mi);}
|
||||
else{ $txt = "Del $di al $df de ".month_num2txt($mi);}
|
||||
}
|
||||
else{
|
||||
$txt = "Del $di de ".month_num2txt($mi)." al $df de ".month_num2txt($mf);
|
||||
}
|
||||
return $txt;
|
||||
}
|
||||
sub calendar_events {
|
||||
my $r = _read ($data_path->child("cal/q3Event.q")->slurp);
|
||||
foreach (@$r) { $_->{fecha} = mtxt( $_->{dini},$_->{mini},$_->{dfin},$_->{mfin}) }
|
||||
return $r;
|
||||
}
|
||||
|
||||
sub event{
|
||||
my ($c,$id)=@_;
|
||||
my $r = shift @{ _read ($data_path->child("event/qEvent.q")->slurp,$id)};
|
||||
$r->{date} = mtxt( $r->{dini},$r->{mini},$r->{dend},$r->{mend});
|
||||
return $r;
|
||||
}
|
||||
|
||||
sub spay {
|
||||
my ($c,$class,$id) = @_;
|
||||
return _read ($data_path->child("/store/qIdStore.q")->slurp,$id)->[0];
|
||||
}
|
||||
|
||||
# 4000004840000008 3, 6, 9, 12, and 18 month installment plans available
|
||||
# "*p4000004840000008
|
||||
# 4242424242424242 No installment plans available.
|
||||
|
||||
#==============================================================================
|
||||
sub store_id {
|
||||
my ($c,$class,$id) = @_;
|
||||
my $r = _read ($data_path->child("/store/qEstore.q")->slurp,$id)->[0];
|
||||
$r->{fecha} = mtxt( $r->{dini},$r->{mini},$r->{dfin},$r->{mfin});
|
||||
return $r;
|
||||
}
|
||||
sub intentCreate{
|
||||
my ($c,$id) = @_;
|
||||
my $q="select t.precio as precio, c.nombre as nombre from tienda_evento as t inner join curso as c on t.curso_id=c.id where t.id = ? ;";
|
||||
return _read ($q,$id)->[0];
|
||||
}
|
||||
sub intentConfirm{
|
||||
my ($c,$id) = @_;
|
||||
my $q="select t.precio as precio, c.nombre as nombre from tienda_evento as t inner join curso as c on t.curso_id=c.id where t.id = ? ;";
|
||||
return _read ($q,$id)->[0];
|
||||
}
|
||||
|
||||
#==============================================================================
|
||||
|
||||
# admin evets
|
||||
sub event_del { return _write("delete from evento where id = ?;",pop);}
|
||||
sub course_del{ return _write("delete from curso where id = ?;",pop); }
|
||||
sub place_del { return _write("delete from lugar where id = ?;",pop); }
|
||||
|
||||
sub event_up{
|
||||
my ($self,@bind)=@_;
|
||||
return _write($data_path->child("/admin/event/add/qEup.q")->slurp,@bind);
|
||||
}
|
||||
sub course_up{
|
||||
my ($self,@bind)=@_;
|
||||
return _write($data_path->child("/admin/event/add/qCup.q")->slurp,@bind);
|
||||
}
|
||||
sub place_up{
|
||||
my ($self,@bind)=@_;
|
||||
return _write($data_path->child("/admin/event/add/qPup.q")->slurp,@bind);
|
||||
}
|
||||
sub event_ch{
|
||||
my ($self,@bind)=@_;
|
||||
return _write($data_path->child("/admin/event/change/qEup.q")->slurp,@bind);
|
||||
}
|
||||
sub course_ch{
|
||||
my ($self,@bind)=@_;
|
||||
return _write($data_path->child("/admin/event/change/qCup.q")->slurp,@bind);
|
||||
}
|
||||
sub place_ch{
|
||||
my ($self,@bind)=@_;
|
||||
return _write($data_path->child("/admin/event/change/qPup.q")->slurp,@bind);
|
||||
}
|
||||
|
||||
#==============================================================================
|
||||
|
||||
#ayudas =====================================
|
||||
sub tst{
|
||||
|
||||
my $c=shift;
|
||||
my $d=$c->param('n');
|
||||
log("------log-------");
|
||||
log("$d");
|
||||
log("------log-------");
|
||||
return 0;
|
||||
}
|
||||
|
||||
sub _read{
|
||||
my ($q,@bind)=@_;
|
||||
my @empty;
|
||||
my $dbh = DBI->connect("DBI:mysql:".Dojo::Conf::VDGPROCDB.":".Dojo::Conf::VDGPROCDB_H,Dojo::Conf::VDGPROCDB_UR,Dojo::Conf::VDGPROCDB_URP, {mysql_enable_utf8 => 1});
|
||||
return \@empty unless($dbh);
|
||||
my $h=$dbh->selectall_arrayref($q,{ Slice => {} },@bind)//"error";
|
||||
$dbh->disconnect();
|
||||
#((col1=>d1,col2=>d1),(col1=>d2,col2=>d2))
|
||||
return $h;
|
||||
}
|
||||
|
||||
sub _write{
|
||||
my ($q,@bind)=@_;
|
||||
my (@empty);
|
||||
my $dbh = DBI->connect("DBI:mysql:".Dojo::Conf::VDGPROCDB.":".Dojo::Conf::VDGPROCDB_H,Dojo::Conf::VDGPROCDB_UW,Dojo::Conf::VDGPROCDB_UWP,{mysql_enable_utf8 => 1} );
|
||||
return 0 unless($dbh);
|
||||
my $h=$dbh->do($q,{ Slice => {} },@bind)//"error";
|
||||
$dbh->disconnect();
|
||||
log("db write: $h");
|
||||
return $h;
|
||||
}
|
||||
|
||||
sub load_md{
|
||||
return "" unless
|
||||
my $text = path(shift)->slurp;
|
||||
return markdown( decode_utf8($text) );
|
||||
}
|
||||
|
||||
sub load_txt{
|
||||
return "" unless
|
||||
my $text = path(shift)->slurp;
|
||||
return decode_utf8($text);
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
@@ -116,7 +116,7 @@ sub contact{
|
||||
my $q="insert into entrada (nombre,correo,pagina,texto,fecha) values(?,?,?,?,now() )" ;
|
||||
my @a=@_;
|
||||
#simple method to ignore spam
|
||||
return _writemsg($q,@a) unless $a[3]=~m/http|website|\<a|feedback|forms|suscribe|advertise|newsletter|promotion|Madam/;
|
||||
return _writemsg($q,@a) unless $a[3]=~m/http|website|\<a|feedback|forms|suscribe|advertise|newsletter|promotion|Madam|Sir/;
|
||||
return 0;
|
||||
}
|
||||
#==============================================================================
|
||||
|
||||
@@ -2,7 +2,7 @@ package Dojo::Support;
|
||||
use strict;
|
||||
use warnings;
|
||||
use Exporter 'import';
|
||||
our @EXPORT = qw/ log dmph merge_hash load_module get_names /;
|
||||
our @EXPORT = qw/ commify month_num2txt log dmph merge_hash load_module get_names /;
|
||||
use Mojo::Base 'Mojolicious';
|
||||
|
||||
use File::Basename;
|
||||
@@ -39,6 +39,17 @@ sub merge_hash{
|
||||
}
|
||||
return $h;
|
||||
}
|
||||
sub month_num2txt{
|
||||
return ("enero febrero marzo abril mayo junio julio agosto septiembre octubre noviembre diciembre" =~ m/\w+/g)[shift (@_) -1];
|
||||
}
|
||||
|
||||
|
||||
#put comas on price numbers
|
||||
sub commify {
|
||||
my $text = reverse $_[0];
|
||||
$text =~ s/(\d\d\d)(?=\d)(?!\d*\.)/$1,/g;
|
||||
return scalar reverse $text;
|
||||
}
|
||||
|
||||
sub load_module{
|
||||
my $dir=shift;
|
||||
|
||||
Reference in New Issue
Block a user