
    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
 d dlmZ d dlmZmZ d dlmZ d d	lmZ  G d
 d      Zy)    )funcselect)schema)JWTPayloadSchema)Session)Messages)HTTPException)PromotionCalenderBaseTblPromotionCalender)CustomResponse)Listc                   z    e Zd ZdedefdZdej                  fdZde	fdZ
deej                     fdZd	e	fd
Zy)PromotionCalenderServicedbtokenc                      || _         || _        y )N)r   r   )selfr   r   s      I/var/www/html/retail-simulation-api/app/api/promotion_calender/service.py__init__z!PromotionCalenderService.__init__   s    
    requestc                 \  K   t        t        j                               j                  t              j                  t        j                  |j                  k(        }| j                  j                  |      }|j                         }|dk\  rt        dd|j                   d      t	        di |j                         }| j                  j                  |       | j                  j                          | j                  j                  |       t        dt         j"                        S w)	N   i  z$Maximum of 3 promotions allowed for .status_codedetail1statusmessage )r   r   countselect_fromr   wheremonthr   execute
scalar_oner	   
model_dumpaddcommitrefreshr   r   PROMOTION_COLENDER)r   r   stmtresultr#   created_datas         r   createdz PromotionCalenderService.created   s     djjl#//0DEKK &&'--7
 &!!#A:=gmm_AN 
 ,Cg.@.@.BCL!%//
 	
s   D*D,group_idc                    K   t        j                  || j                        }|st        dd      |D cg c]!  }t        j
                  j                  |      # c}S c c}w w)Ni  zGet group ID not foundr   )r   getr   r	   r   PromotionCalenderResponsemodel_validate)r   r2   
geted_data	get_groups       r   getedzPromotionCalenderService.geted0   sX     )--h@
C8PQQ\fg\fy00??	J\fgggs   4A$&AA$c                 p  K   |D ]y  }t        j                  |j                               }|j                  t	        dt
        j                        c S t        j                  |j                  || j                         { | j                  j                          t	        dt
        j                        S wNz-1r   r   )r
   r6   r)   promotion_idr   r   PROMOTION_COLENDER_NOTr   updater   r+   PROMOTION_COLENDER_UPDATE)r   r   requpdated_datas       r   updatedz PromotionCalenderService.updated6   s     C0??@PQL((0%T8;Z;Z[[ ''(A(A<QUQXQXY	 
 	S(2T2TUUs   B4B6r<   c                    K   t        j                  || j                        }|st        dt        j
                        S t        dt        j                        S wr;   )r   deleter   r   r   r=   PROMOTION_COLENDER_DELETE)r   r<   deleted_datas      r   deletedz PromotionCalenderService.deleted?   sE     +22<I!x7V7VWWS(2T2TUUs   AAN)__name__
__module____qualname__r   r   r   r   PromotionCalenderCreater1   intr9   r   PromotionCalenderUpdaterB   rG   r"   r   r   r   r      s]    ' )9 
V%C%C 
>h3 hVD)G)G$H VV Vr   r   N)
sqlalchemyr   r   app.api.promotion_calenderr   app.dependency.authanticationr   sqlalchemy.ormr   app.locale.messagesr   fastapir	   "app.models.main.promotion_calenderr
   r   app.utils.schemas_utilsr   typingr   r   r"   r   r   <module>rW      s,    # - : " ( ! Z 2 7V 7Vr   