master
Алексей Алексей 2026-05-26 11:13:49 +10:00
parent 30ad04e444
commit 6cb11f7ccf
2 changed files with 49 additions and 11 deletions

View File

@ -246,13 +246,15 @@ impl egui_dock::TabViewer for MainTabViewer{
}
}
struct WorkerTabViewer{
db_oper: DBOperator,
workers: Arc<RwLock<Option<Vec<Worker>>>>,
positions: Arc<RwLock<Option<Vec<Position>>>>,
show_add_modal: bool,
add_worker_name: String,
selected_position: String,
selected_position_id: i32,
add_worker_hire_date: String,
can_add: bool
can_add: bool,
rt: tokio::runtime::Runtime
}
impl WorkerTabViewer{
@ -261,7 +263,7 @@ impl WorkerTabViewer{
if ui.button("Добавить").clicked() {
self.show_add_modal = true;
self.add_worker_name = String::new();
self.selected_position = String::new();
self.selected_position_id = 1;
};
if ui.button("Уволить").clicked() {
@ -286,9 +288,11 @@ impl WorkerTabViewer{
egui::ComboBox::from_label("Выбрать!")
.selected_text(format!("{}",self.selected_position))
.show_ui(ui, |ui|{
ui.selectable_value(&mut self.selected_position, "Гойдазовчик".to_owned(), "Гойдазовчик");
ui.selectable_value(&mut self.selected_position, "Гойдазовчик1".to_owned(), "Гойдазовчик");
ui.selectable_value(&mut self.selected_position, "Гойдазовчик2".to_owned(), "Гойдазовчик");
self.rt.block_on(async{
for pos in self.db_oper.get_position().await.unwrap().iter(){
ui.selectable_value(&mut self.selected_position, pos.id, pos.name);
}
});p
});
});
});
@ -303,7 +307,27 @@ impl WorkerTabViewer{
ui.vertical_centered(|ui|{
let resp = ui.add_enabled(self.can_add, egui::Button::new("Добавить"));
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(){
@ -387,6 +411,8 @@ impl Default for WorkerTabViewer{
selected_position: String::new(),
add_worker_hire_date: String::new(),
can_add: false,
db_oper.
rt
}
}
}

View File

@ -3,6 +3,7 @@ use sqlx::mysql::MySqlPool;
use dotenvy::dotenv_override;
use sqlx::mysql::MySqlQueryResult;
use std::env;
// use crate::schema::equipment::dsl::*;
// use crate::schema::worker::dsl::*;
@ -61,14 +62,25 @@ impl DBOperator{
}
Ok(false)
}
pub async fn add_worker(&self, worker: Worker){
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).{
pub async fn add_worker(&self, worker: Worker) -> Result<bool,sqlx::Error>{
// 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(_) =>{
return Ok(true)
},
Err(_) =>{
Ok(false)
}
}
}
}
}
}
}
}