
    :jG                        d Z ddlmZmZmZ ddlZ ede      Zej                  d      d        Z	ej                  d      d        Z
ej                  d	      d
        Zej                  d      d        Zej                  d      d        Zej                  d      d        Zej                  d      d        Zej                  d      d        Zej                  d      d        Zej                  d      d        Zej                  d      d        Zej                  d      d        Zej                  d      d        Zej                  d      d         Zej                  d!      d"        Zej                  d#      d$        Zy)%zV
Main Routes Blueprint
Contains basic page routes like index, grids, and detail pages
    )	Blueprintrender_templatesessionNmain/c                     t        j                  d      } t        j                  dd      }t        j                  dd      }t        j                  dd      }t        d       t        d|         t        d	|        t        d
|        t        d|        t        dt        t        j                                       t        ddt         v         t        d| |||      S )zMain landing page for usersuser_id	user_name is_adminF
user_photoz!Session variables in index route:  user_id:   user_name:   is_admin:   user_photo: zSession keys: z'is_admin' in session: z
index.htmlr	   r
   r   r   )r   getprintlistkeysr   r   s       8/var/www/bookbeach.app/backend/app/routes/main_routes.pyindexr      s     kk)$GK,I{{:u-H\2.J 
-/	Ky
!"	M)
%&	L

#$	N:,
'( 
N4/0
12	#J'$9#:
;<<!(#,"*$.	0 0    z/restaurantsc                      t        d      S )z#All restaurants grid page for userszrestaurants-grid.htmlr    r   r   restaurants_gridr   %   s     233r   z/restaurant/<restaurant_id>c                 F    t        d| t        j                  dd            S )z+Individual restaurant detail page for userszrestaurant-detail.htmlGOOGLE_MAPS_API_KEYyour-google-maps-api-key)restaurant_idgoogle_maps_key)r   osgetenvr!   s    r   restaurant_detailr&   *   s)     3'4)+3HJd)eg gr   z /restaurant/<restaurant_id>/menuc                     t        d|       S )z.Restaurant menu page with categories and itemszrestaurant-menu.htmlr%   r   r%   s    r   restaurant_menur(   1   s     1'46 6r   z/beaches-gridc                      t        d      S )zAll beaches grid page for userszbeaches-grid.htmlr   r   r   r   beaches_gridr*   7        .//r   z/beach/<beach_id>c           
         	 ddl m}m} ddlm} ddlm} ddl}|d   } ||      } |dd|      } |       }	|	j                   |d	      d
| i      j                         }
|
s!ddl
m}m}m}  |dd        | |d            S |	j                   |d      d
| i      j                         }i d|
j                  d|
j                   dt#        |
dd      d|
j$                  d|
j&                  d|
j(                  xs dd|
j*                  xs ddt#        |
dd      d|
j,                  d|
j.                  d|
j0                  dt#        |
dd      dt#        |
dd      d t#        |
d d      d!t#        |
d!d"      d#t#        |
d#d      d$t#        |
d$d      i d%t#        |
d%d      d&t#        |
d&d      d't#        |
d'd      d(t#        |
d(d      d)t#        |
d)d      d*t#        |
d*d      d+t#        |
d+d      d,t#        |
d,d      d-t#        |
d-d      d.t#        |
d.d      d/t#        |
d/d      d0t#        |
d0d      d1t#        |
d1d      d2t#        |
d2d      d3t#        |
d3d      d4t#        |
d4d      d5t#        |
d5d      t#        |
d6d      t#        |
d7d      t#        |
d8d      |D cg c]  }|j2                  |j4                  d9 c}g dd:}|	j7                          t9        d;| |j:                  d<d=      >      S c c}w # t<        $ rQ}ddl
m}m}m} t?        d?|  d@tA        |               |dAtA        |       d        | |d            cY d}~S d}~ww xY w)Bz&Individual beach detail page for usersr   create_enginetextsessionmakerADMIN_CONFIGNDATABASE_URLF
autocommit	autoflushbinda  
            SELECT bp.*, c.company_name, co.country_name, bt.terrain_name
            FROM beach_places bp
            LEFT JOIN companies c ON bp.company_id = c.company_id
            LEFT JOIN countries co ON bp.country_id = co.country_id
            LEFT JOIN beach_terrain_types bt ON bp.terrain_type_id = bt.terrain_type_id
            WHERE bp.beach_place_id = :beach_id AND bp.enable_beach = true
        beach_idflashredirecturl_forz Beach not found or not availableerrorzmain.beaches_gridz
            SELECT photo_path, photo_primary as is_primary
            FROM beach_places_photos 
            WHERE beach_place_id = :beach_id
            ORDER BY photo_primary DESC, sort_order ASC
        beach_place_idnamebeach_informationr   cityaddresslatitudeVB@	longitudeaSQ7@	max_seatscompany_namecountry_nameterrain_namecontact_phone	starttimeendtimeopendays1234567has_seahas_umbrellahas_showershas_lockers
