
    kh                     <   d dl 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
 dedej                  fdZded	efd
ZdefdZded	edej                   fdZded	efdZdedej&                  fdZdedefdZded	efdZded	edej.                  fdZded	efdZy)    )Session)HTTPExceptionstatus)modelschema)Optional)
joinedloaddbdatac                     t        j                  di |j                         }| j                  |       | j	                          | j                  |       |S N )r   MasterAccount
model_dumpaddcommitrefresh)r
   r   new_accounts      A/var/www/html/hubwallet-dev/src/marketing/apps/Account/service.pycreate_master_accountr   	   sC    %%:(9:KFF;IIKJJ{    idc                     | j                  t        j                        j                  t        j                  j                  |k(  t        j                  j
                  dk(        j                         S NF)queryr   r   filterr   
is_deletedfirst)r
   r   s     r   get_master_accountr      sP    88E''(//0C0C0F0F"0LeNaNaNlNlpuNuv||~~r   c                     | j                  t        j                        j                  t        j                  j                  dk(        }|j                         S r   )r   r   r   r   r   all)r
   r   s     r   get_all_master_accountsr"      s?    HHU(()00%2E2E2P2PTY2YZE99;r   c                     t        | |      }|st        dd      |j                  d      j                         D ]  \  }}t	        |||        | j                          | j                  |       |S )N  Account not foundstatus_codedetailTexclude_unset)r   r   dictitemssetattrr   r   )r
   r   r   accountfieldvalues         r   update_master_accountr1      sl     R(G4GHH			5;;= 'u&'IIKJJwNr   c                 h    t        | |      }|st        dd      d|_        | j                          y )Nr$   r%   r&   T)r   r   r   r   )r
   r   r.   s      r   delete_master_accountr3   !   s0     R(G4GHHGIIKr   c                     t        j                  di |j                         }| j                  |       | j	                          | j                  |       |S r   )r   ConnectedAccountr   r   r   r   )r
   r   r.   s      r   create_connected_accountr6   ,   sA    $$9t'89GFF7OIIKJJwNr   	branch_idc                 L   | j                  t        j                        j                  t	        t        j                  j
                              j                  t        j                  j                  |k(  t        j                  j                  dk(        j                         }|S r   )
r   r   r5   optionsr	   master_accountr   r7   r   r!   )r
   r7   account_brach_ids      r   !get_connected_account_by_brach_idr<   D   s{    xx 6 67??5))889f((I5))U2 
ce  r   c                     | j                  t        j                        j                  t        j                  j                  |k(  t        j                  j
                  dk(        j                         }|S r   )r   r   r5   r   r   r   r   r
   r   
account_ids      r   get_connect_accounts_by_idr@   Q   sk    %001889O9O9R9RVX9XY^YoYoYzYz  }B  ZB  C  I  I  KJr   c                     t        | |      }|st        dd      |j                  d      }|j                         D ]  \  }}t	        |||        | j                          | j                  |       |S )Nr$   zConnected account not foundr&   Tr)   )r@   r   r   r,   r-   r   r   )r
   r   r   r.   update_datar/   r0   s          r   update_connected_accountrC   W   ss    (R0G4QRR///5K#))+ 'u&' IIKJJwNr   c                 f    t        | |      }|sy | j                  |       | j                          |S )N)r@   deleter   r>   s      r   delete_accountrF   g   s1    +Br2J IIjIIKr   N)sqlalchemy.ormr   fastapir   r   src.marketing.apps.Accountr   r   typingr   r	   MasterAccountCreater   intr   r"   MasterAccountUpdater1   r3   ConnectedAccountCreater6   r<   r@   ConnectedAccountUpdaterC   rF   r   r   r   <module>rP      s    " ) 4  %g V-G-G 7   g 3 f6P6P g 3  V-J-J 0' c ' c  c 9V9V  g # r   