refactor: rename availability
This commit is contained in:
parent
864141121a
commit
09821c4b8d
@ -2,7 +2,7 @@ use rinja::Template;
|
||||
|
||||
use crate::{
|
||||
filters,
|
||||
models::{Availabillity, AvailabillityAssignmentState, Event, Function},
|
||||
models::{Availability, AvailabillityAssignmentState, Event, Function},
|
||||
};
|
||||
|
||||
pub mod delete;
|
||||
@ -12,7 +12,7 @@ pub mod post_new;
|
||||
#[template(path = "events/plan_personal_table.html")]
|
||||
pub struct PlanEventPersonalTablePartialTemplate {
|
||||
event: Event,
|
||||
availabillities: Vec<(Availabillity, AvailabillityAssignmentState)>,
|
||||
availabillities: Vec<(Availability, AvailabillityAssignmentState)>,
|
||||
further_posten_required: bool,
|
||||
further_fuehrungsassistent_required: bool,
|
||||
further_wachhabender_required: bool,
|
||||
|
@ -7,7 +7,7 @@ use sqlx::PgPool;
|
||||
use crate::{
|
||||
endpoints::assignment::PlanEventPersonalTablePartialTemplate,
|
||||
models::{
|
||||
Assignment, AssignmentChangeset, AssignmentContext, Availabillity, Event, Function, Role,
|
||||
Assignment, AssignmentChangeset, AssignmentContext, Availability, Event, Function, Role,
|
||||
User,
|
||||
},
|
||||
utils::{
|
||||
@ -45,7 +45,7 @@ pub async fn post(
|
||||
}
|
||||
|
||||
let Some(availabillity) =
|
||||
Availabillity::read_by_id_including_user(pool.get_ref(), query.availabillity).await?
|
||||
Availability::read_by_id_including_user(pool.get_ref(), query.availabillity).await?
|
||||
else {
|
||||
return Ok(HttpResponse::NotFound().finish());
|
||||
};
|
||||
|
@ -3,7 +3,7 @@ use sqlx::PgPool;
|
||||
|
||||
use crate::{
|
||||
endpoints::IdPath,
|
||||
models::{Availabillity, User}, utils::ApplicationError,
|
||||
models::{Availability, User}, utils::ApplicationError,
|
||||
};
|
||||
|
||||
#[actix_web::delete("/availabillity/delete/{id}")]
|
||||
@ -12,7 +12,7 @@ pub async fn delete(
|
||||
pool: web::Data<PgPool>,
|
||||
path: web::Path<IdPath>,
|
||||
) -> Result<impl Responder, ApplicationError> {
|
||||
let Some(availabillity) = Availabillity::read_by_id(pool.get_ref(), path.id).await? else {
|
||||
let Some(availabillity) = Availability::read_by_id(pool.get_ref(), path.id).await? else {
|
||||
return Ok(HttpResponse::NotFound().finish());
|
||||
};
|
||||
|
||||
@ -20,7 +20,7 @@ pub async fn delete(
|
||||
return Err(ApplicationError::Unauthorized);
|
||||
}
|
||||
|
||||
Availabillity::delete(pool.get_ref(), availabillity.id).await?;
|
||||
Availability::delete(pool.get_ref(), availabillity.id).await?;
|
||||
|
||||
Ok(HttpResponse::Ok().finish())
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ use serde::Deserialize;
|
||||
use sqlx::PgPool;
|
||||
|
||||
use crate::endpoints::availability::{calc_free_slots_cor, NewOrEditAvailabilityTemplate};
|
||||
use crate::models::{Availabillity, User};
|
||||
use crate::models::{Availability, User};
|
||||
use crate::utils::ApplicationError;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
@ -21,14 +21,14 @@ pub async fn get(
|
||||
pool: web::Data<PgPool>,
|
||||
query: web::Query<AvailabilityNewQuery>,
|
||||
) -> Result<impl Responder, ApplicationError> {
|
||||
let availabillities = Availabillity::read_by_date_and_area_including_user(
|
||||
let availabillities = Availability::read_by_date_and_area_including_user(
|
||||
pool.get_ref(),
|
||||
query.date,
|
||||
user.area_id,
|
||||
)
|
||||
.await?;
|
||||
|
||||
let availabilities_from_user: Vec<&Availabillity> = availabillities
|
||||
let availabilities_from_user: Vec<&Availability> = availabillities
|
||||
.iter()
|
||||
.filter(|a| a.user_id == user.id)
|
||||
.collect();
|
||||
|
@ -7,7 +7,7 @@ use rinja::Template;
|
||||
use serde::Deserialize;
|
||||
use sqlx::PgPool;
|
||||
|
||||
use crate::models::{Area, Availabillity, Event, Role, User};
|
||||
use crate::models::{Area, Availability, Event, Role, User};
|
||||
|
||||
#[derive(Deserialize)]
|
||||
pub struct CalendarQuery {
|
||||
@ -30,7 +30,7 @@ struct CalendarTemplate {
|
||||
Option<String>,
|
||||
Vec<Vehicle>,
|
||||
)>,
|
||||
availabillities: Vec<Availabillity>,
|
||||
availabillities: Vec<Availability>,
|
||||
}
|
||||
|
||||
#[actix_web::get("/")]
|
||||
@ -57,14 +57,14 @@ async fn get(
|
||||
None => None,
|
||||
};
|
||||
|
||||
let availabillities = Availabillity::read_by_date_and_area_including_user(
|
||||
let availabillities = Availability::read_by_date_and_area_including_user(
|
||||
pool.get_ref(),
|
||||
date,
|
||||
query.area.unwrap_or(user.area_id),
|
||||
)
|
||||
.await?;
|
||||
|
||||
let availabilities_from_user: Vec<&Availabillity> = availabillities
|
||||
let availabilities_from_user: Vec<&Availability> = availabillities
|
||||
.iter()
|
||||
.filter(|a| a.user_id == user.id)
|
||||
.collect();
|
||||
|
@ -8,7 +8,7 @@ use crate::{
|
||||
availability::{calc_free_slots_cor, NewOrEditAvailabilityTemplate},
|
||||
IdPath,
|
||||
},
|
||||
models::{Availabillity, User},
|
||||
models::{Availability, User},
|
||||
utils::ApplicationError,
|
||||
};
|
||||
|
||||
@ -25,7 +25,7 @@ pub async fn get(
|
||||
path: web::Path<IdPath>,
|
||||
query: web::Query<EditAvailabilityQuery>,
|
||||
) -> Result<impl Responder, ApplicationError> {
|
||||
let Some(availabillity) = Availabillity::read_by_id(pool.get_ref(), path.id).await? else {
|
||||
let Some(availabillity) = Availability::read_by_id(pool.get_ref(), path.id).await? else {
|
||||
return Ok(HttpResponse::NotFound().finish());
|
||||
};
|
||||
|
||||
@ -44,14 +44,14 @@ pub async fn get(
|
||||
let has_time = availabillity.start_time.is_some() && availabillity.end_time.is_some();
|
||||
|
||||
let suggestions = if has_time {
|
||||
let availabillities = Availabillity::read_by_date_and_area_including_user(
|
||||
let availabillities = Availability::read_by_date_and_area_including_user(
|
||||
pool.get_ref(),
|
||||
availabillity.date,
|
||||
user.area_id,
|
||||
)
|
||||
.await?;
|
||||
|
||||
let availabilities_from_user: Vec<&Availabillity> = availabillities
|
||||
let availabilities_from_user: Vec<&Availability> = availabillities
|
||||
.iter()
|
||||
.filter(|a| a.user_id == user.id)
|
||||
.collect();
|
||||
|
@ -2,7 +2,7 @@ use chrono::{NaiveDate, NaiveTime};
|
||||
use rinja::Template;
|
||||
|
||||
use crate::filters;
|
||||
use crate::models::{Availabillity, Role, User};
|
||||
use crate::models::{Availability, Role, User};
|
||||
|
||||
pub mod delete;
|
||||
pub mod get_new;
|
||||
@ -24,7 +24,7 @@ struct NewOrEditAvailabilityTemplate<'a> {
|
||||
slot_suggestions: Vec<(NaiveTime, NaiveTime)>,
|
||||
}
|
||||
|
||||
fn calc_free_slots_cor(availabilities: &Vec<&Availabillity>) -> Vec<(NaiveTime, NaiveTime)> {
|
||||
fn calc_free_slots_cor(availabilities: &Vec<&Availability>) -> Vec<(NaiveTime, NaiveTime)> {
|
||||
let mut times = Vec::new();
|
||||
|
||||
for a in availabilities {
|
||||
|
@ -4,7 +4,7 @@ use serde::Deserialize;
|
||||
use sqlx::PgPool;
|
||||
|
||||
use crate::{
|
||||
models::{Availabillity, User},
|
||||
models::{Availability, User},
|
||||
utils::{self, ApplicationError},
|
||||
};
|
||||
|
||||
@ -22,7 +22,7 @@ pub async fn post(
|
||||
pool: web::Data<PgPool>,
|
||||
form: web::Form<AvailabillityForm>,
|
||||
) -> Result<impl Responder, ApplicationError> {
|
||||
Availabillity::create(
|
||||
Availability::create(
|
||||
pool.get_ref(),
|
||||
user.id,
|
||||
form.date,
|
||||
|
@ -3,7 +3,7 @@ use sqlx::PgPool;
|
||||
|
||||
use crate::{
|
||||
endpoints::{availability::post_new::AvailabillityForm, IdPath},
|
||||
models::{Availabillity, User},
|
||||
models::{Availability, User},
|
||||
utils::{self, ApplicationError},
|
||||
};
|
||||
|
||||
@ -14,7 +14,7 @@ pub async fn post(
|
||||
path: web::Path<IdPath>,
|
||||
form: web::Form<AvailabillityForm>,
|
||||
) -> Result<impl Responder, ApplicationError> {
|
||||
let Some(availabillity) = Availabillity::read_by_id(pool.get_ref(), path.id).await? else {
|
||||
let Some(availabillity) = Availability::read_by_id(pool.get_ref(), path.id).await? else {
|
||||
return Ok(HttpResponse::NotFound().finish());
|
||||
};
|
||||
|
||||
@ -26,7 +26,7 @@ pub async fn post(
|
||||
|| availabillity.end_time != form.till
|
||||
|| availabillity.comment != form.comment
|
||||
{
|
||||
Availabillity::update(
|
||||
Availability::update(
|
||||
pool.get_ref(),
|
||||
availabillity.id,
|
||||
form.from,
|
||||
|
@ -5,7 +5,7 @@ use sqlx::PgPool;
|
||||
use crate::{
|
||||
endpoints::IdPath,
|
||||
filters,
|
||||
models::{Availabillity, AvailabillityAssignmentState, Event, Function, Role, User, Vehicle},
|
||||
models::{Availability, AvailabillityAssignmentState, Event, Function, Role, User, Vehicle},
|
||||
utils::{
|
||||
event_planning_template::{
|
||||
generate_availabillity_assignment_list, generate_status_whether_staff_is_required,
|
||||
@ -20,7 +20,7 @@ use crate::{
|
||||
pub struct PlanEventTemplate {
|
||||
user: User,
|
||||
event: Event,
|
||||
availabillities: Vec<(Availabillity, AvailabillityAssignmentState)>,
|
||||
availabillities: Vec<(Availability, AvailabillityAssignmentState)>,
|
||||
further_posten_required: bool,
|
||||
further_fuehrungsassistent_required: bool,
|
||||
further_wachhabender_required: bool,
|
||||
|
@ -7,7 +7,7 @@ use sqlx::PgPool;
|
||||
use crate::{
|
||||
endpoints::IdPath,
|
||||
models::{
|
||||
Assignment, AssignmentChangeset, Availabillity, Event, EventChangeset, EventContext,
|
||||
Assignment, AssignmentChangeset, Availability, Event, EventChangeset, EventContext,
|
||||
Function, Location, Role, User,
|
||||
},
|
||||
utils::{self, ApplicationError},
|
||||
@ -79,7 +79,7 @@ pub async fn post(
|
||||
NaiveTime::parse_from_str("23:59", "%R").unwrap(),
|
||||
);
|
||||
for assignment in &assignments_for_event {
|
||||
let availability = Availabillity::read_by_id(pool.get_ref(), assignment.availabillity_id)
|
||||
let availability = Availability::read_by_id(pool.get_ref(), assignment.availabillity_id)
|
||||
.await?
|
||||
.unwrap();
|
||||
let all_assignments =
|
||||
|
@ -4,7 +4,7 @@ use chrono::{Months, NaiveDate, NaiveTime, Utc};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use sqlx::PgPool;
|
||||
|
||||
use crate::models::{Availabillity, Function, Role, User};
|
||||
use crate::models::{Availability, Function, Role, User};
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct ExportQuery {
|
||||
@ -64,7 +64,7 @@ pub async fn get(
|
||||
};
|
||||
|
||||
let availabillities =
|
||||
Availabillity::read_for_export(pool.get_ref(), (start_date, end_date), area_id)
|
||||
Availability::read_for_export(pool.get_ref(), (start_date, end_date), area_id)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
use chrono::NaiveTime;
|
||||
use garde::Validate;
|
||||
|
||||
use super::{start_time_lies_before_end_time, Assignment, Availabillity, Event, Function};
|
||||
use super::{start_time_lies_before_end_time, Assignment, Availability, Event, Function};
|
||||
|
||||
#[derive(Validate)]
|
||||
#[garde(allow_unvalidated)]
|
||||
@ -23,7 +23,7 @@ pub struct AssignmentChangeset {
|
||||
|
||||
pub struct AssignmentContext {
|
||||
pub event: Event,
|
||||
pub availabillity: Availabillity,
|
||||
pub availabillity: Availability,
|
||||
pub user_function: Function,
|
||||
pub assignments_for_event: Vec<Assignment>,
|
||||
pub assignments_for_availabillity: Vec<Assignment>,
|
||||
|
3
web/src/models/availability_changeset.rs
Normal file
3
web/src/models/availability_changeset.rs
Normal file
@ -0,0 +1,3 @@
|
||||
pub struct AvailabilityChangeset {
|
||||
|
||||
}
|
@ -4,7 +4,7 @@ use sqlx::{query, PgPool};
|
||||
use super::{Area, Function, Result, Role, User};
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct Availabillity {
|
||||
pub struct Availability {
|
||||
pub id: i32,
|
||||
pub user_id: i32,
|
||||
pub user: Option<User>,
|
||||
@ -14,21 +14,7 @@ pub struct Availabillity {
|
||||
pub comment: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(PartialEq, Eq, Debug)]
|
||||
pub enum AvailabillityAssignmentState {
|
||||
// availabillity is not assigned at all or at least not timely conflicting
|
||||
Unassigned,
|
||||
// availabillity is assigned for another event that is timely conflicting
|
||||
Conflicting,
|
||||
// availabillity is assigned to this event as Posten
|
||||
AssignedPosten(i32),
|
||||
// availabillity is assigned to this event as Führungsassistent
|
||||
AssignedFührungsassistent(i32),
|
||||
// availabillity is assigned to this event as Wachhabender
|
||||
AssignedWachhabender(i32),
|
||||
}
|
||||
|
||||
impl Availabillity {
|
||||
impl Availability {
|
||||
pub async fn create(
|
||||
pool: &PgPool,
|
||||
user_id: i32,
|
||||
@ -58,7 +44,7 @@ impl Availabillity {
|
||||
pool: &PgPool,
|
||||
date: NaiveDate,
|
||||
area_id: i32,
|
||||
) -> Result<Vec<Availabillity>> {
|
||||
) -> Result<Vec<Availability>> {
|
||||
let records = query!(
|
||||
r##"
|
||||
SELECT
|
||||
@ -91,7 +77,7 @@ impl Availabillity {
|
||||
|
||||
let availabillities = records
|
||||
.iter()
|
||||
.map(|r| Availabillity {
|
||||
.map(|r| Availability {
|
||||
id: r.id,
|
||||
user_id: r.userid,
|
||||
user: Some(User {
|
||||
@ -121,7 +107,7 @@ impl Availabillity {
|
||||
pub async fn read_by_id_including_user(
|
||||
pool: &PgPool,
|
||||
id: i32,
|
||||
) -> Result<Option<Availabillity>> {
|
||||
) -> Result<Option<Availability>> {
|
||||
let record = query!(
|
||||
r##"
|
||||
SELECT
|
||||
@ -152,7 +138,7 @@ impl Availabillity {
|
||||
.await?;
|
||||
|
||||
let availabillity = record.and_then(|r| {
|
||||
Some(Availabillity {
|
||||
Some(Availability {
|
||||
id: r.id,
|
||||
user_id: r.userid,
|
||||
user: Some(User {
|
||||
@ -179,13 +165,13 @@ impl Availabillity {
|
||||
Ok(availabillity)
|
||||
}
|
||||
|
||||
pub async fn read_by_id(pool: &PgPool, id: i32) -> Result<Option<Availabillity>> {
|
||||
pub async fn read_by_id(pool: &PgPool, id: i32) -> Result<Option<Availability>> {
|
||||
let record = query!("SELECT * FROM availabillity WHERE id = $1", id)
|
||||
.fetch_optional(pool)
|
||||
.await?;
|
||||
|
||||
let availabillity = record.and_then(|record| {
|
||||
Some(Availabillity {
|
||||
Some(Availability {
|
||||
id: record.id,
|
||||
user_id: record.userid,
|
||||
user: None,
|
||||
@ -203,7 +189,7 @@ impl Availabillity {
|
||||
pool: &PgPool,
|
||||
date_range: (NaiveDate, NaiveDate),
|
||||
area_id: i32,
|
||||
) -> Result<Vec<Availabillity>> {
|
||||
) -> Result<Vec<Availability>> {
|
||||
let records = query!(
|
||||
r##"
|
||||
SELECT
|
||||
@ -240,7 +226,7 @@ impl Availabillity {
|
||||
|
||||
let availabillities = records
|
||||
.iter()
|
||||
.map(|r| Availabillity {
|
||||
.map(|r| Availability {
|
||||
id: r.id,
|
||||
user_id: r.userid,
|
||||
user: Some(User {
|
||||
|
14
web/src/models/availabillity_assignment_state.rs
Normal file
14
web/src/models/availabillity_assignment_state.rs
Normal file
@ -0,0 +1,14 @@
|
||||
#[derive(PartialEq, Eq, Debug)]
|
||||
pub enum AvailabillityAssignmentState {
|
||||
// availabillity is not assigned at all or at least not timely conflicting
|
||||
Unassigned,
|
||||
// availabillity is assigned for another event that is timely conflicting
|
||||
Conflicting,
|
||||
// availabillity is assigned to this event as Posten
|
||||
AssignedPosten(i32),
|
||||
// availabillity is assigned to this event as Führungsassistent
|
||||
AssignedFührungsassistent(i32),
|
||||
// availabillity is assigned to this event as Wachhabender
|
||||
AssignedWachhabender(i32),
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ mod area;
|
||||
mod assignement;
|
||||
mod assignment_changeset;
|
||||
mod availabillity;
|
||||
mod availabillity_assignment_state;
|
||||
mod event;
|
||||
mod event_changeset;
|
||||
mod function;
|
||||
@ -12,11 +13,13 @@ mod role;
|
||||
mod user;
|
||||
mod vehicle;
|
||||
mod vehicle_assignement;
|
||||
mod availability_changeset;
|
||||
|
||||
pub use area::Area;
|
||||
pub use assignement::Assignment;
|
||||
pub use assignment_changeset::{AssignmentChangeset, AssignmentContext};
|
||||
pub use availabillity::{Availabillity, AvailabillityAssignmentState};
|
||||
pub use availabillity::Availability;
|
||||
pub use availabillity_assignment_state::AvailabillityAssignmentState;
|
||||
use chrono::NaiveTime;
|
||||
pub use event::Event;
|
||||
pub use event_changeset::{EventChangeset, EventContext};
|
||||
|
@ -1,7 +1,7 @@
|
||||
use sqlx::PgPool;
|
||||
|
||||
use crate::models::{
|
||||
Assignment, Availabillity, AvailabillityAssignmentState, Event, Function, Vehicle, VehicleAssignement,
|
||||
Assignment, Availability, AvailabillityAssignmentState, Event, Function, Vehicle, VehicleAssignement,
|
||||
};
|
||||
|
||||
use super::ApplicationError;
|
||||
@ -9,8 +9,8 @@ use super::ApplicationError;
|
||||
pub async fn generate_availabillity_assignment_list(
|
||||
pool: &PgPool,
|
||||
event: &Event,
|
||||
) -> Result<Vec<(Availabillity, AvailabillityAssignmentState)>, ApplicationError> {
|
||||
let availabillities_in_db = Availabillity::read_by_date_and_area_including_user(
|
||||
) -> Result<Vec<(Availability, AvailabillityAssignmentState)>, ApplicationError> {
|
||||
let availabillities_in_db = Availability::read_by_date_and_area_including_user(
|
||||
pool,
|
||||
event.date,
|
||||
event.location.as_ref().unwrap().area_id,
|
||||
|
Loading…
x
Reference in New Issue
Block a user