
    j8                     d   d Z ddlmZ  G d dej                        Z G d dej                        Z G d dej                        Z G d	 d
ej                        Z G d dej                        Z G d dej                        Z	 G d dej                        Z
 G d dej                        Zy)a~  
Dashboard serializers for Aimantis hotel management platform.

Provides complete nested serializer architecture for:
- Structure information
- Overview metrics
- Occupancy percentages
- Average rates
- Upcoming events
- Monthly occupancy charts
- Complete dashboard response

All serializers are designed for drf-spectacular compatibility
and frontend-friendly response contracts.
    )serializersc                   T    e Zd ZdZ ej
                         Z ej                         Zy)StructureSerializerz%Serializer for structure information.N)	__name__
__module____qualname____doc__r   IntegerFieldid	CharFieldname     !/backend/dashboard/serializers.pyr   r      s%    /	!	!	!	#B ;  "Dr   r   c                      e Zd ZdZ ej
                  d      Z ej
                  d      Z ej
                  d      Z ej
                  d      Z	 ej
                  d      Z
 ej
                  d      Z ej
                  d	      Zy
)OverviewSerializerz*Serializer for dashboard overview metrics.z$Number of bookings checking in today	help_textz%Number of bookings checking out todayz7Number of guests currently staying (is_checked_in=True)zNumber of available roomsz#Number of physically occupied roomsz"Total number of rooms in structurez.Total number of beds across all property typesN)r   r   r   r	   r   r
   checkins_todaycheckouts_todayguests_in_structureavailable_roomsoccupied_roomstotal_rooms
total_bedsr   r   r   r   r      s    4-[--8N /k..9O 3+22K /k..-O .[--7N ++**6K *))BJr   r   c                       e Zd ZdZ ej
                  ddd      Z ej
                  ddd      Z ej
                  ddd      Zy)	OccupancySerializerz,Serializer for occupancy percentage metrics.r   d   zOccupancy percentage for today	min_value	max_valuer   z,Average occupancy percentage for next 7 daysz-Average occupancy percentage for next 30 daysN)	r   r   r   r	   r   r
   todaynext_7_daysnext_30_daysr   r   r   r   r   3   sZ    6$K$$2E
 ++**@K
 ,;++ALr   r   c                       e Zd ZdZ ej
                  dd      Z ej
                  dd      Z ej
                  dd      Zy)AverageRatesSerializerz,Serializer for average nightly rate metrics.r   zAverage nightly rate for today)r    r   z$Average nightly rate for next 7 daysz%Average nightly rate for next 30 daysN)	r   r   r   r	   r   
FloatFieldr"   r#   r$   r   r   r   r&   r&   F   sQ    6"K""2E )+((8K *;))9Lr   r&   c                      e Zd ZdZ ej
                         Z ej                  d      Z ej                         Z	 ej                  d      Z
 ej
                         Z ej                  d      Z ej                  d      Zy)UpcomingEventSerializerz?Serializer for a single upcoming event (check-in or check-out).z%Event type: 'check_in' or 'check_out'r   z7Normalized channel name (e.g., 'Booking.com', 'Airbnb')z'Booking total price as formatted stringz%Event date in ISO format (YYYY-MM-DD)N)r   r   r   r	   r   r
   
booking_idr   
event_type
guest_namechannelnightsamountdater   r   r   r)   r)   V   s    I)))+J&&&9J '&&(J#k##KG &[%%'F"["";F !;  9Dr   r)   c                       e Zd ZdZ ej
                  d      Z ej
                  d      Z ej                  ddd      Z	y	)
MonthlyOccupancySerializerz/Serializer for a single month's occupancy data.z'Month abbreviation (e.g., 'Jan', 'Feb')r   zYear as string (e.g., '2026')r   r   z"Occupancy percentage for the monthr   N)
r   r   r   r	   r   r   monthyearr
   	occupancyr   r   r   r2   r2   i   sN    9!K!!;E !;  1D )((6Ir   r2   c                   $    e Zd ZdZ edd      Zy)ChartsSerializerzSerializer for chart data.Tz)Monthly occupancy data for last 12 months)manyr   N)r   r   r   r	   r2   monthly_occupancyr   r   r   r7   r7   x   s    $2=r   r7   c                       e Zd ZdZ ej
                  d      Z ed      Z e	       Z
 e       Z e       Z ed      Z e       Zy)DashboardResponseSerializerz'Complete dashboard response serializer.z#Current date for the dashboard datar   zSelected structure informationT)r8   N)r   r   r   r	   r   	DateFieldr0   r   	structurer   overviewr   r5   r&   average_ratesr)   upcoming_eventsr7   chartsr   r   r   r;   r;      sU    1 ;  7D $2I "#H#%I*,M-48OFr   r;   N)r	   rest_frameworkr   
Serializerr   r   r   r&   r)   r2   r7   r;   r   r   r   <module>rD      s     '#+00 #// 2+00 &[33  k44 &!7!7 {--  +"8"8  r   