| 
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -3,7 +3,8 @@ use leptos::*;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				use leptos_captcha::{Captcha, pow_dispatch};
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				use leptos_router::*;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				use rust_decimal::Decimal;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				use crate::backend::data::{ApiResponse, DayHour, Reservation, ResProperty, SlotType, TmCheck};
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				use crate::backend::customer::get_remembered;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				use crate::backend::data::{ApiResponse, 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;
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -100,6 +101,9 @@ pub fn Public() -> impl IntoView {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    let result_dlg = DialogOpener::new();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    let result = cr_reservation.value();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    let is_pending = create_rw_signal(None);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    let active_str = create_rw_signal("true".to_string());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    let get_customer = create_blocking_resource(||(), move |_| get_remembered());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    let customer = create_rw_signal(Customer::default());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    create_effect(move |_| {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        day.set(Local::now().date_naive());
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -157,6 +161,14 @@ pub fn Public() -> impl IntoView {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    </div>
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    <Transition fallback=|| view! {<p>{trl("Loading...")}</p> }>
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {move || {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            get_customer.get().map(|c| match c {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                Err(_) => {},
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                Ok(c) => {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    if let Some(c) = c {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        customer.set(c);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    form_data.get().map(|u| match u {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    Err(e) => {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        view! {<div>{e.to_string()}</div>}}
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -216,7 +228,7 @@ pub fn Public() -> impl IntoView {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                id="full_name"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                class="form-control"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                placeholder={trl("Enter full name")}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                //prop:value={move || opener.empty()}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                prop:value={move || customer.get().full_name}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                name="reservation[full_name]"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            />
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        </div>
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -229,7 +241,7 @@ pub fn Public() -> impl IntoView {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                id="email"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                class="form-control"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                placeholder={trl("Enter e-mail address")}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                //prop:value={move || opener.empty()}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                prop:value={move || customer.get().email}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                name="reservation[email]"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            />
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        </div>
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -242,7 +254,7 @@ pub fn Public() -> impl IntoView {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                id="phone"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                class="form-control"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                placeholder={trl("Enter phone number")}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                //prop:value={move || opener.empty()}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                prop:value={move || customer.get().phone}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                name="reservation[phone]"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            />
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        </div>
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -260,6 +272,15 @@ pub fn Public() -> impl IntoView {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            />
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        </div>
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    </div>
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    <input
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        type="checkbox"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        id="remember"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        class="form-check-input"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        checked="true"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        on:change=move |ev| active_str.set(if event_target_checked(&ev)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                    { "true".to_string() } else { "false".to_string() }) />
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    <label for="remember" class="form-label">{trl("Remember for next time")}</label>
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    <input type="hidden" prop:value=active_str name="reservation[remember]"/>
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    <Captcha is_pending />
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    <div class="modal-footer">
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        <button type="submit" class="btn btn-primary">
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |