
    {Beb                         d dl 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mZ d dlmZmZ d dlmZ d d	lmZ  G d
 de          ZdS )    N)selectinload)shop_logger)BaseRepository)selectdelete)agentCreateAgent)SequenceList)partner_agent)base_dbc                       e Zd Zdedeej                 fdZdedeej                 fdZ	de
fdZdedej        fdZdefd	Zdej        fd
Zd ZdS )AgentRepositoryagent_idreturnc                   K   t          t          j                                      t          j        j        |k              }| j                            |           d{V }|                                                                }g }|D ]V}| j        	                    t          j
        |j                   d{V }|t          j        |j        |j                  gz  }W|S )z
        Loads partner of selected agent given by id
        :param agent_id: the id of selected agent
        :return: a sequence of partner of selected agent
        N)
partner_idpartner_name)r   dbAgentPartnerwhere	agent_numasync_sessionexecutescalarsallgetPartnerpartner_numschemaname)selfr   stmtquerypartner_id_of_agentresultpartners          Q/Users/daniilossinkin/PycharmProjects/ShopsBackend/src/data/repositories/agent.pyget_agents_partnerz"AgentRepository.get_agents_partner   s       bo&&,,R_-F(-RSS(0066666666#mmoo1133* 	 	G .222:w?RSSSSSSSSG#&2!(   FF     r   c                 :  K   t          t          j                                      t          j                                      t          j        j        |k              }| j                            |           d{V }d |	                                D             S )z
        Loads sales order types of selected partner given by id
        :param partner_id: the id of selected partner
        :return: a sequence of sales order types for selected partner
        Nc                 d    g | ]-}|j         d k    t          j        |j         |j                  .S )201)sales_order_type_codesales_order_type_designation)coder    PartnerSalesOrderTypesdesignation).0sales_order_types     r(   
<listcomp>z9AgentRepository.get_sales_order_types.<locals>.<listcomp>1   sS     
 
 

 !3C3HE3Q3Q	 )&6&;-=-I   4R3Q3Qr*   )
r   r   SalesOrderTypejoinSalesOrderTypePartnerr   r   r   r   r   )r"   r   r#   r$   s       r(   get_sales_order_typesz%AgentRepository.get_sales_order_types'   s       r())R-..b.:jHII 	 (0066666666
 

 %*IIKK
 
 
 	
r*   r   c                   K   t          j        |j        |j        |j                  }| j                            |           | j                                         d{V  t          j	        dt          |                      ddiS )zd
        Creates a new agent
        :param agent: agent data for creation
        :return:
        )r   r!   emailNzAgent created:successT)r   Agentnumberr!   r;   r   addcommitr   infostr)r"   r   agent_to_inserts      r(   create_agentzAgentRepository.create_agent9   s       (l+
 
 

 	/// '')))))))))@#o*>*>@@AAAt
 	
r*   c                   K   | j                             t          j        |t	          t          j        j                  t	          t          j        j                  g           d{V }t          j        |j        |j	        |j
        |j        |j        |j        |j        |j        j         d|j        j         |j        j         d|j        j         |j        d|j                  S )zt
        Loads partner by id
        :param partner_id: the partner id
        :return: partner information
        )optionsN- )r!   street
postalcodecitylandiso_codesurcharge_codeshippingpaymentallow_ordersearchstringr;   )r   r   r   r   r   rO   rP   r    r!   rI   rJ   rK   rL   rM   rN   r0   r2   allow_ordersr;   )r"   r   r'   s      r(   get_partnerzAgentRepository.get_partnerK   s       *..rz:,--+,,P
.        
 ~>)%"1(-NN0@0LNN+KKgo.IKK,-
 
 
 	
r*   c                 j   K   | j                             t          j        |           d {V }|j        S N)r   r   r   r   r;   )r"   user_idusers      r(   get_partner_emailz!AgentRepository.get_partner_emaile   s:      '++BJ@@@@@@@@zr*   c           
      4  K   | j                             t          t          j                                      t          j        j        |k                         d {V }t          j        |j        |j	        |j
        |j        |j        dd|j                  S )NTrH   )r!   rI   rJ   rK   rL   rQ   rR   agent_nr)r   scalarr   r   r=   r   usernamer    r!   rI   rJ   rK   rL   r   )r"   r]   r   s      r(   	get_agentzAgentRepository.get_agenti   s      (//28""28#4#@AA
 
 
 
 
 
 
 
 |<'_	
 	
 	
 		
r*   c                    K   | j                             t          j        |           d {V }||_        | j                             |           d {V  | j                                          d {V  d S rV   )r   r   r   r   r;   merger@   )r"   r   r;   r'   s       r(   change_partner_emailz$AgentRepository.change_partner_emailx   s      *..rz:FFFFFFFF &&w///////// '')))))))))))r*   N)__name__
__module____qualname__intr
   r    r   r)   r1   r9   r	   rD   r   rT   rB   rY   r=   r^   ra    r*   r(   r   r      s         &BU9V    ,
c 
hvGd>e 
 
 
 
$
 
 
 
 
$
C 
FN 
 
 
 
4#    
6< 
 
 
 
* * * * *r*   r   )datetimeloggingsqlalchemy.ormr   src.config.loggerr   src.data.repositories.baser   
sqlalchemyr   r   src.data.model.schemasr   r    r	   typingr
   r   src.data.model.dbr   r   r   r   rf   r*   r(   <module>rp      s      ' ' ' ' ' ' ) ) ) ) ) ) 5 5 5 5 5 5 % % % % % % % % ? ? ? ? ? ? ? ? ! ! ! ! ! ! ! ! 1 1 1 1 1 1 % % % % % %m* m* m* m* m*n m* m* m* m* m*r*   