qweqweqe
parent
30ad04e444
commit
6cb11f7ccf
|
|
@ -246,13 +246,15 @@ impl egui_dock::TabViewer for MainTabViewer{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
struct WorkerTabViewer{
|
struct WorkerTabViewer{
|
||||||
|
db_oper: DBOperator,
|
||||||
workers: Arc<RwLock<Option<Vec<Worker>>>>,
|
workers: Arc<RwLock<Option<Vec<Worker>>>>,
|
||||||
positions: Arc<RwLock<Option<Vec<Position>>>>,
|
positions: Arc<RwLock<Option<Vec<Position>>>>,
|
||||||
show_add_modal: bool,
|
show_add_modal: bool,
|
||||||
add_worker_name: String,
|
add_worker_name: String,
|
||||||
selected_position: String,
|
selected_position_id: i32,
|
||||||
add_worker_hire_date: String,
|
add_worker_hire_date: String,
|
||||||
can_add: bool
|
can_add: bool,
|
||||||
|
rt: tokio::runtime::Runtime
|
||||||
}
|
}
|
||||||
|
|
||||||
impl WorkerTabViewer{
|
impl WorkerTabViewer{
|
||||||
|
|
@ -261,7 +263,7 @@ impl WorkerTabViewer{
|
||||||
if ui.button("Добавить").clicked() {
|
if ui.button("Добавить").clicked() {
|
||||||
self.show_add_modal = true;
|
self.show_add_modal = true;
|
||||||
self.add_worker_name = String::new();
|
self.add_worker_name = String::new();
|
||||||
self.selected_position = String::new();
|
self.selected_position_id = 1;
|
||||||
|
|
||||||
};
|
};
|
||||||
if ui.button("Уволить").clicked() {
|
if ui.button("Уволить").clicked() {
|
||||||
|
|
@ -286,9 +288,11 @@ impl WorkerTabViewer{
|
||||||
egui::ComboBox::from_label("Выбрать!")
|
egui::ComboBox::from_label("Выбрать!")
|
||||||
.selected_text(format!("{}",self.selected_position))
|
.selected_text(format!("{}",self.selected_position))
|
||||||
.show_ui(ui, |ui|{
|
.show_ui(ui, |ui|{
|
||||||
ui.selectable_value(&mut self.selected_position, "Гойдазовчик".to_owned(), "Гойдазовчик");
|
self.rt.block_on(async{
|
||||||
ui.selectable_value(&mut self.selected_position, "Гойдазовчик1".to_owned(), "Гойдазовчик");
|
for pos in self.db_oper.get_position().await.unwrap().iter(){
|
||||||
ui.selectable_value(&mut self.selected_position, "Гойдазовчик2".to_owned(), "Гойдазовчик");
|
ui.selectable_value(&mut self.selected_position, pos.id, pos.name);
|
||||||
|
}
|
||||||
|
});p
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
@ -303,7 +307,27 @@ impl WorkerTabViewer{
|
||||||
ui.vertical_centered(|ui|{
|
ui.vertical_centered(|ui|{
|
||||||
let resp = ui.add_enabled(self.can_add, egui::Button::new("Добавить"));
|
let resp = ui.add_enabled(self.can_add, egui::Button::new("Добавить"));
|
||||||
if resp.clicked(){
|
if resp.clicked(){
|
||||||
todo!();
|
self.rt.block_on(async{
|
||||||
|
let poss = self.db_oper.get_position().await.unwrap();
|
||||||
|
|
||||||
|
self.db_oper.add_worker(Worker
|
||||||
|
{
|
||||||
|
id: 0,
|
||||||
|
full_name: self.add_worker_name.clone(),
|
||||||
|
hire_date: chrono::DateTime::parse_from_str(&self.add_worker_hire_date, "%d-%m-%Y")
|
||||||
|
.unwrap()
|
||||||
|
.into(),
|
||||||
|
position: (|| -> Position{
|
||||||
|
for pos in poss{
|
||||||
|
if pos.id.to_string() == self.selected_position{
|
||||||
|
return pos
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
is_fired: ()
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
// if ui.button("Добавить").clicked(){
|
// if ui.button("Добавить").clicked(){
|
||||||
|
|
||||||
|
|
@ -387,6 +411,8 @@ impl Default for WorkerTabViewer{
|
||||||
selected_position: String::new(),
|
selected_position: String::new(),
|
||||||
add_worker_hire_date: String::new(),
|
add_worker_hire_date: String::new(),
|
||||||
can_add: false,
|
can_add: false,
|
||||||
|
db_oper.
|
||||||
|
rt
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3,6 +3,7 @@ use sqlx::mysql::MySqlPool;
|
||||||
|
|
||||||
|
|
||||||
use dotenvy::dotenv_override;
|
use dotenvy::dotenv_override;
|
||||||
|
use sqlx::mysql::MySqlQueryResult;
|
||||||
use std::env;
|
use std::env;
|
||||||
// use crate::schema::equipment::dsl::*;
|
// use crate::schema::equipment::dsl::*;
|
||||||
// use crate::schema::worker::dsl::*;
|
// use crate::schema::worker::dsl::*;
|
||||||
|
|
@ -61,19 +62,30 @@ impl DBOperator{
|
||||||
}
|
}
|
||||||
Ok(false)
|
Ok(false)
|
||||||
}
|
}
|
||||||
pub async fn add_worker(&self, worker: Worker){
|
pub async fn add_worker(&self, worker: Worker) -> Result<bool,sqlx::Error>{
|
||||||
match sqlx::query!("INSERT INTO Brewery.worker (id, position_id, hire_date, is_fired, full_name) VALUES(0, ?, ?, ?, ?);",worker.position.id, worker.hire_date ,worker.is_fired,worker.full_name).fetch(&self.pool).{
|
// sqlx::query!("INSERT INTO Brewery.worker (id, position_id, hire_date, is_fired, full_name) VALUES(0, ?, ?, ?, ?);",worker.position.id, worker.hire_date ,worker.is_fired,worker.full_name)
|
||||||
|
match(sqlx::query("INSERT INTO Brewery.worker (id, position_id, hire_date, is_fired, full_name) VALUES(0, ?, ?, ?, ?);")
|
||||||
|
.bind(worker.position.id)
|
||||||
|
.bind(worker.hire_date)
|
||||||
|
.bind(worker.is_fired)
|
||||||
|
.bind(worker.full_name)
|
||||||
|
.execute(&self.pool)
|
||||||
|
.await){
|
||||||
Ok(_) =>{
|
Ok(_) =>{
|
||||||
|
return Ok(true)
|
||||||
|
},
|
||||||
|
Err(_) =>{
|
||||||
|
Ok(false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
pub async fn estabilish_connection() -> Result<(), sqlx::Error>{
|
pub async fn estabilish_connection() -> Result<(), sqlx::Error>{
|
||||||
dotenv_override().ok();
|
dotenv_override().ok();
|
||||||
let db_url = env::var("DATABASE_URL").expect("DATABASE_URL установи!");
|
let db_url = env::var("DATABASE_URL").expect("DATABASE_URL установи!");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue