ok
Signed-off-by: Tomasz Sidoruk <tomsid@st.amu.edu.pl>
This commit is contained in:
parent
752055b95f
commit
458792a3fa
@ -14,4 +14,4 @@ serde = "*"
|
|||||||
serde_derive = "*"
|
serde_derive = "*"
|
||||||
bcrypt = "0.12"
|
bcrypt = "0.12"
|
||||||
rand = "0.3.0"
|
rand = "0.3.0"
|
||||||
|
lettre = "0.10.1"
|
@ -1,3 +1,5 @@
|
|||||||
|
use lettre::transport::smtp::authentication::Credentials;
|
||||||
|
use lettre::{Message, SmtpTransport, Transport};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use serde_derive::{Serialize, Deserialize};
|
use serde_derive::{Serialize, Deserialize};
|
||||||
use mysql::*;
|
use mysql::*;
|
||||||
@ -9,7 +11,6 @@
|
|||||||
use bcrypt::{DEFAULT_COST, hash, verify};
|
use bcrypt::{DEFAULT_COST, hash, verify};
|
||||||
use rand::{OsRng, Rng};
|
use rand::{OsRng, Rng};
|
||||||
use serde_json::Map;
|
use serde_json::Map;
|
||||||
use std::thread;
|
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
use tokio::time::sleep;
|
use tokio::time::sleep;
|
||||||
|
|
||||||
@ -29,6 +30,13 @@
|
|||||||
score: String,
|
score: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize)]
|
||||||
|
struct pendingApprovals {
|
||||||
|
id: i32,
|
||||||
|
inviter: i32,
|
||||||
|
tournamnet: String,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
struct User {
|
struct User {
|
||||||
id: i32,
|
id: i32,
|
||||||
@ -67,8 +75,10 @@
|
|||||||
tournamentid: String,
|
tournamentid: String,
|
||||||
paymenttype: String,
|
paymenttype: String,
|
||||||
paymentstatus: String,
|
paymentstatus: String,
|
||||||
|
paymenttype2: String,
|
||||||
|
paymentstatus2: String,
|
||||||
approval: String,
|
approval: String,
|
||||||
partner: i32
|
partner: i32,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
@ -135,9 +145,12 @@
|
|||||||
visibility: String,
|
visibility: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
thread_local!(static POOL: Pool = Pool::new(Opts::from_url("mysql://inz:****!@*****:3306/inz").unwrap()).unwrap());
|
thread_local!(static POOL: Pool = Pool::new(Opts::from_url("mysql://*****").unwrap()).unwrap());
|
||||||
|
|
||||||
async fn hello_world(req: Request<Body>) -> Result<Response<Body>> {
|
async fn hello_world(req: Request<Body>) -> Result<Response<Body>> {
|
||||||
|
let smtp_server = "****";
|
||||||
|
let smtp_username = "****";
|
||||||
|
let smtp_password = "****";
|
||||||
let mut response = Response::new(Body::empty());
|
let mut response = Response::new(Body::empty());
|
||||||
response.headers_mut().insert("Access-Control-Allow-Origin", "*".parse().unwrap());
|
response.headers_mut().insert("Access-Control-Allow-Origin", "*".parse().unwrap());
|
||||||
response.headers_mut().insert("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE".parse().unwrap());
|
response.headers_mut().insert("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE".parse().unwrap());
|
||||||
@ -166,7 +179,6 @@
|
|||||||
);
|
);
|
||||||
*response.body_mut() = serde_json::to_string(&res.unwrap().get(0)).unwrap().into();
|
*response.body_mut() = serde_json::to_string(&res.unwrap().get(0)).unwrap().into();
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
(&Method::GET, "/proposals/pending") => {
|
(&Method::GET, "/proposals/pending") => {
|
||||||
if req.headers().contains_key("Authorization") {
|
if req.headers().contains_key("Authorization") {
|
||||||
@ -643,7 +655,7 @@
|
|||||||
let mut row4: Option<Result<Row>> = None;
|
let mut row4: Option<Result<Row>> = None;
|
||||||
POOL.with(|poola| {
|
POOL.with(|poola| {
|
||||||
let mut con = poola.get_conn().unwrap();
|
let mut con = poola.get_conn().unwrap();
|
||||||
let mut result = con.exec_iter("Select id from registrations where id= ? and paymentstatus = 'DONE' and tournamentid =?", (&s.get("inB"),&tournamentid )).unwrap();
|
let mut result = con.exec_iter("Select id from registrations where id= ? and informed = 1 and tournamentid =?", (&s.get("inB"), &tournamentid)).unwrap();
|
||||||
let mut it = result.iter().unwrap();
|
let mut it = result.iter().unwrap();
|
||||||
row4 = it.next();
|
row4 = it.next();
|
||||||
});
|
});
|
||||||
@ -673,7 +685,7 @@
|
|||||||
let mut row4: Option<Result<Row>> = None;
|
let mut row4: Option<Result<Row>> = None;
|
||||||
POOL.with(|poola| {
|
POOL.with(|poola| {
|
||||||
let mut con = poola.get_conn().unwrap();
|
let mut con = poola.get_conn().unwrap();
|
||||||
let mut result = con.exec_iter("Select id from registrations where id= ? and paymentstatus = 'DONE' and tournamentid=?", (&s.get("inA"),&tournamentid )).unwrap();
|
let mut result = con.exec_iter("Select id from registrations where id= ? and informed = 1 and tournamentid=?", (&s.get("inA"), &tournamentid)).unwrap();
|
||||||
let mut it = result.iter().unwrap();
|
let mut it = result.iter().unwrap();
|
||||||
row4 = it.next();
|
row4 = it.next();
|
||||||
});
|
});
|
||||||
@ -978,17 +990,93 @@
|
|||||||
let role: String = urow.get(1).unwrap();
|
let role: String = urow.get(1).unwrap();
|
||||||
if role == "2" {
|
if role == "2" {
|
||||||
let mut conn1 = poola.get_conn().unwrap();
|
let mut conn1 = poola.get_conn().unwrap();
|
||||||
let mut result1 = conn1.exec_iter("Select userid from registrations where id = ?", (&s.get("id"), )).unwrap();
|
let mut result1 = conn1.exec_iter("Select userid,approval,partnerAcceptance,(Select mail from users where users.id = userid),(Select mail from users where users.id = partner) from registrations where id = ?", (&s.get("id"), )).unwrap();
|
||||||
let mut it1 = result1.iter().unwrap();
|
let mut it1 = result1.iter().unwrap();
|
||||||
let row1 = it1.next();
|
let row1 = it1.next();
|
||||||
let urow1 = row1.unwrap().unwrap();
|
let urow1 = row1.unwrap().unwrap();
|
||||||
let userid: i32 = urow1.get(0).unwrap();
|
let userid: i32 = urow1.get(0).unwrap();
|
||||||
|
let approval: String = urow1.get(1).unwrap();
|
||||||
|
let partnerAcceptance: i32 = urow1.get(2).unwrap();
|
||||||
|
let usermail: String = urow1.get(3).unwrap();
|
||||||
|
let partnermail: String = urow1.get(4).unwrap();
|
||||||
if userid != id {
|
if userid != id {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if approval == "0" && partnerAcceptance == 1 {
|
||||||
poola.get_conn().unwrap().exec_drop("Update registrations set approval ='1' where id = ?", (&s.get("id"), )).unwrap();
|
poola.get_conn().unwrap().exec_drop("Update registrations set approval ='1' where id = ?", (&s.get("id"), )).unwrap();
|
||||||
|
let email = Message::builder()
|
||||||
|
.from(("NoBody <".to_owned()+smtp_username+">").parse().unwrap())
|
||||||
|
.to(("Yuin <".to_owned()+&usermail+">").parse().unwrap())
|
||||||
|
.subject("your registration has been accepted")
|
||||||
|
.body(String::from("now is time to pay <put your url here>")+s.get("id").unwrap())
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
let creds = Credentials::new(smtp_username.to_string(), smtp_password.to_string());
|
||||||
|
|
||||||
|
let mailer = SmtpTransport::relay(smtp_server)
|
||||||
|
.unwrap()
|
||||||
|
.credentials(creds)
|
||||||
|
.build();
|
||||||
|
match mailer.send(&email) {
|
||||||
|
Ok(_) => { },
|
||||||
|
Err(e) => panic!("Could not send email: {:?}", e),
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
let email2 = Message::builder()
|
||||||
|
.from(("NoBody <".to_owned()+smtp_username+">").parse().unwrap())
|
||||||
|
.to(("Yuin <".to_owned()+&partnermail+">").parse().unwrap())
|
||||||
|
.subject("your registration has been accepted")
|
||||||
|
.body(String::from("now is time to pay <put your url here>")+s.get("id").unwrap())
|
||||||
|
.unwrap();
|
||||||
|
match mailer.send(&email2) {
|
||||||
|
Ok(_) => { },
|
||||||
|
Err(e) => panic!("Could not send email: {:?}", e),
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
|
let mut conn1 = poola.get_conn().unwrap();
|
||||||
|
let mut result1 = conn1.exec_iter("Select userid,approval,partnerAcceptance,(Select mail from users where users.id = userid),(Select mail from users where users.id = partner) from registrations where id = ?", (&s.get("id"), )).unwrap();
|
||||||
|
let mut it1 = result1.iter().unwrap();
|
||||||
|
let row1 = it1.next();
|
||||||
|
let urow1 = row1.unwrap().unwrap();
|
||||||
|
let userid: i32 = urow1.get(0).unwrap();
|
||||||
|
let approval: String = urow1.get(1).unwrap();
|
||||||
|
let partnerAcceptance: i32 = urow1.get(2).unwrap();
|
||||||
|
let usermail: String = urow1.get(3).unwrap();
|
||||||
|
let partnermail: String = urow1.get(4).unwrap();
|
||||||
|
if approval == "0" && partnerAcceptance == 1 {
|
||||||
poola.get_conn().unwrap().exec_drop("Update registrations set approval ='1' where id = ?", (&s.get("id"), )).unwrap();
|
poola.get_conn().unwrap().exec_drop("Update registrations set approval ='1' where id = ?", (&s.get("id"), )).unwrap();
|
||||||
|
let email = Message::builder()
|
||||||
|
.from(("NoBody <".to_owned()+smtp_username+">").parse().unwrap())
|
||||||
|
.to(("Yuin <".to_owned()+&usermail+">").parse().unwrap())
|
||||||
|
.subject("your registration has been accepted")
|
||||||
|
.body(String::from("now is time to pay <put your url here>")+s.get("id").unwrap())
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
let creds = Credentials::new(smtp_username.to_string(), smtp_password.to_string());
|
||||||
|
|
||||||
|
let mailer = SmtpTransport::relay(smtp_server)
|
||||||
|
.unwrap()
|
||||||
|
.credentials(creds)
|
||||||
|
.build();
|
||||||
|
match mailer.send(&email) {
|
||||||
|
Ok(_) => { },
|
||||||
|
Err(e) => panic!("Could not send email: {:?}", e),
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
let email2 = Message::builder()
|
||||||
|
.from(("NoBody <".to_owned()+smtp_username+">").parse().unwrap())
|
||||||
|
.to(("Yuin <".to_owned()+&partnermail+">").parse().unwrap())
|
||||||
|
.subject("your registration has been accepted")
|
||||||
|
.body(String::from("now is time to pay <put your url here>")+s.get("id").unwrap())
|
||||||
|
.unwrap();
|
||||||
|
match mailer.send(&email2) {
|
||||||
|
Ok(_) => { },
|
||||||
|
Err(e) => panic!("Could not send email: {:?}", e),
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -1029,9 +1117,9 @@
|
|||||||
if role == "1" {
|
if role == "1" {
|
||||||
let res = poola.get_conn().unwrap()
|
let res = poola.get_conn().unwrap()
|
||||||
.exec_map(
|
.exec_map(
|
||||||
"SELECT `registrations`.`id`,`registrations`.`userid`,`registrations`.`tournamentid`,`registrations`.`paymenttype`,`registrations`.`paymentstatus`,`registrations`.`approval`,`registrations`.`partner` FROM `inz`.`registrations` where tournamentid= ? and (userid=? or partner =?);", (&val, id, id),
|
"SELECT `registrations`.`id`,`registrations`.`userid`,`registrations`.`tournamentid`,`registrations`.`paymenttype`,`registrations`.`paymentstatus`,`registrations`.`paymenttype2`,`registrations`.`paymentstatus2`,`registrations`.`approval`,`registrations`.`partner` FROM `inz`.`registrations` where tournamentid= ? and (userid=? or partner =?);", (&val, id, id),
|
||||||
|(id, userid, tournamentid, paymenttype, paymentstatus, approval, partner)| {
|
|(id, userid, tournamentid, paymenttype, paymentstatus,paymenttype2, paymentstatus2, approval, partner)| {
|
||||||
Registration { id, userid, tournamentid, paymenttype, paymentstatus, approval, partner }
|
Registration { id, userid, tournamentid, paymenttype, paymentstatus,paymenttype2, paymentstatus2, approval, partner }
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
*response.body_mut() = serde_json::to_string(&res.unwrap()).unwrap().into();
|
*response.body_mut() = serde_json::to_string(&res.unwrap()).unwrap().into();
|
||||||
@ -1046,9 +1134,9 @@
|
|||||||
if userid != id {
|
if userid != id {
|
||||||
let res = poola.get_conn().unwrap()
|
let res = poola.get_conn().unwrap()
|
||||||
.exec_map(
|
.exec_map(
|
||||||
"SELECT `registrations`.`id`,`registrations`.`userid`,`registrations`.`tournamentid`,`registrations`.`paymenttype`,`registrations`.`paymentstatus`,`registrations`.`approval`,`registrations`.`partner` FROM `inz`.`registrations` where tournamentid= ? and (userid=? or partner =?);", (&val, id, id),
|
"SELECT `registrations`.`id`,`registrations`.`userid`,`registrations`.`tournamentid`,`registrations`.`paymenttype`,`registrations`.`paymentstatus`,`registrations`.`paymenttype2`,`registrations`.`paymentstatus2`,`registrations`.`approval`,`registrations`.`partner` FROM `inz`.`registrations` where tournamentid= ? and (userid=? or partner =?);", (&val, id, id),
|
||||||
|(id, userid, tournamentid, paymenttype, paymentstatus, approval, partner)| {
|
|(id, userid, tournamentid, paymenttype, paymentstatus,paymenttype2, paymentstatus2, approval, partner)| {
|
||||||
Registration { id, userid, tournamentid, paymenttype, paymentstatus, approval, partner }
|
Registration { id, userid, tournamentid, paymenttype, paymentstatus,paymenttype2, paymentstatus2, approval, partner }
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
*response.body_mut() = serde_json::to_string(&res.unwrap()).unwrap().into();
|
*response.body_mut() = serde_json::to_string(&res.unwrap()).unwrap().into();
|
||||||
@ -1058,18 +1146,18 @@
|
|||||||
|
|
||||||
let res = poola.get_conn().unwrap()
|
let res = poola.get_conn().unwrap()
|
||||||
.exec_map(
|
.exec_map(
|
||||||
"SELECT `registrations`.`id`,`registrations`.`userid`,`registrations`.`tournamentid`,`registrations`.`paymenttype`,`registrations`.`paymentstatus`,`registrations`.`approval`,`registrations`.`partner` FROM `inz`.`registrations` where tournamentid= ?;", (&val, ),
|
"SELECT `registrations`.`id`,`registrations`.`userid`,`registrations`.`tournamentid`,`registrations`.`paymenttype`,`registrations`.`paymentstatus`,`registrations`.`paymenttype2`,`registrations`.`paymentstatus2`,`registrations`.`approval`,`registrations`.`partner` FROM `inz`.`registrations` where tournamentid= ?;", (&val, ),
|
||||||
|(id, userid, tournamentid, paymenttype, paymentstatus, approval, partner)| {
|
|(id, userid, tournamentid, paymenttype, paymentstatus,paymenttype2, paymentstatus2, approval, partner)| {
|
||||||
Registration { id, userid, tournamentid, paymenttype, paymentstatus, approval, partner }
|
Registration { id, userid, tournamentid, paymenttype, paymentstatus,paymenttype2, paymentstatus2, approval, partner }
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
*response.body_mut() = serde_json::to_string(&res.unwrap()).unwrap().into();
|
*response.body_mut() = serde_json::to_string(&res.unwrap()).unwrap().into();
|
||||||
} else {
|
} else {
|
||||||
let res = poola.get_conn().unwrap()
|
let res = poola.get_conn().unwrap()
|
||||||
.exec_map(
|
.exec_map(
|
||||||
"SELECT `registrations`.`id`,`registrations`.`userid`,`registrations`.`tournamentid`,`registrations`.`paymenttype`,`registrations`.`paymentstatus`,`registrations`.`approval` ,`registrations`.`partner` FROM `inz`.`registrations` where tournamentid= ?;", (&val, ),
|
"SELECT `registrations`.`id`,`registrations`.`userid`,`registrations`.`tournamentid`,`registrations`.`paymenttype`,`registrations`.`paymentstatus`,`registrations`.`paymenttype2`,`registrations`.`paymentstatus2`,`registrations`.`approval` ,`registrations`.`partner` FROM `inz`.`registrations` where tournamentid= ?;", (&val, ),
|
||||||
|(id, userid, tournamentid, paymenttype, paymentstatus, approval, partner)| {
|
|(id, userid, tournamentid, paymenttype, paymentstatus,paymenttype2, paymentstatus2, approval, partner)| {
|
||||||
Registration { id, userid, tournamentid, paymenttype, paymentstatus, approval, partner }
|
Registration { id, userid, tournamentid, paymenttype, paymentstatus,paymenttype2, paymentstatus2, approval, partner }
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
*response.body_mut() = serde_json::to_string(&res.unwrap()).unwrap().into();
|
*response.body_mut() = serde_json::to_string(&res.unwrap()).unwrap().into();
|
||||||
@ -1481,7 +1569,7 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let mut con2 = poola.get_conn().unwrap();
|
let mut con2 = poola.get_conn().unwrap();
|
||||||
let mut result2 = con2.exec_iter("Select paymentstatus, paymentreference, userid, paymenttype from registrations where id =?;", (&val, )).unwrap();
|
let mut result2 = con2.exec_iter("Select paymentstatus, paymentreference, userid, paymenttype, paymentstatus2, paymentreference2, paymenttype2, partner from registrations where id =?;", (&val, )).unwrap();
|
||||||
let mut it2 = result2.iter().unwrap();
|
let mut it2 = result2.iter().unwrap();
|
||||||
row2 = it2.next();
|
row2 = it2.next();
|
||||||
});
|
});
|
||||||
@ -1497,42 +1585,47 @@
|
|||||||
let paymentreference: String = urow2.get(1).unwrap();
|
let paymentreference: String = urow2.get(1).unwrap();
|
||||||
let userid: i32 = urow2.get(2).unwrap();
|
let userid: i32 = urow2.get(2).unwrap();
|
||||||
let paymenttype: String = urow2.get(3).unwrap();
|
let paymenttype: String = urow2.get(3).unwrap();
|
||||||
|
let paymentstatus2: String = urow2.get(4).unwrap();
|
||||||
|
let paymentreference2: String = urow2.get(5).unwrap();
|
||||||
|
let paymenttype2: String = urow2.get(6).unwrap();
|
||||||
|
let partner: i32 = urow2.get(7).unwrap();
|
||||||
if role == "1" || role == "2" {
|
if role == "1" || role == "2" {
|
||||||
if userid != id {
|
if userid != id && partner != id {
|
||||||
*response.status_mut() = StatusCode::NOT_FOUND;
|
*response.status_mut() = StatusCode::NOT_FOUND;
|
||||||
return Ok(response);
|
return Ok(response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
let mut respb= String::from("");
|
||||||
if paymentstatus == "PENDING" && paymenttype != "cash" {
|
if paymentstatus == "PENDING" && paymenttype != "cash" {
|
||||||
if paymenttype == "btc" {
|
if paymenttype == "btc" {
|
||||||
let client = Client::new();
|
let client = Client::new();
|
||||||
let req = Request::builder()
|
let req = Request::builder()
|
||||||
.method(Method::GET)
|
.method(Method::GET)
|
||||||
.uri("http://10.1.6.101:8082/api/v1/stores/****/invoices/".to_owned() + &paymentreference)
|
.uri("http://****/api/v1/stores/****/invoices/".to_owned() + &paymentreference)
|
||||||
.header("content-type", "application/json")
|
.header("content-type", "application/json")
|
||||||
.header("Authorization", "token *****").body(Body::empty()).unwrap();
|
.header("Authorization", "token *****").body(Body::empty()).unwrap();
|
||||||
let resp = client.request(req).await.unwrap();
|
let resp = client.request(req).await.unwrap();
|
||||||
let parsed: serde_json::Value = serde_json::from_slice(hyper::body::to_bytes(resp.into_body()).await.unwrap().as_ref()).unwrap();
|
let parsed: serde_json::Value = serde_json::from_slice(hyper::body::to_bytes(resp.into_body()).await.unwrap().as_ref()).unwrap();
|
||||||
let stat: String = parsed.get("status").unwrap().as_str().unwrap().into();
|
let stat: String = parsed.get("status").unwrap().as_str().unwrap().into();
|
||||||
if stat == "New" {
|
if stat == "New" {
|
||||||
*response.body_mut() = Body::from("{\"status\":\"PENDING\"}");
|
respb = "{\"status\":\"PENDING\"".to_string();
|
||||||
} else {
|
} else {
|
||||||
if stat == "Settled" {
|
if stat == "Settled" {
|
||||||
*response.body_mut() = Body::from("{\"status\":\"DONE\"}");
|
respb ="{\"status\":\"DONE\"".to_string();
|
||||||
POOL.with(|poola| {
|
POOL.with(|poola| {
|
||||||
poola.get_conn().unwrap().exec_drop("Update registrations set paymentstatus ='DONE' where id = ?", (val, )).unwrap();
|
poola.get_conn().unwrap().exec_drop("Update registrations set paymentstatus ='DONE' where id = ?", (val, )).unwrap();
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
if stat == "Processing" {
|
if stat == "Processing" {
|
||||||
*response.body_mut() = Body::from("{\"status\":\"PROCESSING\"}");
|
respb="{\"status\":\"PROCESSING\"".to_string();
|
||||||
} else {
|
} else {
|
||||||
if stat == "Expired" {
|
if stat == "Expired" {
|
||||||
*response.body_mut() = Body::from("{\"status\":\"EXPIRED\"}");
|
respb="{\"status\":\"EXPIRED\"".to_string();
|
||||||
POOL.with(|poola| {
|
POOL.with(|poola| {
|
||||||
poola.get_conn().unwrap().exec_drop("Update registrations set paymentstatus ='EXPIRED' where id = ?", (val, )).unwrap();
|
poola.get_conn().unwrap().exec_drop("Update registrations set paymentstatus ='EXPIRED' where id = ?", (val, )).unwrap();
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
*response.body_mut() = Body::from("{\"status\":\"".to_owned() + &stat + "\"}");
|
respb="{\"status\":\"".to_owned() + &stat + "\"";
|
||||||
POOL.with(|poola| {
|
POOL.with(|poola| {
|
||||||
poola.get_conn().unwrap().exec_drop("Update registrations set paymentstatus =? where id = ?", (stat, val)).unwrap();
|
poola.get_conn().unwrap().exec_drop("Update registrations set paymentstatus =? where id = ?", (stat, val)).unwrap();
|
||||||
});
|
});
|
||||||
@ -1542,8 +1635,51 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
*response.body_mut() = Body::from("{\"status\":\"".to_owned() + &paymentstatus + "\"}");
|
respb="{\"status\":\"".to_owned() + &paymentstatus + "\"";
|
||||||
}
|
}
|
||||||
|
if paymentstatus2 == "PENDING" && paymenttype2 != "cash" {
|
||||||
|
if paymenttype2 == "btc" {
|
||||||
|
let client = Client::new();
|
||||||
|
let req = Request::builder()
|
||||||
|
.method(Method::GET)
|
||||||
|
.uri("http://****/api/v1/stores/****/invoices/".to_owned() + &paymentreference2)
|
||||||
|
.header("content-type", "application/json")
|
||||||
|
.header("Authorization", "token ****").body(Body::empty()).unwrap();
|
||||||
|
let resp = client.request(req).await.unwrap();
|
||||||
|
let parsed: serde_json::Value = serde_json::from_slice(hyper::body::to_bytes(resp.into_body()).await.unwrap().as_ref()).unwrap();
|
||||||
|
let stat: String = parsed.get("status").unwrap().as_str().unwrap().into();
|
||||||
|
if stat == "New" {
|
||||||
|
respb += ",\"status2\":\"PENDING\"}";
|
||||||
|
} else {
|
||||||
|
if stat == "Settled" {
|
||||||
|
respb +=",\"status2\":\"DONE\"}";
|
||||||
|
POOL.with(|poola| {
|
||||||
|
poola.get_conn().unwrap().exec_drop("Update registrations set paymentstatus2 ='DONE' where id = ?", (val, )).unwrap();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
if stat == "Processing" {
|
||||||
|
respb+=",\"status2\":\"PROCESSING\"}";
|
||||||
|
} else {
|
||||||
|
if stat == "Expired" {
|
||||||
|
respb+=",\"status2\":\"EXPIRED\"}";
|
||||||
|
POOL.with(|poola| {
|
||||||
|
poola.get_conn().unwrap().exec_drop("Update registrations set paymentstatus2 ='EXPIRED' where id = ?", (val, )).unwrap();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
respb+= &*(",\"status2\":\"".to_owned() + &stat + "\"}");
|
||||||
|
POOL.with(|poola| {
|
||||||
|
poola.get_conn().unwrap().exec_drop("Update registrations set paymentstatus2 =? where id = ?", (stat, val)).unwrap();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
respb+= &*(",\"status2\":\"".to_owned() + &paymentstatus + "\"}");
|
||||||
|
}
|
||||||
|
|
||||||
|
*response.body_mut() = respb.into();
|
||||||
} else {
|
} else {
|
||||||
*response.status_mut() = StatusCode::UNAUTHORIZED;
|
*response.status_mut() = StatusCode::UNAUTHORIZED;
|
||||||
}
|
}
|
||||||
@ -1562,7 +1698,7 @@
|
|||||||
let mut row: Option<Result<Row>> = None;
|
let mut row: Option<Result<Row>> = None;
|
||||||
let mut row2: Option<Result<Row>> = None;
|
let mut row2: Option<Result<Row>> = None;
|
||||||
let mut row3: Option<Result<Row>> = None;
|
let mut row3: Option<Result<Row>> = None;
|
||||||
if s.contains_key("tournament") && s.contains_key("paymentmethod") && s.contains_key("partner") {
|
if s.contains_key("tournament") && s.contains_key("partner") {
|
||||||
let tournament = s.get("tournament").unwrap().to_string();
|
let tournament = s.get("tournament").unwrap().to_string();
|
||||||
let partner = s.get("partner").unwrap().to_string();
|
let partner = s.get("partner").unwrap().to_string();
|
||||||
|
|
||||||
@ -1598,38 +1734,200 @@
|
|||||||
let urow = row.unwrap().unwrap();
|
let urow = row.unwrap().unwrap();
|
||||||
let urow2 = row2.unwrap().unwrap();
|
let urow2 = row2.unwrap().unwrap();
|
||||||
let id: i32 = urow.get(0).unwrap();
|
let id: i32 = urow.get(0).unwrap();
|
||||||
let fee: i32 = urow2.get(1).unwrap();
|
POOL.with(|poola| {
|
||||||
|
let nid = "{\"id\":\"".to_owned() + &poola.get_conn().unwrap().exec_iter("INSERT INTO `inz`.`registrations`(`userid`,`tournamentid`,`paymenttype`,`paymentstatus`,`approval`,`paymentreference`,`partner`,`partnerAcceptance`,`paymenttype2`,`paymentstatus2`,`paymentreference2`,`informed`)VALUES(?,?,'','NOTSTARTED',0,'',?,0,'','NOTSTARTED','',0);", (id, tournament, partner)).unwrap().last_insert_id().unwrap().to_string() + "\"}";
|
||||||
|
*response.body_mut() = nid.into();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
*response.body_mut() = "{\"error\":\"not all fields\"}".into();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
*response.status_mut() = StatusCode::UNAUTHORIZED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
(&Method::POST, "/payForRegistration") => {
|
||||||
|
if req.headers().contains_key("Authorization") {
|
||||||
|
let mut tmp = req.headers().get("Authorization").unwrap().to_str().unwrap().split(" ");
|
||||||
|
let aa = tmp.next().unwrap().to_string();
|
||||||
|
|
||||||
|
let token = tmp.next().unwrap().to_string();
|
||||||
|
let byte_stream = hyper::body::to_bytes(req).await.unwrap();
|
||||||
|
let s: HashMap<String, String> = serde_json::from_slice(&byte_stream).unwrap();
|
||||||
|
if !s.contains_key("id")||!s.contains_key("paymentmethod") {
|
||||||
|
*response.body_mut() = "id and paymentmethod is required".into();
|
||||||
|
}else {
|
||||||
let paymentmethod = s.get("paymentmethod").unwrap().to_string();
|
let paymentmethod = s.get("paymentmethod").unwrap().to_string();
|
||||||
|
let rid = s.get("id").unwrap().to_string();
|
||||||
|
let mut isowner = false;
|
||||||
|
let mut isinvited = false;
|
||||||
|
let mut fee = -1;
|
||||||
|
POOL.with(|poola| {
|
||||||
|
let mut con = poola.get_conn().unwrap();
|
||||||
|
if aa != "Bearer" {
|
||||||
|
*response.status_mut() = StatusCode::UNAUTHORIZED;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut result = con.exec_iter("Select id from users where id =(SELECT user FROM `inz`.`sessions` where token = ? and expire > NOW());", (&token, )).unwrap();
|
||||||
|
let mut it = result.iter().unwrap();
|
||||||
|
let row = it.next();
|
||||||
|
if row.is_none() {
|
||||||
|
*response.status_mut() = StatusCode::FORBIDDEN;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let uid: i32 = row.unwrap().unwrap().get(0).unwrap();
|
||||||
|
let mut con2 = poola.get_conn().unwrap();
|
||||||
|
let mut result2 = con2.exec_iter("SELECT id FROM inz.registrations where userid=? and id = ? and approval =1", (&uid, &rid)).unwrap();
|
||||||
|
let mut it2 = result2.iter().unwrap();
|
||||||
|
let row2 = it2.next();
|
||||||
|
if !row2.is_none() {
|
||||||
|
isowner = true;
|
||||||
|
}
|
||||||
|
let mut con3 = poola.get_conn().unwrap();
|
||||||
|
let mut result3 = con3.exec_iter("SELECT id FROM inz.registrations where partner=? and id = ? and approval =1", (&uid, &rid)).unwrap();
|
||||||
|
let mut it3 = result3.iter().unwrap();
|
||||||
|
let row3 = it3.next();
|
||||||
|
if !row3.is_none() {
|
||||||
|
isinvited = true;
|
||||||
|
}
|
||||||
|
if isowner == false && isinvited == false {
|
||||||
|
*response.status_mut() = StatusCode::BAD_REQUEST;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let mut conn4 = poola.get_conn().unwrap();
|
||||||
|
let mut result4 = conn4.exec_iter("SELECT entryFee FROM inz.tournaments where id = (SELECT tournamentid FROM inz.registrations where id = ?)", (&rid, )).unwrap();
|
||||||
|
let mut it4 = result4.iter().unwrap();
|
||||||
|
let row4 = it4.next();
|
||||||
|
fee = row4.unwrap().unwrap().get(0).unwrap();
|
||||||
|
});
|
||||||
if paymentmethod == "btc" {
|
if paymentmethod == "btc" {
|
||||||
let client = Client::new();
|
let client = Client::new();
|
||||||
let req = Request::builder()
|
let req = Request::builder()
|
||||||
.method(Method::POST)
|
.method(Method::POST)
|
||||||
.uri("http://10.1.6.101:8082/api/v1/stores/*****/invoices")
|
.uri("http://****/api/v1/stores/*****/invoices")
|
||||||
.header("content-type", "application/json")
|
.header("content-type", "application/json")
|
||||||
.header("X-Forwarded-Host", "btcpay.dragonmaster.pl")
|
.header("X-Forwarded-Host", "btcpay.dragonmaster.pl")
|
||||||
.header("X-Forwarded-Proto", "https")
|
.header("X-Forwarded-Proto", "https")
|
||||||
.header("Authorization", "token *****")
|
.header("Authorization", "token ****")
|
||||||
.body(Body::from("{\"metadata\": {\"orderId\": \"id123\"},\"checkout\": {\"speedPolicy\": \"LowMediumSpeed\",\"redirectURL\":\"https://example.com\"},\"amount\": \"".to_owned() + &*fee.to_string() + "\",\"currency\": \"PLN\"}")).unwrap();
|
.body(Body::from("{\"metadata\": {\"orderId\": \"id123\"},\"checkout\": {\"speedPolicy\": \"LowMediumSpeed\",\"redirectURL\":\"https://example.com\"},\"amount\": \"".to_owned() + &*fee.to_string() + "\",\"currency\": \"PLN\"}")).unwrap();
|
||||||
let resp = client.request(req).await.unwrap();
|
let resp = client.request(req).await.unwrap();
|
||||||
let parsed: serde_json::Value = serde_json::from_slice(hyper::body::to_bytes(resp.into_body()).await.unwrap().as_ref()).unwrap();
|
let parsed: serde_json::Value = serde_json::from_slice(hyper::body::to_bytes(resp.into_body()).await.unwrap().as_ref()).unwrap();
|
||||||
POOL.with(|poola| {
|
POOL.with(|poola| {
|
||||||
let tmp: String = parsed.get("id").unwrap().as_str().unwrap().into();
|
let tmp: String = parsed.get("id").unwrap().as_str().unwrap().into();
|
||||||
let nid: String = poola.get_conn().unwrap().exec_iter("INSERT INTO `inz`.`registrations`(`userid`,`tournamentid`,`paymenttype`,`paymentstatus`,`approval`,`paymentreference`, `partner`)VALUES(?,?,'btc','PENDING',0,?,?);", (id, tournament, &tmp, partner)).unwrap().last_insert_id().unwrap().to_string();
|
if isowner {
|
||||||
|
poola.get_conn().unwrap().exec_iter("Update registrations set paymenttype = 'btc',paymentstatus = 'PENDING', paymentreference=? where id = ? ;", (&tmp, rid)).unwrap();
|
||||||
|
} else {
|
||||||
|
poola.get_conn().unwrap().exec_iter("Update registrations set paymenttype2 = 'btc',paymentstatus2 = 'PENDING',paymentreference2=? where id = ? ;", (&tmp, rid)).unwrap();
|
||||||
|
}
|
||||||
let mut checkout: String = parsed.get("checkoutLink").unwrap().as_str().unwrap().into();
|
let mut checkout: String = parsed.get("checkoutLink").unwrap().as_str().unwrap().into();
|
||||||
*response.body_mut() = Body::from("{\"id\":\"".to_owned() + &nid + "\",\"url\":\"" + &*checkout + "\"}");
|
//checkout = checkout.replace("http://10.1.6.101:8082/", "https://btcpay.dragonmaster.pl/");
|
||||||
|
*response.body_mut() = Body::from("{\"url\":\"".to_owned() + &*checkout + "\"}");
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
if paymentmethod == "cash" {
|
if paymentmethod == "cash" {
|
||||||
POOL.with(|poola| {
|
POOL.with(|poola| {
|
||||||
let nid = "{\"id\":\"".to_owned() + &poola.get_conn().unwrap().exec_iter("INSERT INTO `inz`.`registrations`(`userid`,`tournamentid`,`paymenttype`,`paymentstatus`,`approval`,`paymentreference`, `partner`)VALUES(?,?,'cash','PENDING',0,'N/A',?);", (id, tournament, partner)).unwrap().last_insert_id().unwrap().to_string() + "\"}";
|
if isowner {
|
||||||
*response.body_mut() = nid.into();
|
poola.get_conn().unwrap().exec_iter("Update registrations set paymenttype = 'cash',paymentstatus = 'PENDING', paymentreference='N/A' where id = ? ;", (rid, )).unwrap();
|
||||||
|
} else {
|
||||||
|
poola.get_conn().unwrap().exec_iter("Update registrations set paymenttype2 = 'cash',paymentstatus2 = 'PENDING',paymentreference2='N/A' where id = ? ;", (rid, )).unwrap();
|
||||||
|
}
|
||||||
|
*response.body_mut() = "{}".into();
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
*response.body_mut() = "{\"error\":\"bad payment method\"}".into();
|
*response.body_mut() = "{\"error\":\"bad payment method\"}".into();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
*response.body_mut() = "{\"error\":\"not all fields\"}".into();
|
*response.status_mut() = StatusCode::UNAUTHORIZED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
(&Method::GET, "/pendingApprovals") => {
|
||||||
|
if req.headers().contains_key("Authorization") {
|
||||||
|
let mut tmp = req.headers().get("Authorization").unwrap().to_str().unwrap().split(" ");
|
||||||
|
let aa = tmp.next().unwrap();
|
||||||
|
if aa != "Bearer" {
|
||||||
|
*response.status_mut() = StatusCode::UNAUTHORIZED;
|
||||||
|
return Ok(response);
|
||||||
|
}
|
||||||
|
let token = tmp.next().unwrap().to_string();
|
||||||
|
POOL.with(|poola| {
|
||||||
|
let mut con = poola.get_conn().unwrap();
|
||||||
|
let mut result = con.exec_iter("SELECT user FROM `inz`.`sessions` where token = ? and expire > NOW();", (&token, )).unwrap();
|
||||||
|
let mut it = result.iter().unwrap();
|
||||||
|
let row = it.next();
|
||||||
|
let urow = row.unwrap().unwrap();
|
||||||
|
let id: i32 = urow.get(0).unwrap();
|
||||||
|
|
||||||
|
|
||||||
|
let mut res = Vec::new();
|
||||||
|
poola.get_conn().unwrap()
|
||||||
|
.exec_iter(
|
||||||
|
"SELECT id, userid, tournamentid from registrations where partner =? and partnerAcceptance = 0", (id, ),
|
||||||
|
).unwrap().for_each(|row| {
|
||||||
|
let result_set = row.unwrap();
|
||||||
|
res.push(pendingApprovals { id: from_value(result_set.get(0).unwrap()), inviter: from_value(result_set.get(1).unwrap()), tournamnet: from_value(result_set.get(2).unwrap()) });
|
||||||
|
});
|
||||||
|
*response.body_mut() = serde_json::to_string(&res).unwrap().into();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
*response.status_mut() = StatusCode::UNAUTHORIZED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
(&Method::POST, "/acceptInvite") => {
|
||||||
|
if req.headers().contains_key("Authorization") {
|
||||||
|
let mut tmp = req.headers().get("Authorization").unwrap().to_str().unwrap().split(" ");
|
||||||
|
let aa = tmp.next().unwrap();
|
||||||
|
if aa != "Bearer" {
|
||||||
|
*response.status_mut() = StatusCode::UNAUTHORIZED;
|
||||||
|
return Ok(response);
|
||||||
|
}
|
||||||
|
let token = tmp.next().unwrap().to_string();
|
||||||
|
let byte_stream = hyper::body::to_bytes(req).await.unwrap();
|
||||||
|
let s: HashMap<String, String> = serde_json::from_slice(&byte_stream).unwrap();
|
||||||
|
if(s.contains_key("id")) {
|
||||||
|
POOL.with(|poola| {
|
||||||
|
let mut con = poola.get_conn().unwrap();
|
||||||
|
let mut result = con.exec_iter("SELECT user FROM `inz`.`sessions` where token = ? and expire > NOW();", (&token, )).unwrap();
|
||||||
|
let mut it = result.iter().unwrap();
|
||||||
|
let row = it.next();
|
||||||
|
let urow = row.unwrap().unwrap();
|
||||||
|
let id: i32 = urow.get(0).unwrap();
|
||||||
|
poola.get_conn().unwrap().exec_drop("Update registrations set partnerAcceptance =1 where partner = ? and id = ?", (id, s.get("id").unwrap().to_string())).unwrap();
|
||||||
|
*response.body_mut() = "{}".into();
|
||||||
|
});
|
||||||
|
}else{
|
||||||
|
*response.body_mut() = "id is required".into();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
*response.status_mut() = StatusCode::UNAUTHORIZED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
(&Method::POST, "/rejectInvite") => {
|
||||||
|
if req.headers().contains_key("Authorization") {
|
||||||
|
let mut tmp = req.headers().get("Authorization").unwrap().to_str().unwrap().split(" ");
|
||||||
|
let aa = tmp.next().unwrap();
|
||||||
|
if aa != "Bearer" {
|
||||||
|
*response.status_mut() = StatusCode::UNAUTHORIZED;
|
||||||
|
return Ok(response);
|
||||||
|
}
|
||||||
|
let token = tmp.next().unwrap().to_string();
|
||||||
|
let byte_stream = hyper::body::to_bytes(req).await.unwrap();
|
||||||
|
let s: HashMap<String, String> = serde_json::from_slice(&byte_stream).unwrap();
|
||||||
|
if(s.contains_key("id")) {
|
||||||
|
POOL.with(|poola| {
|
||||||
|
let mut con = poola.get_conn().unwrap();
|
||||||
|
let mut result = con.exec_iter("SELECT user FROM `inz`.`sessions` where token = ? and expire > NOW();", (&token, )).unwrap();
|
||||||
|
let mut it = result.iter().unwrap();
|
||||||
|
let row = it.next();
|
||||||
|
let urow = row.unwrap().unwrap();
|
||||||
|
let id: i32 = urow.get(0).unwrap();
|
||||||
|
|
||||||
|
poola.get_conn().unwrap().exec_drop("delete from registrations where partner = ? and id = ?", (id, s.get("id").unwrap().to_string())).unwrap();
|
||||||
|
*response.body_mut() = "{}".into();
|
||||||
|
});
|
||||||
|
}else{
|
||||||
|
*response.body_mut() = "id is required".into();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
*response.status_mut() = StatusCode::UNAUTHORIZED;
|
*response.status_mut() = StatusCode::UNAUTHORIZED;
|
||||||
@ -1787,8 +2085,28 @@
|
|||||||
"SELECT id, name, typeOfLadder, pointsForTournament, places, roles, creator,approved, state, currentRound,`from`, `to`, place, categotry, rang, entryFee, director, phone,entriesTo, additionalInformations, visibility from tournaments where deleted =0 order by id desc",
|
"SELECT id, name, typeOfLadder, pointsForTournament, places, roles, creator,approved, state, currentRound,`from`, `to`, place, categotry, rang, entryFee, director, phone,entriesTo, additionalInformations, visibility from tournaments where deleted =0 order by id desc",
|
||||||
).unwrap().for_each(|row| {
|
).unwrap().for_each(|row| {
|
||||||
let result_set = row.unwrap();
|
let result_set = row.unwrap();
|
||||||
res.push(tournament { id:from_value(result_set.get(0).unwrap()), name:from_value(result_set.get(1).unwrap()), typeOfLadder:from_value(result_set.get(2).unwrap()), places:from_value(result_set.get(4).unwrap()), roles:from_value(result_set.get(5).unwrap()), creator:from_value(result_set.get(6).unwrap()), pointsForTournament:from_value(result_set.get(3).unwrap()), approved:from_value(result_set.get(7).unwrap()), state:from_value(result_set.get(8).unwrap()), currentRound:from_value(result_set.get(9).unwrap()),from:from_value(result_set.get(10).unwrap()), to:from_value(result_set.get(11).unwrap()), place:from_value(result_set.get(12).unwrap()), categotry:from_value(result_set.get(13).unwrap()), rang:from_value(result_set.get(14).unwrap()), entryFee:from_value(result_set.get(15).unwrap()), director:from_value(result_set.get(16).unwrap()), phone:from_value(result_set.get(17).unwrap()),entriesTo:from_value(result_set.get(18).unwrap()), additionalInformations:from_value(result_set.get(19).unwrap()),
|
res.push(tournament {
|
||||||
visibility:from_value( result_set.get(20).unwrap())
|
id: from_value(result_set.get(0).unwrap()),
|
||||||
|
name: from_value(result_set.get(1).unwrap()),
|
||||||
|
typeOfLadder: from_value(result_set.get(2).unwrap()),
|
||||||
|
places: from_value(result_set.get(4).unwrap()),
|
||||||
|
roles: from_value(result_set.get(5).unwrap()),
|
||||||
|
creator: from_value(result_set.get(6).unwrap()),
|
||||||
|
pointsForTournament: from_value(result_set.get(3).unwrap()),
|
||||||
|
approved: from_value(result_set.get(7).unwrap()),
|
||||||
|
state: from_value(result_set.get(8).unwrap()),
|
||||||
|
currentRound: from_value(result_set.get(9).unwrap()),
|
||||||
|
from: from_value(result_set.get(10).unwrap()),
|
||||||
|
to: from_value(result_set.get(11).unwrap()),
|
||||||
|
place: from_value(result_set.get(12).unwrap()),
|
||||||
|
categotry: from_value(result_set.get(13).unwrap()),
|
||||||
|
rang: from_value(result_set.get(14).unwrap()),
|
||||||
|
entryFee: from_value(result_set.get(15).unwrap()),
|
||||||
|
director: from_value(result_set.get(16).unwrap()),
|
||||||
|
phone: from_value(result_set.get(17).unwrap()),
|
||||||
|
entriesTo: from_value(result_set.get(18).unwrap()),
|
||||||
|
additionalInformations: from_value(result_set.get(19).unwrap()),
|
||||||
|
visibility: from_value(result_set.get(20).unwrap()),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -1844,8 +2162,11 @@
|
|||||||
let entriesTo = s.get("entriesTo").unwrap().to_string();
|
let entriesTo = s.get("entriesTo").unwrap().to_string();
|
||||||
let visibility = s.get("visibility").unwrap().to_string();
|
let visibility = s.get("visibility").unwrap().to_string();
|
||||||
let additionalInformations = s.get("additionalInformations").unwrap().to_string();
|
let additionalInformations = s.get("additionalInformations").unwrap().to_string();
|
||||||
let id2 = &poola.get_conn().unwrap().exec_iter("INSERT INTO `inz`.`tournaments`(`name`,`typeOfLadder`,`pointsForTournament`,`places`,`roles`,`creator`,`deleted`,`approved`,`state`,`currentRound`,`from`,`to`,`place`,`categotry`,`rang`,`entryFee`,`director`,`phone`,`entriesTo`,`additionalInformations`,`visibility`) VALUES (?,?,?,?,?,?,0,?,0,0,'1000-01-01 01:01:01','1000-01-01 01:01:01','','','',0,'','','1000-01-01 01:01:01','','TRUE');", (name, type_of_ladder, points_for_tournament, places, roles, id, ranked)).unwrap().last_insert_id().unwrap().to_string();
|
let mut tr = poola.start_transaction(TxOpts::default()).unwrap();
|
||||||
let _ = &poola.get_conn().unwrap().exec_drop("Update tournaments set `from` =?, `to`=?, `place`=?, `categotry`=?, `rang`=?, `entryFee`=?, `director`=?, `phone`=?, `entriesTo`=?, `additionalInformations`=?, `visibility`=? where id = ?;", (from,to,place,categotry,rang,entryFee,director,phone,entriesTo,additionalInformations,visibility, &id2 )).unwrap();
|
|
||||||
|
let id2 = &tr.exec_iter("INSERT INTO `inz`.`tournaments`(`name`,`typeOfLadder`,`pointsForTournament`,`places`,`roles`,`creator`,`deleted`,`approved`,`state`,`currentRound`,`from`,`to`,`place`,`categotry`,`rang`,`entryFee`,`director`,`phone`,`entriesTo`,`additionalInformations`,`visibility`) VALUES (?,?,?,?,?,?,0,?,0,0,'1000-01-01 01:01:01','1000-01-01 01:01:01','','','',0,'','','1000-01-01 01:01:01','','TRUE');", (name, type_of_ladder, points_for_tournament, places, roles, id, ranked)).unwrap().last_insert_id().unwrap().to_string();
|
||||||
|
let _ = &tr.exec_drop("Update tournaments set `from` =?, `to`=?, `place`=?, `categotry`=?, `rang`=?, `entryFee`=?, `director`=?, `phone`=?, `entriesTo`=?, `additionalInformations`=?, `visibility`=? where id = ?;", (from, to, place, categotry, rang, entryFee, director, phone, entriesTo, additionalInformations, visibility, &id2)).unwrap();
|
||||||
|
tr.commit().unwrap();
|
||||||
let str = "{\"id\":".to_owned() + id2 + "}";
|
let str = "{\"id\":".to_owned() + id2 + "}";
|
||||||
*response.body_mut() = str.into();
|
*response.body_mut() = str.into();
|
||||||
} else {
|
} else {
|
||||||
@ -2012,22 +2333,26 @@
|
|||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
loop
|
loop
|
||||||
{
|
{
|
||||||
sleep(Duration::from_secs(60*5)).await;
|
sleep(Duration::from_secs(60 * 15)).await;
|
||||||
POOL.with(|poola| {
|
POOL.with(|poola| {
|
||||||
poola.get_conn().unwrap()
|
let mut conn = poola.get_conn().unwrap();
|
||||||
.query_iter(
|
conn.query_iter(
|
||||||
"Select id, paymentreference from registrations where paymentstatus = 'PENDING' and paymenttype ='btc'",
|
"Select id, paymentreference, paymentstatus ,paymentreference2 ,paymentstatus2 from registrations where (paymentstatus = 'PENDING' or paymentstatus2 = 'PENDING') and paymenttype ='btc'",
|
||||||
).unwrap().for_each(|row| {
|
).unwrap().for_each(|row| {
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
let result_set = row.unwrap();
|
let result_set = row.unwrap();
|
||||||
let reference: &String = &from_value(result_set.get(1).unwrap());
|
let reference: &String = &from_value(result_set.get(1).unwrap());
|
||||||
|
let status: &String = &from_value(result_set.get(2).unwrap());
|
||||||
|
let reference2: &String = &from_value(result_set.get(3).unwrap());
|
||||||
|
let status2: &String = &from_value(result_set.get(4).unwrap());
|
||||||
let id: &String = &from_value(result_set.get(0).unwrap());
|
let id: &String = &from_value(result_set.get(0).unwrap());
|
||||||
|
if status == "PENDING" {
|
||||||
let client = Client::new();
|
let client = Client::new();
|
||||||
let req = Request::builder()
|
let req = Request::builder()
|
||||||
.method(Method::GET)
|
.method(Method::GET)
|
||||||
.uri("http://10.1.6.101:8082/api/v1/stores/5QsjqLbqHNgiP4GnAqy2apKaTcxWDj7zFFSpNKZGEseR/invoices/".to_owned() + reference)
|
.uri("http://****/api/v1/stores/****/invoices/".to_owned() + reference)
|
||||||
.header("content-type", "application/json")
|
.header("content-type", "application/json")
|
||||||
.header("Authorization", "token 8b1d0a2a653e9f40ac402dbce66fccb3ccd1b9c5").body(Body::empty()).unwrap();
|
.header("Authorization", "token *****").body(Body::empty()).unwrap();
|
||||||
let resp = client.request(req).await.unwrap();
|
let resp = client.request(req).await.unwrap();
|
||||||
let parsed: serde_json::Value = serde_json::from_slice(hyper::body::to_bytes(resp.into_body()).await.unwrap().as_ref()).unwrap();
|
let parsed: serde_json::Value = serde_json::from_slice(hyper::body::to_bytes(resp.into_body()).await.unwrap().as_ref()).unwrap();
|
||||||
let stat: String = parsed.get("status").unwrap().as_str().unwrap().into();
|
let stat: String = parsed.get("status").unwrap().as_str().unwrap().into();
|
||||||
@ -2050,7 +2375,82 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if status2 == "PENDING" {
|
||||||
|
let client = Client::new();
|
||||||
|
let req = Request::builder()
|
||||||
|
.method(Method::GET)
|
||||||
|
.uri("http://*****/api/v1/stores/****/invoices/".to_owned() + reference2)
|
||||||
|
.header("content-type", "application/json")
|
||||||
|
.header("Authorization", "token ****").body(Body::empty()).unwrap();
|
||||||
|
let resp = client.request(req).await.unwrap();
|
||||||
|
let parsed: serde_json::Value = serde_json::from_slice(hyper::body::to_bytes(resp.into_body()).await.unwrap().as_ref()).unwrap();
|
||||||
|
let stat: String = parsed.get("status").unwrap().as_str().unwrap().into();
|
||||||
|
if stat == "New" {} else {
|
||||||
|
if stat == "Settled" {
|
||||||
|
POOL.with(|poola| {
|
||||||
|
poola.get_conn().unwrap().exec_drop("Update registrations set paymentstatus2 ='DONE' where id = ?", (id, )).unwrap();
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
if stat == "Processing" {} else {
|
||||||
|
if stat == "Expired" {
|
||||||
|
POOL.with(|poola| {
|
||||||
|
poola.get_conn().unwrap().exec_drop("Update registrations set paymentstatus2 ='EXPIRED' where id = ?", (id, )).unwrap();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
POOL.with(|poola| {
|
||||||
|
poola.get_conn().unwrap().exec_drop("Update registrations set paymentstatus2 =? where id = ?", (stat, id)).unwrap();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
let smtp_server = "****";
|
||||||
|
let smtp_username = "****";
|
||||||
|
let smtp_password = "****";
|
||||||
|
let smtp_password = "****";
|
||||||
|
let mut conn2 = poola.get_conn().unwrap();
|
||||||
|
conn2.query_iter(
|
||||||
|
"Select id, (Select mail from users where users.id = userid),(Select mail from users where users.id = partner) from registrations where paymentstatus = 'DONE' and paymentstatus2 = 'DONE' and informed = 1",
|
||||||
|
).unwrap().for_each(|row| {
|
||||||
|
let result_set = row.unwrap();
|
||||||
|
let id: &String = &from_value(result_set.get(0).unwrap());
|
||||||
|
let usermail: &String = &from_value(result_set.get(1).unwrap());
|
||||||
|
let partnermail: &String = &from_value(result_set.get(2).unwrap());
|
||||||
|
let email = Message::builder()
|
||||||
|
.from(("NoBody <".to_owned()+smtp_username+">").parse().unwrap())
|
||||||
|
.to(("Yuin <".to_owned()+&usermail+">").parse().unwrap())
|
||||||
|
.subject("your registration has payed")
|
||||||
|
.body(String::from("thank you"))
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
let creds = Credentials::new(smtp_username.to_string(), smtp_password.to_string());
|
||||||
|
|
||||||
|
let mailer = SmtpTransport::relay(smtp_server)
|
||||||
|
.unwrap()
|
||||||
|
.credentials(creds)
|
||||||
|
.build();
|
||||||
|
match mailer.send(&email) {
|
||||||
|
Ok(_) => { },
|
||||||
|
Err(e) => panic!("Could not send email: {:?}", e),
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
let email2 = Message::builder()
|
||||||
|
.from(("NoBody <".to_owned()+smtp_username+">").parse().unwrap())
|
||||||
|
.to(("Yuin <".to_owned()+&partnermail+">").parse().unwrap())
|
||||||
|
.subject("your registration has payed")
|
||||||
|
.body(String::from("thank you"))
|
||||||
|
.unwrap();
|
||||||
|
match mailer.send(&email2) {
|
||||||
|
Ok(_) => { },
|
||||||
|
Err(e) => panic!("Could not send email: {:?}", e),
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
let mut conn3 = poola.get_conn().unwrap();
|
||||||
|
conn3.exec_drop("Update registrations set informed =1 where id = ?", (id,)).unwrap();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user