
    ib                         d dl mZm Z  d dlmZ d dlmZmZ d dlmZm	Z	 d dl
mZ d dlmZmZ d dlmZ d dlmZmZmZmZ d d	lmZ d d
lmZmZ d dlmZmZ dddededededz  def
dZy)    )datedatetime)select)Session
joinedload)ReservationReservationStatus)Room)TableTableCombination)TableCombinationRead)FloorPlanReservationFloorPlanResponseOccupancyWindowTableFloorState)reservation_window)serialize_roomserialize_table)assignment_labelbuild_service_planN)venue_iddayroom_iddbr   returnc                   |j                  t        |      }|t        d      ||j                  |k7  rt        d      t	        |j                  t        t              j                  t        j                  |k(        j                  t        j                                    }t	        |j                  t        t              j                  t        j                  |k(        j                  t        j                                    }t	        |j                  t        t              j                  t        t        j                         t        t        j"                        t        t        j$                              j                  t        j&                  | k(  t        j                  |j                  k(        j                  t        j(                              j+                               }t-        j.                         }|j1                         }	g }
g }|D ]  }t3        ||      \  }}}|
j5                  t7        |j8                  |j                   j                  |j:                  |j(                  |j<                  |j>                  |j@                  |jB                  tE        |      |||              |D ]R  }g }d}|D ]  }|j>                  tF        jH                  tF        jJ                  hv r1g }|j@                  |j@                  g}n"|j$                  |j$                  jL                  }|j8                  |vr~tO        |      \  }}|j5                  tQ        |j8                  |j                   j                  |j:                  |j>                  |jS                         |jS                                      | |	k(  s||cxk  r|k  sn d} |j5                  tU        |j8                  |j                  ||             U tW        | tY        |      |D cg c]  }t[        |       c}|D cg c]  }t]        j^                  |       c}|
|      S c c}w c c}w )NzSala non trovata)reservation_idcustomer_nameguests
start_timeduration_minutesstatusassigned_table_idassigned_combination_idr   requires_table_joinservice_summaryservice_stepsF)r   r   r   r"   r    end_timeT)table_id
table_nameis_occupied_nowoccupancy_windows)r   roomtablestable_combinationsreservationstable_states)0getr
   
ValueErrorr   listscalarsr   r   wherer   order_bynamer   r   optionsr   customerassigned_tableassigned_combinationreservation_dater    uniquer   nowr   r   appendr   idr   r!   r"   r#   r$   r   r	   	cancelledno_show	table_idsr   r   timer   r   r   r   r   model_validate)r   r   r   r   r-   r.   combinationsr0   r?   current_dayfloor_reservationsr1   reservationr%   r&   r'   tablewindowsoccupied_nowassigned_idsstart_atend_atcombinations                          H/var/www/html/PRENOTAZIONI_IA/backend/app/services/floor_plan_service.pybuild_floor_planrS      s   66$ D|+,, 9+,,"**VE]00'1IJSSTYT^T^_`aF


6*+112B2J2Jg2UV__`p`u`uvwL 


;W;//0;556;;;<
 U;//368L8LPTP]P]8]^Xk,,-		
 &(L ,,.C((*K57*,L# 
>PQ\^`>a;_m!! *~~)2277"))&11!,!=!="))"-"?"?(3(K(K!1+!>$7 /+	

&  !
)+' 	$K!!&7&A&ACTC\C\%]]L,,8 + = =>11=*??IIxx|+1+>HfNN#.>>"-"6"6";";&--&--'}}#[[]	 k!h#&>&>&>#-	$. 	 :: ,")		
5!
F D!4:;5&;`lmQ\0??Lm'!  <ms    Q8Q#) r   r   
sqlalchemyr   sqlalchemy.ormr   r   app.models.reservationr   r	   app.models.roomr
   app.models.tabler   r   app.schemas.tabler   app.schemas.floor_planr   r   r   r   app.services.assignmentr   app.services.layout_unitsr   r    app.services.reservation_servicer   r   intrS        rR   <module>ra      sc    #  . A   4 2 l l 6 E Q VZ Z$ Z Z' Zd
 Z^o Zr`   