Fix deleting extra hours
This commit is contained in:
parent
7825a2d172
commit
9e932e1aca
6 changed files with 50 additions and 14 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"db_name": "SQLite",
|
"db_name": "SQLite",
|
||||||
"query": "SELECT id, sales_person_id, amount, category, description, date_time, created, deleted, update_version FROM extra_hours WHERE sales_person_id = ? AND CAST(strftime('%Y', date_time) AS INTEGER) = ?",
|
"query": "SELECT id, sales_person_id, amount, category, description, date_time, created, deleted, update_version FROM extra_hours WHERE sales_person_id = ? AND CAST(strftime('%Y', date_time) AS INTEGER) = ? AND deleted IS NULL",
|
||||||
"describe": {
|
"describe": {
|
||||||
"columns": [
|
"columns": [
|
||||||
{
|
{
|
||||||
|
|
@ -64,5 +64,5 @@
|
||||||
false
|
false
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"hash": "66842d4f10b73e2a5a1e7e25bbb40aec095fee47a0334c5b2126e746fb14d9e7"
|
"hash": "1c8be5c0021c10a1377ac2a03d9b3f8b7e3994e0d4edf0e36275619d11a233f3"
|
||||||
}
|
}
|
||||||
12
.sqlx/query-77e028e8c559bdb0a725d6af0b75fc7048bb63735b359dc1365abbba68774a93.json
generated
Normal file
12
.sqlx/query-77e028e8c559bdb0a725d6af0b75fc7048bb63735b359dc1365abbba68774a93.json
generated
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"db_name": "SQLite",
|
||||||
|
"query": "UPDATE extra_hours SET deleted = ?, update_version = ?, update_process = ? WHERE id = ?",
|
||||||
|
"describe": {
|
||||||
|
"columns": [],
|
||||||
|
"parameters": {
|
||||||
|
"Right": 4
|
||||||
|
},
|
||||||
|
"nullable": []
|
||||||
|
},
|
||||||
|
"hash": "77e028e8c559bdb0a725d6af0b75fc7048bb63735b359dc1365abbba68774a93"
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"db_name": "SQLite",
|
"db_name": "SQLite",
|
||||||
"query": "SELECT id, sales_person_id, amount, category, description, date_time, created, deleted, update_version FROM extra_hours WHERE id = ?",
|
"query": "SELECT id, sales_person_id, amount, category, description, date_time, created, deleted, update_version FROM extra_hours WHERE id = ? AND deleted IS NULL",
|
||||||
"describe": {
|
"describe": {
|
||||||
"columns": [
|
"columns": [
|
||||||
{
|
{
|
||||||
|
|
@ -64,5 +64,5 @@
|
||||||
false
|
false
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"hash": "1adc3ff219a135b40566e2a0a94ff507b51f6a71163a404e12b2cab65376e187"
|
"hash": "a90b5c6c759c7d5dc7beb05c8e90963c7eec7158004bc002b5fd81cffd0e17e2"
|
||||||
}
|
}
|
||||||
|
|
@ -73,7 +73,7 @@ impl ExtraHoursDao for ExtraHoursDaoImpl {
|
||||||
let id_vec = id.as_bytes().to_vec();
|
let id_vec = id.as_bytes().to_vec();
|
||||||
Ok(query_as!(
|
Ok(query_as!(
|
||||||
ExtraHoursDb,
|
ExtraHoursDb,
|
||||||
"SELECT id, sales_person_id, amount, category, description, date_time, created, deleted, update_version FROM extra_hours WHERE id = ?",
|
"SELECT id, sales_person_id, amount, category, description, date_time, created, deleted, update_version FROM extra_hours WHERE id = ? AND deleted IS NULL",
|
||||||
id_vec,
|
id_vec,
|
||||||
).fetch_optional(self.pool.as_ref())
|
).fetch_optional(self.pool.as_ref())
|
||||||
.await
|
.await
|
||||||
|
|
@ -91,7 +91,7 @@ impl ExtraHoursDao for ExtraHoursDaoImpl {
|
||||||
let id_vec = sales_person_id.as_bytes().to_vec();
|
let id_vec = sales_person_id.as_bytes().to_vec();
|
||||||
Ok(query_as!(
|
Ok(query_as!(
|
||||||
ExtraHoursDb,
|
ExtraHoursDb,
|
||||||
"SELECT id, sales_person_id, amount, category, description, date_time, created, deleted, update_version FROM extra_hours WHERE sales_person_id = ? AND CAST(strftime('%Y', date_time) AS INTEGER) = ?",
|
"SELECT id, sales_person_id, amount, category, description, date_time, created, deleted, update_version FROM extra_hours WHERE sales_person_id = ? AND CAST(strftime('%Y', date_time) AS INTEGER) = ? AND deleted IS NULL",
|
||||||
id_vec,
|
id_vec,
|
||||||
year,
|
year,
|
||||||
).fetch_all(self.pool.as_ref())
|
).fetch_all(self.pool.as_ref())
|
||||||
|
|
@ -142,10 +142,26 @@ impl ExtraHoursDao for ExtraHoursDaoImpl {
|
||||||
}
|
}
|
||||||
async fn update(
|
async fn update(
|
||||||
&self,
|
&self,
|
||||||
_entity: &ExtraHoursEntity,
|
entity: &ExtraHoursEntity,
|
||||||
_process: &str,
|
process: &str,
|
||||||
) -> Result<(), crate::DaoError> {
|
) -> Result<(), crate::DaoError> {
|
||||||
unimplemented!()
|
let id_vec = entity.id.as_bytes().to_vec();
|
||||||
|
let version_vec = entity.version.as_bytes().to_vec();
|
||||||
|
let delete = entity
|
||||||
|
.deleted
|
||||||
|
.map(|date_time| date_time.format(&Iso8601::DATE_TIME))
|
||||||
|
.transpose()?;
|
||||||
|
query!(
|
||||||
|
"UPDATE extra_hours SET deleted = ?, update_version = ?, update_process = ? WHERE id = ?",
|
||||||
|
delete,
|
||||||
|
version_vec,
|
||||||
|
process,
|
||||||
|
id_vec,
|
||||||
|
)
|
||||||
|
.execute(self.pool.as_ref())
|
||||||
|
.await
|
||||||
|
.map_db_error()?;
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
async fn delete(&self, _id: Uuid, _process: &str) -> Result<(), crate::DaoError> {
|
async fn delete(&self, _id: Uuid, _process: &str) -> Result<(), crate::DaoError> {
|
||||||
unimplemented!()
|
unimplemented!()
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ use axum::{
|
||||||
body::Body,
|
body::Body,
|
||||||
extract::{Path, Query, State},
|
extract::{Path, Query, State},
|
||||||
response::Response,
|
response::Response,
|
||||||
routing::{get, post},
|
routing::{delete, get, post},
|
||||||
Extension, Json, Router,
|
Extension, Json, Router,
|
||||||
};
|
};
|
||||||
use rest_types::ExtraHoursTO;
|
use rest_types::ExtraHoursTO;
|
||||||
|
|
@ -18,7 +18,7 @@ use crate::{error_handler, Context, RestStateDef};
|
||||||
pub fn generate_route<RestState: RestStateDef>() -> Router<RestState> {
|
pub fn generate_route<RestState: RestStateDef>() -> Router<RestState> {
|
||||||
Router::new()
|
Router::new()
|
||||||
.route("/", post(create_extra_hours::<RestState>))
|
.route("/", post(create_extra_hours::<RestState>))
|
||||||
.route("/:id", post(delete_extra_hours::<RestState>))
|
.route("/:id", delete(delete_extra_hours::<RestState>))
|
||||||
.route(
|
.route(
|
||||||
"/by-sales-person/:id",
|
"/by-sales-person/:id",
|
||||||
get(get_extra_hours_for_sales_person::<RestState>),
|
get(get_extra_hours_for_sales_person::<RestState>),
|
||||||
|
|
|
||||||
|
|
@ -164,12 +164,20 @@ impl<
|
||||||
.await?
|
.await?
|
||||||
.ok_or(ServiceError::EntityNotFound(extra_hours_id))?;
|
.ok_or(ServiceError::EntityNotFound(extra_hours_id))?;
|
||||||
|
|
||||||
|
let (hr_permission, user_permission) = join!(
|
||||||
|
self.permission_service
|
||||||
|
.check_permission(HR_PRIVILEGE, context.clone()),
|
||||||
self.sales_person_service
|
self.sales_person_service
|
||||||
.verify_user_is_sales_person(extra_hours_entity.sales_person_id, context)
|
.verify_user_is_sales_person(extra_hours_entity.sales_person_id, context),
|
||||||
.await?;
|
);
|
||||||
|
hr_permission.or(user_permission)?;
|
||||||
|
|
||||||
extra_hours_entity.deleted = Some(self.clock_service.date_time_now());
|
extra_hours_entity.deleted = Some(self.clock_service.date_time_now());
|
||||||
|
|
||||||
|
self.extra_hours_dao
|
||||||
|
.update(&extra_hours_entity, "extra_hours_service::delete")
|
||||||
|
.await?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue