
    ܦh,              
       	   d dl mZmZmZmZ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mZ d dlZ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 d dlmZ d dlZd dlZd dlZd dl Z d dl!m"Z"m#Z# d dl$m%Z%  eddg      Z& ejN                  dd      Z( ejN                  dd      Z)ejT                  jW                  ejT                  jY                  ejT                  j[                  e.      ddd            Z/ejT                  jY                  e/ddddd      Z0 ejN                  d      Z1 ejN                  d      Z2 ejN                  d      Z3 ejN                  d      Z4 ejj                  e0d !        ee4d"#      Z6d$Z7e&jq                  d%ejr                   ee      g&       ed       ed       ed       ee      fd'e
e:   d(e
e:   d)e
e   d*efd+       Z;e&jy                  d,eejr                      ee      g&       ee      fd-e=d*efd.       Z>e&jy                  d%eeejr                         ee      g&       ee      fd*efd/       Z?e&j                  d,ejr                   ee      g&      e&j                  d,ejr                   ee      g&       ee      fd-e=d0ej                  d*efd1              ZCe&j                  d, ee      g2       ee      fd-e=d*efd3       ZD ed4d5g      ZEeEjq                  d%ej                   ee      g&       ee      fd0ej                  d*efd6       ZHeEjy                  d,eej                      ee      g&       ee      fd-e=d*efd7       ZIeEjy                  d%eeej                         ee      g&       ed8d9:       ee      fd9e=d*efd;       ZJeEj                  d,ej                   ee      g&      eEj                  d,ej                   ee      g&       ee      fd-e=d0ej                  d*efd<              ZLeEj                  d,eej                      ee      g&       ee      fd-e=d*efd=       ZN ed>d?g      ZOeOjy                  d@      dA        ZPeOjy                  dB      dIdCe:dDe:fdE       ZQeOjq                  dFeej                      ee      g&       ee      fdGej                  d*efdH       ZTy)J    )	APIRouterDependsstatusFile
UploadFileHTTPExceptionFormQuery)Optional)Session)get_db   )
controllerschemaN)Path)APIResponse)List)get_current_user)URLSafeSerializer)RedirectResponseJSONResponse)	urlencodez/master-accountszMaster Accounts)prefixtagsBASE_URLzhttp://localhost:8000BASE_UI_URLzhttp://localhost:5173z..menu_designdesignerstatic	marketingimages	FB_APP_IDFB_APP_SECRETOAUTH_REDIRECT_URL
SECRET_KEYT)exist_okzfb-oauth)saltz https://graph.facebook.com/v20.0/)response_modeldependenciessocial_media_nameaccount_type
icon_imagedbc                 N   d }|r|j                   dvrt        dd      t        j                         j                   dt
        j                  j                  |j                         }t
        j                  j                  t        |      }	 t        |d      5 }t        j                  |j                  |       d d d        t          d	| }t#        j$                  | ||
      }	t'        j(                  |	|      S # 1 sw Y   BxY w# t        $ r}t        dd      d }~ww xY w)N)z	image/pngz
image/jpegz
image/webp  zUnsupported image formatstatus_codedetail_wb  zFailed to save imagez/static/marketing/images/)r+   r-   r,   )content_typer   uuiduuid4hexospathbasenamefilenamejoinSTATIC_PATHopenshutilcopyfileobjfile	Exceptionr   r   MasterAccountCreater    create_master_account_controller)
r+   r,   r-   r.   icon_urlr>   	file_pathbufferedatas
             @/var/www/html/hubwallet-dev/src/marketing/apps/Account/router.pycreate_master_accountrN   $   s    H""*SSC8RSSjjl&&'q)9)9*:M:M)N(OPGGLLh7		Pi& <&"":??F;<
 Z8
