o
    7ÓŽiŠ  ã                   @   sB  d Z ddlmZmZmZ ddlmZ ddlmZ ddl	Z
ddlmZ ddlmZ ddlmZ dd	lmZmZ dd
lmZ ddlmZ edd�Zejded�eeƒeeƒfdefdd„ƒZejded�eeƒeeƒfdedefdd„ƒZejded�eeƒeeƒfdedefdd„ƒZe d¡eeƒeeƒfdedefdd„ƒZdS )z0
api/guest.py - Guest user management endpoints
é    )Ú	APIRouterÚDependsÚHTTPException)Ú	Annotated)ÚBytesION)ÚStreamingResponse)Úget_user)ÚGenericResponse)ÚGuestListRequestÚGuestSearchRequest)ÚGuestService)ÚUserz/guest)Úprefixz/all)Úresponse_modelÚservicec                 Ã   s   �|  ¡ }d|dœS )z$Get all guest users - simple versionz!Guest data populated successfully©ÚmessageÚdata)Úget_all_guests)Úuserr   r   © r   ú/app/api/guest.pyr      s   €
r   z/listÚrequestc                 Ã   ó$   �|  | |¡}d|d › d�|dœS )aL  
    List all guest users with optional filters.
    
    Optional filters:
    - email: Filter by email (partial match)
    - first_name: Filter by first name
    - last_name: Filter by last name
    - mobile_number: Filter by mobile number
    - is_active: Filter by active status
    - fields: Specify which fields to return
    úFound Útotal_resultsú	 guest(s)r   )Úlist_all_guests©r   r   r   Úresultr   r   r   Úlist_guests   s
   €þr    z/searchc                 Ã   r   )z¨
    Search guest users by name, email, or phone number.
    
    Searches across:
    - First name
    - Last name
    - Full name
    - Email
    - Mobile number
    r   r   r   r   )Úsearch_guestsr   r   r   r   r!   6   s
   €þr!   z/list/exportc              	   Ã   sö   �|  | |¡}t|d ƒdkrtddd�‚t |d ¡}tƒ }tj|dd��?}|j|dd	d
� |j}|j	d	 }t
|jƒD ]!\}	}
t||
  t¡ t¡ ¡ t|
ƒƒd }| |	|	t|dƒ¡ q<W d  ƒ n1 shw   Y  | d¡ t|dddid�S )zExport guest list to Excel filer   r   i”  zNo guests found)Ústatus_codeÚdetailÚ
xlsxwriter)ÚengineFZGuests)ÚindexÚ
sheet_nameé   é2   NzAapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetzContent-Dispositionz$attachment; filename=guest_list.xlsx)Ú
media_typeÚheaders)r   Úlenr   ÚpdÚ	DataFramer   ÚExcelWriterÚto_excelÚbookÚsheetsÚ	enumerateÚcolumnsÚmaxÚastypeÚstrÚapplyZ
set_columnÚminÚseekr   )r   r   r   r   ÚdfÚoutputÚwriterZworkbookZ	worksheetÚiÚcolÚmax_lenr   r   r   Úexport_guestsM   s*   €
&þù
ýrA   )Ú__doc__Úfastapir   r   r   Útyping_extensionsr   Úior   Úpandasr-   Úfastapi.responsesr   Úcore.security.authenticationr   Úschemar	   Úschema.userr
   r   Úservices.guestr   Úmodelsr   Úguest_routerÚgetr   Úpostr    r!   rA   r   r   r   r   Ú<module>   sT    
þþ	ýÿýýÿýýÿý