
    i?                        d dl mZmZ d dlmZ d dl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 d d	lmZ d d
lmZ dZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%ddddddddddd d!d"d#d$dddd%d&d'd(d(d)dddd*d+d,d-d.d/d0ddd1d2d3d4d5ddddd6d7d8d9d:d$d;d<dd=d,d8d9d:d$d;d<dd>d?d@dAd:d;ddBddCdd@dDd.dddBddEdFd3dGdGd)ddddHddId4dJdddKddLddMd4dd;ddKddNdOdPdQd.d;ddRddSd,dTd9d:d$d;dRddUd7dTd9d:d$d;dRdgZ&dVd6d=gd;ddWdXd=d>gddYdWdZd>dCgdYd[dWd\dUdSgd;ddWd]dSdNgddYdWd^d>dNgdd_dWd`dLdHgdYd[dWgZ'dae(dz  dbe(fdcZ)ddedbe*fdeZ+ddedbe*fdfZ,dge-dhedbdfdiZ.djdkdledme*dbe*fdnZ/djdkdledme*dbe*fdoZ0dledhedbdfdpZ1dge-dhedbe2e3e   e3e   f   fdqZ4ddedledhedbe2e3e   e3e   f   fdrZ5edsdte-dhedue(dbefdvZ6dddwdhedxe(dye(dz  dze(dz  dbe2eee3e   e3e   f   f
d{Z7dhedbe2eee3e   e3e   f   fd|Z8dhedbe9fd}Z:y)~    )datetime)select)Session)Customer)ReservationReservationSourceReservationStatusReservationStatusHistory)Room)TableTableCombination)Venue)recalculate_day_assignments)ensure_booking_settingszBACO' LOUNGE BARzSala Internaix  i  Banco   i  Z      Entratai  <   1iz  i  x         N)namexywidthheight	min_seats	max_seats
join_group2iT  i0  `   @      3F   i  n      4   i  N   :         52   U   J      6   P   R   8      north_small78i{  K   b   north_large9   10i  p   11i     east_vertical12   13ij     d   
center_row14   15z6 + 7)r   table_namesr!   r"   z7 + 8
   z8 + 9   z15 + 14z14 + 13z8 + 13   z12 + 11valuereturnc                 F    | xs dj                         j                         S )N )striplower)rW   s    B/var/www/html/PRENOTAZIONI_IA/backend/app/services/seed_service.py_normalize_textr^   8   s    KR &&((    venuec                 j    t        | j                        }t        | j                        }d|v xs d|v S )Nritualr^   portal_tenant_slugr   r`   slugr   s      r]   _is_ritual_venuerg   <   s5    5334D5::&Dt/x4//r_   c                 j    t        | j                        }t        | j                        }d|v xs d|v S )Nbacorc   re   s      r]   _is_baco_venuerj   B   s3    5334D5::&DT>+Vt^+r_   room_iddbc                    t        |j                  t        t              j	                  t        j
                  | k(                    }|D ]  }|j                  |        t        |j                  t        t              j	                  t        j
                  | k(                    }|D ]  }|j                  |        |j                          y )N)	listscalarsr   r   whererk   deleter   flush)rk   rl   combinationscombinationtablestables         r]   _clear_room_layoutrw   H   s    