C%%+!D 66tR@@< < 	PC8NOO	Ps0   D	 !C=<D	 =DD	 		D$DD$z/{id}idc                     	 t        j                  | |      }t        dd|      S # t        $ r}|d }~wt        $ r)}t        t
        j                  t        |            d }~ww xY w)NTz#Master account fetched successfullysuccessmessagerL   r1   )r   get_master_account_controllerr   r   rE   r   HTTP_500_INTERNAL_SERVER_ERRORstr)rO   r.   resultrK   s       rM   get_onerX   F   sk    ,::2rB9
 	

   ,(M(M$'F, 	,,s   #& 	A&1A&$A!!A&c                     	 t        j                  |       }t        dd|      S # t        $ r}|d }~wt        $ r}t        dt        |            d }~ww xY w)NTz$Master accounts fetched successfullyrQ   r6   r1   )r   "get_all_master_accounts_controllerr   r   rE   rV   )r.   rW   rK   s      rM   get_allr[   X   s^    
<>>rB:
 	

   <CF;;<s   "% 	A0AAArL   c                 0    t        j                  | ||      S N)r    update_master_account_controllerrO   rL   r.   s      rM   updater`   h   s     66r4DD    )r*   c                 .    t        j                  | |      S r]   )r    delete_master_account_controllerrO   r.   s     rM   deletere   n   s    66r2>>ra   z/connected-accountszConnected Accountsc                 r    	 t        j                  ||       S # t        $ r}t        dd|       d }~ww xY w)Nr6   Failed to insert r2   details)r   #create_connedted_account_controllerr   )rL   r.   rK   s      rM   create_connected_accountrk   v   sB    M==bFF M6Gs4KLLMs    	616c                 J    t        j                  ||       }t        dd|      S )NTz'Connected accounts fetched successfullyrQ   )r   $get_all_connected_account_controllerr   )rO   r.   conected_accountss      rM   get_connected_accountro      s+    "GG2N9 ra   .	branch_id)aliasc                 J    t        j                  ||       }t        dd|      S )NTz&Connected account fetched successfullyrQ   )r   -get_connected_account_by_branch_id_controllerr   )rp   r.   connected_accounts      rM   get_connected_by_brach_idru      s-    "PPQST]^8 ra   c                 0    t        j                  || |      S r]   )r   $updated_connected_account_controllerr_   s      rM   updated_connected_acountrx      s     ::2r4HHra   c                 J    t        j                  ||        t        ddd       S )NTz&Connected account deleted successfullyrQ   )r   $deleted_connected_account_controllerr   rd   s     rM   deleted_connected_accountr{      s(    33B;8 ra   z/auth/facebookzSocial Media Authz/loginc                     K   t         j                  t        t        j                               t	        j
                  d      d      } d}t        t        | d|d}dt        |       }t        |      S w)N   )tsnoncez8pages_show_list,pages_read_engagement,pages_manage_postscode)	client_idredirect_uristateresponse_typescopez,https://www.facebook.com/v20.0/dialog/oauth?)
signerdumpsinttimesecretstoken_urlsafeAPP_IDREDIRECT_URIr   r   )r   r   paramsurls       rM   fb_loginr      sl      LLDIIK 07;P;PQS;TUVEFE$F 969J8K
LCC  s   A2A4z	/callbackr   r   c                    K   	 t         j                  |       | st        dd      t	        t
         d|  d|       S # t        $ r t        dd      w xY ww)Nr0   zInvalid stater1   zMissing codez&social-media/connect?provider=fb&code=z&state=)r   loadsrE   r   r   r   )r   r   s     rM   fb_callbackr      sm     EU NCC {m+QRVQWW^_d^efgg  EODDEs   A? &AAAz/update-accountpayload_datac                   K   t        d|        t        j                  d      4 d {   }t         d}|j	                  |t
        t        t        | j                  d       d {   }|j                          |j                         }|d   }|j	                  |dt
        t        |d	       d {   }|j                          |j                         }|d   }|j	                  d
