
    =h                         d dl mZmZmZmZ d dl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  G d deeef         Zy	)
    )OptionalListDictAny)Session)SpecialHoliday)date)BaseRepository)SpecialHolidaySchemaCreateSpecialHolidaySchemaSpecialHolidayResponseSchemac                        e Zd Zdef fdZdedee   fdZdedee	   fdZ
dedefdZd	ed
edede	fdZdd	edededeeef   fdZd	ededee	   fdZded	edefdZ xZS )SpecialHolidayRepositorydbc                 .    t         |   |t               y N)super__init__r   )selfr   	__class__s     U/var/www/html/phonemate/phone_mate_backend/repositories/special_holiday_repository.pyr   z!SpecialHolidayRepository.__init__   s    ^,    db_modelreturnc                     t        |j                  |j                  |j                  |j                  |j
                  |j                        S )N)id
company_idr	   name
created_at
updated_at)r   r   r   r	   r   r   r    r   r   s     r   
_to_entityz#SpecialHolidayRepository._to_entity   s?    #{{******
 	
r   c                 Z    t        |j                  |j                  |j                        S )Nr   r	   r   )r   r   r	   r   r!   s     r   _to_responsez%SpecialHolidayRepository._to_response   s$    +{{
 	
r   entityc                 Z    t        |j                  |j                  |j                        S N)r   r	   r   )r   r   r	   r   )r   r&   s     r   _to_db_modelz%SpecialHolidayRepository._to_db_model"   s&    ((
 	
r   r   holiday_dater   c                 @  K   t        |||      }t        |j                  |j                  |j                        }| j
                  j                  |       | j
                  j                          | j
                  j                  |       | j                  |      S wr(   )
r   r   r   r	   r   r   addcommitrefreshr%   )r   r   r*   r   holidayr   s         r   create_holidayz'SpecialHolidayRepository.create_holiday)   s}     ,!

 "))

 	H!  **s   BBstartlimitc                   K   | j                   j                  t              j                  t        j                  |k(        j                         }| j                   j                  t              j                  t        j                  |k(        j                  |      j                  |      j                         }|D cg c]&  }|j                  |j                  |j                  d( }}||dS c c}w w)Nr$   )datatotal_count)r   queryr   filterr   countoffsetr2   allr   r	   r   )r   r   r1   r2   totalholidaysr/   formatted_holidayss           r   get_by_companyz'SpecialHolidayRepository.get_by_company9   s     n-44^5N5NR\5\]cce77==0VN--;<VE]U5\SU	 	 $
 $	 jj
 $ 	 
 ' 
 	

s   B=C6?+C1*C6r	   c                    K   | j                   j                  t              j                  t        j                  |k(  t        j
                  |k(        j                         }|r| j                  |      S d S wr   )r   r6   r   r7   r   r	   firstr%   )r   r   r	   r/   s       r   get_by_company_and_datez0SpecialHolidayRepository.get_by_company_and_dateQ   se     ''--/66%%34'
 %' 	 .5t  )>$>s   A5A7
holiday_idc                   K   | j                   j                  t              j                  t        j                  |k(  t        j
                  |k(        j                         }|sy| j                  |       d {   S 7 w)NF)r   r6   r   r7   r   r   r@   delete)r   rB   r   r/   s       r   delete_holidayz'SpecialHolidayRepository.delete_holidayX   sh     ''--/66+%%3
 %' 	 [[,,,,s   A7B 9A>:B )   
   )__name__
__module____qualname__r   r   r   r   r   r"   r   r%   r)   intr	   strr0   r   r   r>   rA   boolrE   __classcell__)r   s   @r   r   r      s    -7 -
> 
h?S6T 

^ 
A]8^ 

#7 
N 
+s +$ +c +Vr + 
s 
3 
3 
X\]`be]eXf 
0? ?3 ?8TpKq ?-s - - -r   r   N)typingr   r   r   r   sqlalchemy.ormr   modelsr   datetimer	   repositories.base_repositoryr
   schemas.holidayr   r   r   r    r   r   <module>rV      s:    , , " !  7 R-~.BN.RS R-r   