has_markethas_restauranthas_swimming_poolhas_parkinghas_toiletshas_free_wifi	has_musichas_safety_boxhas_access_wheelchairhas_lockers_for_babyhas_beach_volley
has_tennishas_spahas_medicalhas_lifeguard	pet_allowsea_locationbackground_photo)path
is_primary)rd   re   rf   photosreviewsaverage_ratingzbeach-detail.htmlr   r    )beachr"   z#Error loading beach details for ID : zError loading beach details: )!
sqlalchemyr.   r/   sqlalchemy.ormr1   configr3   r#   executefetchoneflaskr;   r<   r=   fetchallr?   
beach_namegetattrrB   rC   rD   rF   rI   rJ   rK   
photo_pathrh   closer   r$   	Exceptionr   str)r9   r.   r/   r1   r3   r#   r4   engineSessionLocaldbbeach_resultr;   r<   r=   photos_resultphotorl   es                     r   beach_detailr   <   s}   [62/' $N3|,#uFS^ zz$ ( # 8$& '/hj 	 664g>G$7899 

4 ) $
 8$&
 '/hj 	*
l99*
L++*
  7JB!O*
 L%%	*

 |++*
 --:*
 //<9*
 {A>*
 L55*
 L55*
 L55*
 W\?DI*
 {DA*
 w|Y=*
 j)D*
" w|Y>#*
$ GL.%H%*
& 7<F'*
( 7<F)*
* ',eD+*
, gl4DeL-*
.  7JE!R/*
0 7<F1*
2 7<F3*
4 W\?EJ5*
6 {EB7*
8 gl4DeL9*
: $W\;RTY%Z;*
< #GL:PRW$X=*
> 6H% P?*
@ ',eDA*
B w|Y>C*
D 7<FE*
F W\?EJG*
H !{EB#L."E '6H" M_lmV[ 0 0@P@PQmS*
X 	
2#(-6RYY7LNh-ik 	k n  6223H:RAxHI-c!fX6@ 3455	6s8   BL H.L 2 L	6L 	L 	M(AM#M(#M(z/adventures-gridc                      t        d      S )z"All adventures grid page for userszadventures-grid.htmlr   r   r   r   adventures_gridr      s     122r   z/adventure/<adventure_id>c           	         	 ddl m}m} ddlm} ddlm} ddl}|d   } ||      } |dd|      } |       }	|	j                   |d	      d
| i      j                         }
|
s!ddl
m}m}m}  |dd        | |d            S |	j                   |d      d
| i      j                         }i d
|
j                  d|
j                   d|
j                   dt#        |
dd      d|
j$                  d|
j&                  d|
j(                  xs dd|
j*                  xs ddt#        |
dd      dt#        |
dd      dt#        |
dd      dt#        |
dd      dt#        |
dd      d t#        |
d d      d!t#        |
d!d      d"|
j,                  d#|
j.                  d$|D cg c]  }d%|j0                  i c}i}|	j3                          t5        d&| |j6                  d'd(      )      S c c}w # t8        $ rQ}ddl
m}m}m} t;        d*|  d+t=        |               |d,t=        |       d        | |d            cY d}~S d}~ww xY w)-z*Individual adventure detail page for usersr   r-   r0   r2   Nr4   Fr5   a  
            SELECT a.*, c.company_name, co.country_name
            FROM adventures a
            LEFT JOIN companies c ON a.company_id = c.company_id
            LEFT JOIN countries co ON a.country_id = co.country_id
            WHERE a.adventure_id = :adventure_id
        adventure_idr:   zAdventure not foundr>   zmain.adventures_gridz
            SELECT photo_path
            FROM adventure_photos 
            WHERE adventure_id = :adventure_id
            ORDER BY created_at ASC
        adventure_namer@   descriptionr   rB   rC   rD   rE   rF   rG   duration_minutesmax_participantsmin_participants   pricephoneemailwebsiterI   rJ   ri   rg   zadventure-detail.htmlr   r    )	adventurer"   z'Error loading adventure details for ID rm   z!Error loading adventure details: )rn   r.   r/   ro   r1   rp   r3   r#   rq   rr   rs   r;   r<   r=   rt   r   r   rv   rB   rC   rD   rF   rI   rJ   rw   rx   r   r$   ry   r   rz   )r   r.   r/   r1   r3   r#   r4   r{   r|   r}   adventure_resultr;   r<   r=   r   r   r   r   s                     r   adventure_detailr      s   C92/' $N3|,#uFS^ ::d , ' |,. /7hj 	  66'1G$:;<< 

4 ) $
 |,.
 /7hj 	
,99
.==
 $33
 7#3]BG	

 $))
 '//
 (11>Y
 )33@y
 (8:La P
 (8:La P
 (8:La P
 W-w:
 W-w;
 W-w;
 w/B?
  ,99!
" ,99#
$ }Me 0 01M%
	* 	
6'0-6RYY7LNh-ik 	k N  9227~RAxPQ1#a&:GD 6788	9s8   BG- DG- G(43G- (G- -	I6AI<IIz/markets-gridc                      t        d      S )zAll markets grid page for userszmarkets-grid.htmlr   r   r   r   markets_gridr      r+   r   z/market/<market_id>c                    	 ddl m}m} ddlm} ddlm} ddl}|d   } ||      } |dd|      } |       }	|	j                   |d	      d
| i      j                         }
|
s!ddl
m}m}m}  |dd        | |d            S |	j                   |d      d
| i      j                         }|
j                  |
j                   |
j                   t#        |
dd      |
j$                  |
j&                  |
j(                  xs d|
j*                  xs dt#        |
dd      t#        |
dd      t#        |
dd      |
j,                  |
j.                  |D cg c]  }d|j0                  i c}d}|	j3                          t5        d| |j6                  dd            S c c}w # t8        $ rQ}ddl
m}m}m} t;        d|  dt=        |               |dt=        |       d        | |d            cY d}~S d}~ww xY w) z'Individual market detail page for usersr   r-   r0   r2   Nr4   Fr5   a  
            SELECT m.*, c.company_name, co.country_name
            FROM markets m
            LEFT JOIN companies c ON m.company_id = c.company_id
            LEFT JOIN countries co ON m.country_id = co.country_id
            WHERE m.market_id = :market_id
        	market_idr:   zMarket not foundr>   zmain.markets_gridz
            SELECT photo_path
            FROM market_photos 
            WHERE market_id = :market_id
            ORDER BY created_at ASC
        r   r   rE   rG   r   r   r   rg   )r   market_namer@   r   rB   rC   rD   rF   r   r   r   rI   rJ   ri   zmarket-detail.htmlr   r    )marketr"   z$Error loading market details for ID rm   zError loading market details: )rn   r.   r/   ro   r1   rp   r3   r#   rq   rr   rs   r;   r<   r=   rt   r   r   rv   rB   rC   rD   rF   rI   rJ   rw   rx   r   r$   ry   r   rz   )r   r.   r/   r1   r3   r#   r4   r{   r|   r}   market_resultr;   r<   r=   r   r   r   r   s                     r   market_detailr      s   ?62/' $N3|,#uFS^ 

4 ) $ I&( )1
 	 66$g.G$7899 

4 ) $
 I&(
 )1
 	 '00(44!--"=-D!&&$,,%..;)&00=I]GR8]GR8}i<)66)66?LMe 0 01M
" 	
3$*-6RYY7LNh-ik 	k N  6224YKr#a&JK.s1vh7A 3455	6s8   BF CF F 3F F 	G3"AG.(G3.G3z/profilec                     t        j                  d      sddlm} m}  |  |d            S t        d       t        dt        j                  d              t        dt        j                  dd	              t        d
t        j                  dd              t        dt        j                  dd	              ddlm} ddlm	}m
} ddlm} |d   } ||      } |dd|      } |       }		 |	j                   |d      dt         d   i      j                         }
|
s&ddlm} m}  |  |d            |	j                          S |
j                    d|
j"                   t         d<   |
j$                  t         d<   |
j&                  r|
j&                  t         d<   t         d   |
j$                  |
j&                  d}t)        d|      |	j                          S # t*        $ ro}ddlm}  |dt/        |       d       t        j                  dd	      t        j                  dd	      d}t)        d|      cY d}~|	j                          S d}~ww xY w# |	j                          w xY w)zUser profile pager	   r   )r<   r=   z
auth.loginz#Session variables in profile route:r   r   r
   r   r   r   Fr   r   r2   r-   r0   r4   r5   z
            SELECT first_name, last_name, email, profile_photo_path
            FROM users 
            WHERE user_id = :user_id AND is_active = true
         
user_email)r@   r   profile_photozprofile.html)	user_data)r;   zError loading profile: r>   )r@   r   N)r   r   rs   r<   r=   r   rp   r3   rn   r.   r/   ro   r1   rq   rr   rx   
first_name	last_namer   profile_photo_pathr   ry   r;   rz   )r<   r=   r3   r.   r/   r1   r4   r{   r|   r}   user_resultr   r   r;   s                 r   profiler   2  s$    ;;y!+-.. 
/1	KI./
01	M'++k267
89	LZ78
9:	N7;;|R89
:; $.+  /L<(F5EOL	B#jj ' " '),-	/ 08xz	 	 /GL122 	
- #."8"8!9;;P;P:QR + 1 1))$/$B$BGL! K( &&(;;
	 ~C 	
  D'Ax0':KKR0[[r2
	 ~CC

D 	
s9   2AG 	BG 	I$AI8I9I II I(z/test-sessionc                  4    ddl m} m}  |t        |             S )z%Test route to check session variablesr   r   jsonify)rs   r   r   dictr   s     r   test_sessionr   r  s     '4=!!r   z/test-session-keysc                      ddl m} m} t         | j                               }i }|D ]  } | j
                  |      ||<    t        d|         ||      S )z$Test route to check all session keysr   r   zAll session keys and values: )rs   r   r   r   r   r   r   )r   r   session_keyssession_datakeys        r   test_session_keysr   x  s]     ''LL -'GKK,S-	),
89<  r   z/test-set-sessionc                  `   ddl m} m}m} d| d<   d| d<   d| d<   d	| d
<   t	        d       t	        d | j
                  d              t	        d | j
                  d              t	        d | j
                  d              t	        d | j
                  d
               | |d            S )z,Test route to manually set session variablesr   r   r<   r=   ztest-user-idr	   z	Test Userr
   Tr   r   r   zManually set session variables:r   r   r   r   z
main.index)rs   r   r<   r=   r   r   r   s      r   test_set_sessionr     s     10'GI&GKGJGL	+-	KI./
01	M+'++k23
45	LZ01
23	N;7;;|45
67GL)**r   z/test-session-templatec                      ddl m} m} t        d       t        d | j                  d              t        d | j                  d              t        d | j                  d	               |d
      S )z1Test route to check session variables in templater   r   r   z"Template test - Session variables:r   r   r   r	   r   r
   ztest_session.html)rs   r   r   r   r   r   s     r   test_session_templater     sm     /	.0	LZ01
23	KI./
01	M+'++k23
45.//r   z/debug-sessionc                      ddl m} m}  | j                  d       | j                  d       | j                  d       | j                  d      d}t	        d|         ||      S )	z&Debug route to check session variablesr   r   r	   r
   r   r   r   z)Debug session route - Session variables: )rs   r   r   r   r   )r   r   session_varss      r   debug_sessionr     sc     '7;;y) W[[-GKK
+!gkk,/	L 
5l^
DE<  r   )__doc__rs   r   r   r   r#   __name__main_bprouter   r   r&   r(   r*   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s   6 5 	 FH
%s0 02 	~4 4 	,-g .g 	126 36
 	0  0 	"#]6 $]6~ 	!"3 #3 	*+E9 ,E9N 	0  0 	$%A6 &A6F 	z= =~ 	"  "
 	#$! %! 	"#+ $+ 	'(0 )0 	 
! !
!r   