6*:#;#A#ABRBZBZ^eBe#fghL# 
		+ "**VE]00'1IJKLF 
		%HHJr_   Fforceroomry   c                   d}| j                   |s| j                   nt        t        | j                        }| j                  |s| j                  nt        t
        | j                        }t        d|      }t        d|      }t        | j                  |z
  t        z
  d      }t        t        t        | j                  |z
  d            }|s| j                  st        | _
        d}|s| j                   	|| _         d}|s| j                  	|| _        d}|s| j                  	|| _        d}|s| j                  	|| _        d}|s| j                  	d| _        d}|S )NFr9   r   T)counter_widthminDEFAULT_COUNTER_WIDTHr   counter_heightDEFAULT_COUNTER_HEIGHTr    maxDEFAULT_COUNTER_MARGIN_RIGHTDEFAULT_COUNTER_MARGIN_TOPcounter_nameDEFAULT_COUNTER_NAME	counter_x	counter_ycounter_visiblerz   ry   updatedr   r    	default_x	default_ys          r]   apply_default_counter_layoutr   S   sG   G"&"4"4"@DTWXmosoyoyTzE$($7$7$CET  WZ[qsws~s~WFENEV_FDJJ&)EEqII.DKK&4H!0LMID%%0""*"##+$&"&"$$,#Nr_   c                   d}| j                   |s| j                   nt        t        | j                        }| j                  |s| j                  nt        t
        | j                        }t        d|      }t        d|      }t        | j                  |z
  dz  d      }t        | j                  |z
  t        z
  d      }|s| j                  st        | _	        d}|s| j                   	|| _         d}|s| j                  	|| _        d}|s| j                  	|| _        d}|s| j                  	|| _        d}|s| j                  	d| _        d}|S )NFr9   r'   r   T)entrance_widthr}   DEFAULT_ENTRANCE_WIDTHr   entrance_heightDEFAULT_ENTRANCE_HEIGHTr    r   DEFAULT_ENTRANCE_MARGIN_BOTTOMentrance_nameDEFAULT_ENTRANCE_NAME
entrance_x
entrance_yentrance_visibler   s          r]   apply_default_entrance_layoutr   s   sP   G#'#6#6#B5DVYZprvr|r|V}E%)%9%9%EeT!!Y\]tvz  wB  wB  ZCFENEV_FTZZ%'A-q1IDKK&(+II1MID&&2##+#$$,%'#'#%%- $Nr_   c                     t        | j                  |       t        | d       t        | d       d | _        |j                          y )NTrx   )rw   idr   r   background_image_data_urlrr   )rz   rl   s     r]   reset_room_layoutr      s5    tww# T2!$d3%)D"HHJr_   c                    t        |j                  t        t              j	                  t        j
                  | k(        j                  t        j                                    }|st        D ]  }|j                  t        d| dd|       ! |j                          t        |j                  t        t              j	                  t        j
                  | k(        j                  t        j                                    }t        |j                  t        t              j	                  t        j
                  | k(        j                  t        j                                    }|s|D ci c]  }|j                  |j                   }}t        D ]?  }|j                  t        | |d   |d   D cg c]  }||   	 c}|d   |d   d             A |j                          t        |j                  t        t              j	                  t        j
                  | k(        j                  t        j                                    }||fS c c}w c c}w )	NT)rk   	is_activer   rS   r!   r"   )rk   r   	table_idsr!   r"   r    )rn   ro   r   r   rp   rk   order_byr   DEMO_TABLESaddrr   r   r   DEMO_COMBINATIONS)	rk   rl   existing_tables
table_dataexisting_combinationsrv   table_ids_by_namecombination_datar   s	            r]   _ensure_demo_layout_for_roomr      s   2::fUm&9&9%--7:R&S&\&\]b]g]g&hijO% 	IJFF5GDGJGH	I

rzz&-*=*=emmw>V*W*`*`afakak*lmn 


6*+112B2J2Jg2UV__`p`u`uvw !?NOeUZZ1OO 1 
	FF #)&1CSTaCbc406c.{;.{;"	
	 	
 $JJv./556F6N6NRY6YZccdtdydyz{!
 111# P ds   -I2Ic                    t        |j                  t        t              j	                  t        j
                  |j                  k(        j                  t        j                                    }t        |j                  t        t              j	                  t        j
                  |j                  k(        j                  t        j                                    }| j                  r||fS t        |       rt        |j                  |      \  }}n)t        |       r|s|rt        |j                  |       g }g }d| _
        |j                          ||fS )NT)rn   ro   r   r   rp   rk   r   r   r   r   layout_policy_appliedrg   r   rj   rw   rr   )r`   rz   rl   r   r   s        r]   enforce_layout_policy_for_venuer      s   2::fUm&9&9%--477:R&S&\&\]b]g]g&hijO 