d      }	d d d       d {    t        t        j                               t        	      z   }	t        j                  d      4 d {   }|j	                  t         ddd       d {   }|j                          |j                         j	                  dg       }
d d d       d {    
D ]r  }d|v s|d   }|d   }|d   }t        j                  | j                  | j                   | j"                  | j$                  ||||	      }	 t'        j(                  ||      }t t-        ddt        j.                  t        j0                  j3                        g            S 7 <7  7 7 r# 1 d {  7  sw Y   xY w7 C7 !7 # 1 d {  7  sw Y   xY w# t*        $ r}t+        dd|       d }~ww xY ww)Nzdata ==============    )timeoutz/oauth/access_token)r   client_secretr   r   )r   access_tokenfb_exchange_token)
grant_typer   r   r   
expires_ini O z/me/accountszid,name,category,access_token)r   fieldsrL   rO   name)master_account_idstore_idrp   user_idtokenexternal_account_idexternal_account_name
expires_atr6   rg   rh   Tz'Connected accounts updated successfully)rL   rQ   )printhttpxAsyncClientGRAPHgetr   
APP_SECRETr   r   raise_for_statusjsonr   r   r   ConnectedAccountCreater   r   rp   r   r   rj   r   r    FBUpdateConnectedAccountResponseConnectedAccountOutmodel_validate)r   r.   client	token_urlrrL   
user_tokenr2llr   pagesp
page_tokenpage_id	page_nameconnected_account_datacreated_accountrK   s                     rM   fb_update_authr      s     

 .   , 7 7g01	**Y'( %%	0
*   	
vvx.)
 ::i-'!+	1
:   	WWY'
VVL+6
/7 72 TYY[!C
O3J  , ) )**wl3&5=
*   	
VR() )  UQ>*JgG&	I%+%B%B$0$B$B'00(22&.."&-(1'	&"U","P"PQSTj"k!U* 944,,;;OLM u77 7 7 76)) ) ) )6 ! U#>OPQs<STTUs   'KI%K;I1(I()AI15I+6;I11K<I.=AKJK!J)J
*4JK)J*K8AKJ$#AK(I1+I1.K1J7I:8J?	K
JKJ!JJ!K$	K-J==KK)NN)Ufastapir   r   r   r   r   r   r	   r
   typingr   sqlalchemy.ormr   src.utils.dbr    r   r   r;   r8   rB   pathlibr   src.utils.responser   r   src.apps.auth.controllerr   itsdangerousr   r   r   r   fastapi.responsesr   r   urllib.parser   routergetenvr   r   r<   abspathr?   dirname__file__BASE_DIRr@   r   r   r   r%   makedirsr   r   postMasterAccountOutrV   rN   r   r   rX   r[   putpatchMasterAccountUpdater`   re   connected_routerr   r   rk   ro   ru   ConnectedAccountUpdaterx   DeleteAccountResponser{   fb_auth_routerr   r   r   FBUpdateConnectedAccountRequestr    ra   rM   <module>r      s   [ [ [  "    	    *  5 *   < "	,4E3F	G 299Z!89bii'>?77??277<<(A4tTUggll8]J+W_`	;	RYY'
ryy-.RYY|$
 K$ '	:J	7* S!8!8wO_G`Fab'+Dz"&t*'+Dz&/	A}A3-A $A 		A cAB GK0G0G$HX_`pXqWrs#*6? , , , t," CD1H1H,I JZabrZsYtu!&/ < < v< GF$;$;7ScKdJefgf&=&=WUeMfLghDKFO Es E&44 E' E i gE wW-=%>$?@")&/ ?s ? ? A?
 $9AU@VW s6+E+EU\]mUnTopNUV\o M&"?"? MG M qM* gk&:T:T.Uelm}e~d  A/6v S W  A c+d6;U;U6V*Wgno  hA  gB  C/4S/L[bci[j  QX  C gV-G-GW^_oWpVqrv/I/IY`aqYrXstU\]cUd I I)F)F I7 I u sI
 F<X<X0Yip  rB  jC  iD  E5<V_ # 7  E "2:M9NOH! ! K hC hs h !h &k&BiBi6j  {B  CS  {T  zU  V[bci[j Mf&L&L MQX M VMra   