|
|
|
@ -5,7 +5,7 @@ use leptos_router::*;
|
|
|
|
|
use rust_decimal::Decimal;
|
|
|
|
|
use crate::backend::appearance::get_appearance;
|
|
|
|
|
use crate::backend::customer::get_remembered;
|
|
|
|
|
use crate::backend::data::{ApiResponse, Customer, DayHour, Reservation, ResProperty, SlotType, TmCheck};
|
|
|
|
|
use crate::backend::data::{ApiResponse, ClosingTime, Customer, DayHour, Reservation, ResProperty, SlotType, TmCheck};
|
|
|
|
|
use crate::backend::reservation::{CreateReservation, get_public_form_data, is_reserved};
|
|
|
|
|
use crate::backend::user::get_pow;
|
|
|
|
|
use crate::components::data_form::ForValidation;
|
|
|
|
@ -20,8 +20,16 @@ fn time_selector(
|
|
|
|
|
reservations: Vec<Reservation>,
|
|
|
|
|
property: ResProperty,
|
|
|
|
|
slots: RwSignal<Vec<String>>,
|
|
|
|
|
price: RwSignal<Decimal>) -> impl IntoView {
|
|
|
|
|
let checks = hours.into_iter().map(|h| {
|
|
|
|
|
price: RwSignal<Decimal>,
|
|
|
|
|
day: ReadSignal<NaiveDate>,
|
|
|
|
|
closing_days: Option<ClosingTime>) -> impl IntoView {
|
|
|
|
|
let closed = if let Some(c) = closing_days {
|
|
|
|
|
day.get() >= c.from_date && day.get() <= c.to_date
|
|
|
|
|
} else {
|
|
|
|
|
false
|
|
|
|
|
};
|
|
|
|
|
let checks = if !closed {
|
|
|
|
|
hours.into_iter().map(|h| {
|
|
|
|
|
match property.slot {
|
|
|
|
|
SlotType::Quarter => {
|
|
|
|
|
let mut ret: Vec<TmCheck> = vec![];
|
|
|
|
@ -58,13 +66,16 @@ fn time_selector(
|
|
|
|
|
SlotType::Day => {
|
|
|
|
|
let mut ret: Vec<TmCheck> = vec![];
|
|
|
|
|
ret.push(TmCheck {
|
|
|
|
|
from: NaiveTime::from_hms_opt(0,0,0).unwrap(),
|
|
|
|
|
from: NaiveTime::from_hms_opt(0, 0, 0).unwrap(),
|
|
|
|
|
to: NaiveTime::from_hms_opt(23, 59, 59).unwrap()
|
|
|
|
|
});
|
|
|
|
|
ret
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}).collect::<Vec<_>>().into_iter().flatten().collect::<Vec<_>>();
|
|
|
|
|
}).collect::<Vec<_>>().into_iter().flatten().collect::<Vec<_>>()
|
|
|
|
|
} else {
|
|
|
|
|
vec![]
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
let prop_id = property.id();
|
|
|
|
|
let closed = checks.is_empty();
|
|
|
|
@ -222,6 +233,8 @@ pub fn Public() -> impl IntoView {
|
|
|
|
|
hours={data.hours.clone()}
|
|
|
|
|
reservations={data.reservations.clone()}
|
|
|
|
|
property={data.property.clone()}
|
|
|
|
|
day={day.read_only()}
|
|
|
|
|
closing_days={data.closing_days.clone()}
|
|
|
|
|
slots={slots}
|
|
|
|
|
price={price}/>
|
|
|
|
|
</div>
|
|
|
|
|