6*+112B2J2Jdgg2UV__`p`u`uvw "" 5551MdggWY1Z..		3tww+ O$&!"&EHHJ111r_   )	room_namevenue_idr   c                   |j                  t        t              j                  t        j                  | k(        j                  t        j                              }|(t        |       t        |       |j                          |S t        | |t        t        d      }|j                  |       |j                          t        |d       t        |d       |j                          |S )NT)r   r   r   r    r   rx   )scalarr   r   rp   r   r   r   r   r   rr   DEFAULT_ROOM_WIDTHDEFAULT_ROOM_HEIGHTr   )r   rl   r   rz   s       r]   ensure_room_for_venuer      s     99VD\''(ABKKDGGTUD$T*%d+

 "D FF4LHHJ T2!$d3HHJKr_   )portal_tenant_idrd   
venue_namer   rd   c                (   d }|r>| j                  t        t              j                  t        j                  |k(              }|q| j                  t        t              j                  t        j
                  |k(        j                  t        j                              }||r|j                  d |fvrd }| j                  t        t              j                  t        j
                  dk(              }||t        k(  r|t        |_        |}|0t        |||      }| j                  |       | j                          n`d}|j
                  |k7  r	||_        d}|r|j                  |k7  r	||_        d}|r|j                  |k7  r	||_        d}|r| j                          t        |j                  |       }t        |||       \  }}	t        |j                  |        | j                          | j!                  |       | j!                  |       ||||	fS )NzVIP CLUB)r   r   rd   FT)r   r   r   rp   r   r   r   r   DEFAULT_VENUE_NAMEr   rr   rd   r   r   r   commitrefresh)
rl   r   r   rd   r`   legacy_venueupdates_appliedrz   r   r   s
             r]   ensure_venue_setupr      s    E		&---e.D.DHX.XYZ}		&---ejjJ.FGPPQVQYQYZ[!1e6L6LUY[kTl6lE99VE]00z1IJKL}'99l>V.}:8H]op
u

::##EJ"O 6 6:J J%5E""O%":":>P"P'9E$"OHHJ 2.D-LUTXZ\-]*O*EHHb)IIKJJuJJt$)>>>r_   c                 $    t        | t              S )N)r   )r   r   )rl   s    r]   ensure_default_venue_setupr      s    b-?@@r_   c                 l
   t        |       \  }}}}|r|s)t        |j                  |       \  }}| j                          | j	                  t
              j                  t
        j                  |j                  k(        j                         }|dkD  rQd|j                  |j                  | j	                  t              j                         t        |      t        |      |dS t        dddd      t        d	d
d      t        dd      t        dd      t        dd      t        dd      t        dd      t        dd      g}| j                  |       | j                          t        j                         }t        |j                  |d   j                  |t        dd      ddt         j"                  t$        j&                  d	      t        |j                  |d   j                  |t        dd       d!d"t         j"                  t$        j(                  #      t        |j                  |d   j                  |t        dd$      dd%t         j*                  t$        j,                  #      t        |j                  |d&   j                  |t        d'd      ddt         j"                  t$        j&                  #      t        |j                  |d"   j                  |t        d'd      d(d)t         j"                  t$        j(                  #      t        |j                  |d*   j                  |t        d'd       d!d&t         j*                  t$        j,                  #      t        |j                  |d%   j                  |t        d'd$      d!d*t         j"                  t$        j&                  #      t        |j                  |d+   j                  |t        d,d      dd-t         j"                  t$        j(                  #      t        |j                  |d   j                  |t        d,d       d.dt         j*                  t$        j&                  #      t        |j                  |d"   j                  |t        d/d      d!d"t         j"                  t$        j(                  #      g
}| j                  |       | j                          | j                  d0 |D               | j                          t/        ||j                  |        d1|j                  |j                  t        |      t        |      t        |      t        |      dS )2Nr   u   Dati demo già presenti)messager   rk   	customersru   rs   reservationszGiulia Rossiz+39 333 100 1001zgiulia.rossi@example.comz"Ama il tavolo vicino alla finestra)r   phoneemailnoteszMarco Bianchiz+39 333 100 1002zmarco.bianchi@example.com)r   r   r   zElena Contiz+39 333 100 1003)r   r   zLuca Morettiz+39 333 100 1004zSofia Galloz+39 333 100 1005zDavide Ferriz+39 333 100 1006zMarta Serraz+39 333 100 1007zAndrea Villaz+39 333 100 1008   r   r'   Anniversario)	r   customer_idreservation_date
start_timeduration_minutesguestsstatussourcer   r0      r   r<   )r   r   r   r   r   r   r   r      r   r1      rN   r   r+         rT   r      c              3   `   K   | ]&  }t        |j                  d |j                         ( y w)N)reservation_id
old_status
new_status)r   r   r   ).0reservations     r]   	<genexpr>z!seed_demo_data.<locals>.<genexpr>T  s/       	!4\g\n\noos   ,.z4Prenotazioni demo create sul locale BACO' LOUNGE BAR)r   r   r   r   queryr   filterr   countr   lenadd_allrr   r   todayr   r
   	confirmedr	   manualwebpendingwhatsappr   )	rl   r`   rz   ru   rs   existing_reservationsr   r   demo_reservationss	            r]   seed_demo_datar   $  s   (B2(F%E4;DGGRH
		HH[1889M9MQVQYQY9YZ``bq 0ww(+113&k-1
 	
 	n,>F`  iM  	No-?Gbcm+=>n,>?m+=>n,>?m+=>n,>?	I JJyHHJJJLEUXX9Q<??UZgklnpqgr  FI  RS  \m  \w  \w  @Q  @X  @X  `n  	oUXX9Q<??UZgklnprgs  GI  RS  \m  \w  \w  @Q  @U  @U  	VUXX9Q<??UZgklnprgs  GJ  ST  ]n  ]v  ]v  P  Y  Y  	ZUXX9Q<??UZgklnpqgr  FI  RS  \m  \w  \w  @Q  @X  @X  	YUXX9Q<??UZgklnpqgr  FI  RS  \m  \w  \w  @Q  @U  @U  	VUXX9Q<??UZgklnprgs  GI  RS  \m  \u  \u  ~O  ~X  ~X  	YUXX9Q<??UZgklnprgs  GI  RS  \m  \w  \w  @Q  @X  @X  	YUXX9Q<??UZgklnpqgr  FI  RT  ]n  ]x  ]x  AR  AV  AV  	WUXX9Q<??UZgklnprgs  GI  RS  \m  \u  \u  ~O  ~V  ~V  	WUXX9Q<??UZgklnpqgr  FH  QR  [l  [v  [v  P  T  T  	U JJ !HHJJJ ,  IIKuxx4 JHH77^f+L)-. r_   );datetimer   r   
sqlalchemyr   sqlalchemy.ormr   app.models.customerr   app.models.reservationr   r	   r
   r   app.models.roomr   app.models.tabler   r   app.models.venuer   app.services.assignmentr   %app.services.booking_settings_servicer   r   DEFAULT_ROOM_NAMEr   r   r   r~   r   r   r   r   r   r   r   r   r   strr^   boolrg   rj   intrw   r   r   r   tuplern   r   r   r   r   r   dictr   r   r_   r]   <module>r      sE     " ( n n   4 " ? I' "      !   !   !#  ssbq_`ptusrRa^_ostrcSq_`ptusrRa^_ostrR3Q]^nrssbBQ]^n{|sbBQ]^n{|sbBQ]^n{|scRa^_o|}2sQRabrvw#cPQ`a  rA  B#cPQ`a  rA  B#rPQ`aq}~#bq_`p|}#bq_`p|}& c3ZaaPc3ZabQc3ZbrRd|!RSTd|!RTUsDkPRSd|"SUV )3: )# )0E 0d 0,% ,D ,  T  ?D t t  @ @E    @D g $ 2# 27 2uT%[RVWgRhEh?i 2@25 2 2' 2eTXY^T_aefvawTwNx 24 '	 	
 
@ $(%)0?0? 0? Dj	0?
 d
0? 5$UT*:%;;<0?fA7 AuUD$u+tTdOe5e/f A@w @4 @r_   