
    e                     *   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
 d dlmZmZ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mZ d dlmZmZmZmZ ddl d dl Z d dlmZm!Z! d dl"Z"d dl#m$Z$ d dl%m&Z&m'Z' d dl(m)Z) d dl*m+Z+ d dl,Z,d dl-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4 d Z5e
jl                  Z7e
jp                  Z9e
jt                  Z;e
jx                  Z=e
j|                  Z?e
j                  ZA ee7e9      ZB	  G d de      ZC	  G d de      ZD G d de      ZE G d  d!e      ZF G d" d#e      ZG G d$ d%e      ZH G d& d'e      ZI G d( d)e      ZJ G d* d+e      ZK G d, d-e      ZL G d. d/e      ZM G d0 d1e      ZN G d2 d3e      ZO G d4 d5e      ZPy)6    )render)APIView)Responsestatus)datetime)settings)	SyncGrant	ChatGrant
VideoGrant)Client)AccessToken)authenticatedseerauthenticated)SeerUserSeerUserNotificationsFortuneAppointmentBook)FortuneTellerFotuneTellerWalletFortuneTellerTranscationsFortuneTellerNotifications   )*N)r   	timedelta)	timesince)QCount)FCMNotification)GeneralSettings)TransferToConnectedAccount)render_to_string)messages)mailc                     t         j                  j                         j                         } | rV| j                  sy| j                  }|dd  }t        |      dz   }t        |      }|j                  d      }dt        |      z   S y)NTRANS000001   r   TRANS)r   objectsalllasttranscation_idintstrzfill)lastObjtheIds     2/var/www/html/Ryun_Seer/seer/conversation/views.pygenerateTranscationsIdFortuner2   !   sy    
#
+
+
/
/
1
6
6
8			
%ab	%E
1%E
%A%	U		    c                       e Zd Zd Zy)CreateConversationc                    	 	 t        |      }t        j                  j                  |      j                         }|st        ddit        j                        S |j                  }|j                  d      }|j                  d      }|st        ddit        j                        S |st        ddit        j                        S t        j                  j                  |      j                         }t        j                  j                  |      j                         }	|st        dd	it        j                        S |	st        dd
it        j                        S t!        j"                  |j"                        }
t!        j"                  |j"                        }	 |	j$                  }|	j&                  }t)        t        j*                  |j-                  d            \  }}t/        j0                  |dz   |z   d      }t/        j0                  |dz   |z   d      }	 |
j3                  |      }|
j3                  |      }|j5                  |      }|j5                  |      }t/        j6                  t!        j"                  |j"                              }	 ||k\  rt        ddit        j                        S ||k  rt        ddit        j                        S 	 t8        j                  j                  ||      j                         }|r|j:                  |	_        |	j=                          |j>                  }t        t@        jB                        }|jD                  dk(  rZddd|jF                  z   dz   |jH                  z   dz   |jJ                  |j:                  |d}tM        |      jO                  ||      }|jD                  dk(  rd}d|jF                  z   dz   |jH                  z   dz   }ddd|jF                  z   dz   |jH                  z   dz   |jJ                  t        |jF                        dz   t        |jH                        z   |j:                  |d}tM        |      jO                  ||||      }tP        j                  jS                  d|jF                  z   dz   |jH                  z   dz   d|       t        d |j:                  d!t        jT                        S t        |jF                        t        |jF                        z   t        |jV                        z   t        |jV                        z   }tY        |      }t[        j\                  |       d"j_                  |      } t`        jb                  jd                  jb                  jS                  | #      }!t8        j                  jS                  ||      }"|!jf                  |"_        t/        j6                         |"_4        |"j=                          |!jf                  |	_        |	j=                          t        |jV                        t        |jF                        dz   t        |jH                        z   t        |jj                        d$}#tm        jn                  |#      }$t`        jb                  jd                  jc                  |!jf                        jp                  jS                  t        |jV                        |$%      }%t        |jV                        t        |jF                        dz   t        |jH                        z   t        |jJ                        d$}&tm        jn                  |&      }'t`        jb                  jd                  jc                  |!jf                        jp                  jS                  t        |jV                        |'%      }(|%jf                  |"_9        |(jf                  |"_:        |"j=                          |j>                  }t        t@        jB                        }|jD                  dk(  rZddd|jF                  z   dz   |jH                  z   dz   |jJ                  |"j:                  |d}tM        |      jO                  ||      }|jD                  dk(  rd}d|jF                  z   dz   |jH                  z   dz   }ddd|jF                  z   dz   |jH                  z   dz   |jJ                  |"j:                  |d}tM        |      jO                  ||||      }tP        j                  jS                  d|jF                  z   dz   |jH                  z   dz   d|       t        d&|"j:                  d!      S # t        $ r0}t        dt        |      it        j
                        cY d }~S d }~ww xY w# t        $ r0}t        dt        |      it        jv                        cY d }~S d }~ww xY w)'Nmessager   idFortune teller not foundseer_idappointment_idseer_id is  requiredappointment_id is  requiredSeer User not foundappointment not found- %d %B %Y %I:%M %pThe appointment has expired.!The appointment is in the future.)fortune_teller	seer_userAndroidconversation_startCHAT STARTED FROM FORTUNE SIDEzYour Chat have started with, Please Join!)typetitler7   imagetwilio_channel_sidr<   api_keyregistration_iddata_messageIos)rJ   zYour Chat start with  please join.)rL   rM   r7   rN   namerO   r<   rS   message_titlemessage_bodyrT   r7   notification_typerG   Conversation already existsr7   rO    friendly_namer9   rW   rN   identity
attributessuccess)<r   	Exceptionr   r-   r   HTTP_401_UNAUTHORIZEDr   r(   filterfirstHTTP_404_NOT_FOUNDdatagetHTTP_400_BAD_REQUESTr   r   pytztimezoneappointment_timeappointment_datemapstripsplitr   strptimelocalize
astimezonenowConversationrO   save	fcm_tokenr	   FIREBASE_SERVER_KEYdevice_type
first_name	last_namerN   r   notify_single_devicer   createHTTP_200_OKr9   listrandomshufflejoinclientconversationsv1sidlast_messageprimary_imagejsondumpsparticipantsseer_user_twilio_idfortune_teller_twilio_idHTTP_500_INTERNAL_SERVER_ERROR))selfrequestuiderF   rl   seer_user_idr<   rG   appointment_objuser_timezonefortune_timezonerq   rr   booked_start
booked_endappointment_datetime_startappointment_datetime_endstart_time_user_timezoneend_time_user_timezonestart_time_fortuneend_time_fortunecurrent_timeexisting_conversationrS   
server_keyrT   resultrY   rZ   concatinate_namessuffle_stringconversation_nameconversationconversation_objseer_user_attributesseer_json_attributesseer_user_participantfortune_teller_attributesfortune_json_attributesfortune_teller_participants)                                            r1   postzCreateConversation.post;   sP	   }TN

 C "))00C08>>@>
Y :;FD]D]^^
,,4((9%<HH-.>
Y 67@[@[\\
Y =>vGbGbcc&&,&7==?9+33::n:MSSU?
Y 56v?X?XYY
Y 78AZAZ[[ ==!3!34=mmN$;$;<h%66%66!#))-=-C-CC-HI< ( 1 12BS2H<2WYl m&//0@30F0SUhiO+445OP)223KL0;;<LM,778HI,,t}}n.E.EFG<V&&Y >?vGbGbcc''Y CDFLgLghh^ (//66n`i6jppr)>)Q)QO&))OX112J	)354n6O6OOPSSTbTlTllm}}"(( 5 H H*\ j1FFWf  wCF  DV%6],n.G.GGKNLdLddett\343^5N5NNsRSaSkSkkl||"((~001#5c.:R:R6SS 5 H H*\ j1FFWf  wD\ G ;V !!((1NP^PiPi1ijm1mn|  oG  oG  2G  HX  2X  k  JS(  T =TiT|T|}  FL  FX  FX  Y  Y.334s9;O;O7PPSVW`WcWcSddgjkyk|k|g}})*=	>>- ww}- &&	r}v-v. 
 #**11Zc1d)5)9)9&#+<<> (4(8(8?%  #9<<0I<P<P8QRU8UVYZcZmZmVn8n	''( **%9:!//R]<##$\VS&2FVG	  %((9(9$:#nF_F_B`adBdehiw  jB  jB  fC  CC$$% "ZZ(AB & 4 4R]<##$\VS**+7NVO	  +@*C*C'/I/M/M, ((?H001:y(243^5N5NNsRSaSkSkkl||!''/BB)
L Z0EEVe  vBE  CFu$5M0.2K2KKCOP^PhPhhiyyL243^5N5NNsRSaSkSkkl||!''/BB)
L Z0EEVe  vCL F :F   ''0M~OhOh0hil0lm{  nF  nF  1F  GW  1W  j~  IR'  S
i>N>a>ab
ccq  NYA'0L0LMMNr 
 T
Ic!f%V-R-R
SSTs|   e Af Af (f A:f f !Ef 6!f Hf  Q<f 	f&%fff ff 	g"%gggN__name__
__module____qualname__r    r3   r1   r5   r5   :   s	    ~Tr3   r5   c                       e Zd Zd Zy)CreateUserToUserConversationc                 	   	 	 t        |      }t        j                  j                  |      j                         }|st        ddit        j                        S |j                  }|j                  d      }|st        ddit        j                        S t        j                  j                  |      j                         }|st        ddit        j                        S t        j                  j                  t        ||      t        ||	      z        j                         }|r(t        d
|j                   dt        j"                        S t        |j$                        t        |j$                        z   t        |j&                        z   t        |j&                        z   }	t)        |	      }
t+        j,                  |
       dj/                  |
      }t0        j2                  j4                  j2                  j7                  |      }t        j                  j7                  ||      }|j8                  |_        t;        j<                         |_        |jA                          t        |j&                        t        |j$                        dz   t        |jB                        z   t        |jD                        d}tG        jH                  |      }t0        j2                  j4                  j3                  |j8                        jJ                  j7                  t        |j&                        |      }t        |j&                        t        |j$                        dz   t        |jB                        z   t        |jD                        d}tG        jH                  |      }t0        j2                  j4                  j3                  |j8                        jJ                  j7                  t        |j&                        |      }|j8                  |_&        |j8                  |_'        |jA                          t        d|j                   d      S # t        $ r0}t        dt        |      it        j
                        cY d }~S d }~ww xY w# t        $ r0}t        dt        |      it        jP                        cY d }~S d }~ww xY w)Nr7   r   r8   user not foundr;   r=   r?   )seer_user_oneseer_user_two_id)seer_user_one_idseer_user_twor]   r^   r_   r`   )r   r   rB   rb   rc   rf   ))r   rg   r   r-   r   rh   r   r(   ri   rj   rk   rl   rm   rn   SeerUserConversationr   rO   r   r   r9   r   r   r   r   r   r   r   r   r   r   ry   r   r{   r   r   r   r   r   seer_user_one_twilio_idseer_user_two_twilio_idr   )r   r   r   r   seer_user_objrl   r   rG   r   r   r   r   r   r   r   r   r   seer_user_obj_attributesseer_two_json_attributesseer_user_obj_participants                       r1   r   z!CreateUserToUserConversation.post   s   YTN
G
$C ##**c*288:=
Y 01&:S:STT
,,4((9%<
Y 67@[@[\\&&,&7==?9
Y 56v?X?XYY 077>>MLA|=AB UW 
  =TiT|T|}  FL  FX  FX  Y  Y-223c):N:N6OORUV_VbVbRccfijwjzjzf{{)*=	>>- ww}- &&	r}v-v.  +2299dm9n)5)9)9&#+<<>   #9<<0I<P<P8QRU8UVYZcZmZmVn8n	''( **%9:!//R]<##$\VS&2FVG	  $'}'7'7#8MD\D\@]^a@abefsf}f}b~@~++, #jj)AB%33R]<##$\VS))*6NVO	  /H.K.K+.C.G.G+
i>N>a>ab
cci  NYA'0L0LMMNj 
 T
Ic!f%V-R-R
SSTsb   Q AR ;R AR $A/R K<R 	R
%R?R
 R R

R 	S%S;SSNr   r   r3   r1   r   r      s	    ZTr3   r   c                       e Zd Zd Zy)ConversationListc                 h   	 	 t        |      }t        j                  j                  |      j                         }|st        ddit        j                        S t        j                  j                  |      }g }|D ],  }|j                  |j                  d}|j                  |       . t        d|d      S # t        $ r0}t        dt        |      it        j
                        cY d }~S d }~ww xY w# t        $ r0}t        dt        |      it        j                        cY d }~S d }~ww xY w)	Nr7   r   r8   r:   rF   )r9   rO   rf   r7   rl   )r   rg   r   r-   r   rh   r   r(   ri   rj   rk   rz   r9   rO   appendr   )	r   r   r   r   rF   r   conversation_listr   conversation_datas	            r1   rm   zConversationList.get]  s   UN

 C "))00C08>>@>
Y :;FD]D]^^''..n.M=$|??':: ./ % i/@A
BB#  NYA'0L0LMMN$ 
 UYs1v&f.S.STTUsN   B< AC8 A C8 <	C5%C0*C5+C8 0C55C8 8	D1%D,&D1,D1Nr   r   r   rm   r   r3   r1   r   r   \  s    Ur3   r   c                       e Zd Zd Zy)SeerUserConversationListc           	         	 	 t        |      }t        j                  j                  |      j                         }|st        ddit        j                        S t        j                  j                  t        |      t        |      z        }g }|D ]Z  }|j                  |k7  r|j                  n|j                  }t        j                   j"                  j!                  |j$                        j&                  j)                  dd	      }	d
}
d
}d
}|	D ]r  }|j*                  r1|j*                  }
t-        |j.                        dz   }|j.                  }@|j0                  sMd}
t-        |j.                        dz   }|j.                  }t |j2                  |j$                  t        |j4                        dz   t        |j6                        z   |j8                  |
||d}|j;                  |       ] t        d|d      S # t        $ r0}t        dt        |      it        j
                        cY d }~S d }~ww xY w# t        $ r0}t        dt        |      it        j<                        cY d }~S d }~ww xY w)Nr7   r   r8   r   )r   )r   descr   )orderlimitr_   z agofilerB   )r9   rO   rW   rN   r   timemessage_daterf   r   )r   rg   r   r-   r   rh   r   r(   ri   rj   rk   r   r   r   r   r   r   r   rO   r"   r   bodyr   date_createdmediar9   r   r   r   r   r   )r   r   r   r   r   r   r   r   
other_userr"   r   r   r   recordr   s                  r1   rm   zSeerUserConversationList.getw  s5   1UN
G
$C ##**c*288:=
Y 01&:S:STT'//66q}7UVWfsVt7tu=$| 0</I/I]/Z++`l`z`zJ##	r}\445xt&t"	 
 LDL[[lv**+F2d((l
,,lv**+F2d((l  ??'::&&'#-J4H4H0II&&   ./A %D i/@B
CCY  NYA'0L0LMMNZ 
 UYs1v&f.S.STTUsU   H AH= DH= #BH= 	H:
%H5/H:0H= 5H::H= =	I6%I1+I61I6Nr   r   r3   r1   r   r   v  s    2Ur3   r   c                       e Zd Zd Zy)DeleteConversationc                    	 t         j                  j                         }|D ]S  }t        j                  j
                  j	                  |j                        j                          |j                          U t        ddi      S # t        $ r0}t        dt        |      it        j                        cY d }~S d }~ww xY w)Nr7   rf   r   )r   r(   r)   r   r   r   rO   deleter   rg   r-   r   r   )r   r   r   coverr   s        r1   r   zDeleteConversation.post  s    T'//335=u
))%*B*BCvx	LLN  Ii(
))	 T
Ic!f%V-R-R
SSTs   BB 	B>%B93B>9B>Nr   r   r3   r1   r   r     s    	Tr3   r   c                       e Zd Zd Zy)CreateTokenc                    	 	 t        |      }t        j                  j                  |      j                         }|st        ddit        j                        S |j                  }|j                  }|j                  d      }|st        ddit        j                        S t        j                  j                  |      j                         }|st        ddit        j                        S 	 |j                   }	|j"                  }
t%        t        j&                  |	j)                  d            \  }}t+        j,                  |
d	z   |j'                         z   d
      }t/        j0                  |j2                  j0                        }t/        j0                  |j0                        }	 |j5                  |      }|j7                  |      }t+        j8                  t/        j0                  |j0                              }	 ||k  r||z
  }nt;        d      ||z
  z
  }| }	 t=        t>        t@        tB        |      }tD        r!tG        tD              }|jI                  |       |||jK                         d}t        d|d      S # t        $ r0}t        dt        |      it        j
                        cY d }~S d }~ww xY w# t        $ r0}t        dt        |      it        jL                        cY d }~S d }~ww xY w)Nr7   r   r8   r:   r<   r>   r@   rA   rB   rC   r   daysrd   service_sidrd   remain_timetokenToken Created Successfullyr   )'r   rg   r   r-   r   rh   r   r(   ri   rj   rk   rl   r9   rm   rn   r   rq   rr   rs   rt   ru   r   rv   ro   rp   rG   rw   rx   ry   r   r   account_sidapi_sid
api_secretchat_service_sidr   	add_grantto_jwtr   )r   r   r   r   rF   rl   rd   r<   r   rq   rr   r   r   appointment_datetimer   r   r   r   current_datetimetime_differencer   
chat_grantalldatas                          r1   r   zCreateToken.post  s   RTN

 C "))00C08>>@>
Y :;FD]D]^^
,,48HH-.>
Y =>vGbGbcc+33::n:MSSU?
Y 78AZAZ[[M%66%66!#))-=-C-CC-HI<"++,<s,BZEUEUEW,WYlm ==!:!:!C!CD=mmN$;$;<O *223GH -778HI ll4==.2I2I#JKS **&)99O  Q'+;>N+NOO&&OO{7:xH5
 '78J	OOJ  <<>7
 :'J
KK[  NYA'0L0LMMN\ 
 T
Ic!f%V-R-R
SSTs\   J AJ> AJ> #AJ> 0FJ> 	J;%J60J;1J> 6J;;J> >	K7%K2,K72K7Nr   r   r3   r1   r   r     s	    STr3   r   c                       e Zd Zd Zy)CreateTokenTwoc                    	 	 t        |      }t        j                  j                  |      j                         }|st        ddit        j                        S |j                  }|j                  }t        t        t        t         |      }t"        r!t%        t"              }|j'                  |       ||j)                         d}	t        d|	d	      S # t        $ r0}t        dt        |      it        j
                        cY d }~S d }~ww xY w# t        $ r0}t        dt        |      it        j*                        cY d }~S d }~ww xY w)
Nr7   r   r8   r:   r   r   )rd   r   r   r   )r   rg   r   r-   r   rh   r   r(   ri   rj   rk   rl   r9   r   r   r   r   r   r   r   r   r   )
r   r   r   r   rF   rl   rd   r   r   r   s
             r1   r   zCreateTokenTwo.post  s!   &TN

 C "))00C08>>@>
Y :;FD]D]^^
,,48{7:xH5
 '78J	OOJ <<>7 :'J
KKC  NYA'0L0LMMND 
 T
Ic!f%V-R-R
SSTsN   C AD A:D 	D%D
DD 
DD 	E%E EENr   r   r3   r1   r   r     s    'Tr3   r   c                       e Zd Zd Zy)CreateSeerUserTokenc                    	 	 t        |      }t        j                  j                  |      j                         }|st        ddit        j                        S |j                  }|j                  }|j                  d      }|r?t        j                  j                  |      j                         }|st        ddit        j                        S 	 |j                  }	|j                   }
t#        t        j$                  |	j'                  d            \  }}t)        j*                  |
dz   |j%                         z   d	      }t-        j.                  |j.                        }|j1                  |      }t)        j2                  t-        j.                  |j.                              }||k  r||z
  }nt5        d
      ||z
  z
  }| }nd }	 t7        t8        t:        t<        |      }t>        r!tA        t>              }|jC                  |       tD        jF                  jH                  jK                  t>              jL                  jO                         jQ                  ddd      }|||jS                         d}t        d|d      S # t        $ r0}t        dt        |      it        j
                        cY d }~S d }~ww xY w# t        $ r0}t        dt        |      it        jT                        cY d }~S d }~ww xY w)Nr7   r   r8   r   r<   r@   rA   rB   rC   r   r   r   r   Tdefaultz5You have a new message in ${CONVERSATION}: ${MESSAGE})new_message_enablednew_message_soundnew_message_templater   r   r   )+r   rg   r   r-   r   rh   r   r(   ri   rj   rk   rl   r9   rm   r   rq   rr   rs   rt   ru   r   rv   ro   rp   rw   ry   r   r   r   r   r   r   r   r   r   r   r   servicesconfigurationnotificationsupdater   r   )r   r   r   r   r   rl   rd   r<   r   rq   rr   r   r   r   r   r   r   r   r   notificationr   s                        r1   r   zCreateSeerUserToken.post=  s   ?TN
G
$C ##**c*288:=
Y 01&:S:STT
,,48HH-.>,44;;~;NTTVOi!89&B[B[\\N&77&77"399.>.D.DS.IJL*#,,-=-CjFVFVFX-XZmnMM-"8"89M(112FG||DMM=3I3I$JK//+.>>_ a(,@CS,ST_''_OP{7:xH5
 '78J	OOJ&&RX]]_V Q     <<>7
 :'J
KKu  NYA'0L0LMMNv 
 T
Ic!f%V-R-R
SSTsU   J AK  A8K  F/K  	J=%J82J=3K  8J==K   	K9	%K4.K94K9Nr   r   r3   r1   r   r   <  s	    @Tr3   r   c                       e Zd Zd Zy)CreateVideoRoomc                 
   	 	 t        |      }t        j                  j                  |      j                         }|st        ddit        j                        S |j                  }|j                  d      }|j                  d      }|j                  d      }|st        ddit        j                        S |st        dd	it        j                        S |st        dd
it        j                        S t        j                  j                  |      j                         }	t        j                  j                  |      j                         }
|	st        ddit        j                        S |
st        ddit        j                        S t!        j"                  |	j"                        }t!        j"                  |j"                        }	 |
j$                  }|
j&                  }t)        t        j*                  |j-                  d            \  }}t/        j0                  |dz   |z   d      }t/        j0                  |dz   |z   d      }	 |j3                  |      }|j3                  |      }|j5                  |      }|j5                  |      }t/        j6                  t!        j"                  |j"                              }	 ||k\  rt        ddit        j                        S ||k  rt        ddit        j                        S 	 t8        j:                  j<                  j>                  jA                  d|      }tB        j                  jA                  |jD                        }||
_#        |
jI                          	 |	jJ                  }t        tL        jN                        }|	jP                  dk(  r[ddd|jR                  z   dz   |jT                  z   dz   |jV                  |jD                  ||d}tY        |      j[                  ||      }|	jP                  dk(  rd}d|jR                  z   dz   |jT                  z   d z   }ddd|jR                  z   dz   |jT                  z   dz   |jV                  |jD                  ||d}tY        |      j[                  ||||!      }t\        j                  jA                  d|jR                  z   dz   |jT                  z   dz   d|	"       t        d#|jD                  d$      S # t        $ r0}t        dt        |      it        j
                        cY d }~S d }~ww xY w# t        $ r0}t        dt        |      it        j^                        cY d }~S d }~ww xY w)%Nr7   r   r8   r:   	room_namer<   user_idroom_name is  requiredr>   zuser_id is  requiredr?   r@   rA   rB   rC   rD   rE   zhttp://example.org)status_callbackunique_name)twilio_room_sidrH   video_startVIDEO STARTED FROM FORTUNE SIDEz!Your Video Chat have started withrK   )rL   rM   r7   rN   r  r  r<   rP   rR   rU   )r  zYour Video Chat start with rV   rX   r[   rf   )r7   r  )0r   rg   r   r-   r   rh   r   r(   ri   rj   rk   rl   rm   rn   r   r   ro   rp   rq   rr   rs   rt   ru   r   rv   rw   rx   ry   r   videor   roomsr   
VideoRoomsr   twilio_room_namer{   r|   r	   r}   r~   r   r   rN   r   r   r   r   ) r   r   r   r   rF   rl   r  r<   r  rG   r   r   r   rq   rr   r   r   r   r   r   r   r   r   r   roomvideo_room_objrS   r   rT   r   rY   rZ   s                                    r1   r   zCreateVideoRoom.post  s;   aTN

 C "))00C08>>@>
Y :;FD]D]^^
,,4xx$9HH-.>XXi 7
Y 89&B]B]^^
Y =>vGbGbcc
Y 67@[@[\\&&'&288:9+33::n:MSSU?
Y 56v?X?XYY
Y 78AZAZ[[ ==!3!34=mmN$;$;<]%66%66!#))-=-C-CC-HI< ( 1 12BS2H<2WYl m&//0@30F0SUhiO+445OP)223KL0;;<LM,778HI,,t}}n.E.EFG<V&&Y >?vGbGbcc''Y CDFLgLghhW
,,//


&
&7KXa
&
b4&&--dhh-G>&/?#;((?H001:y(+59>;T;TTUXXYgYqYqq  sC  C!'' HH)
L Z0EEVe  vBE  CFu$6M1>3L3LLSPQ_QiQiijyyL+48.:S:SSTWWXfXpXpp  rB  B!'' HH)
L Z0EEVe  vCL F :F   ''0SUcUnUn0nor0r  tB  tL  tL  1L  M]  1]  p}  HQ'  R
i$((C
DDy  NYA'0L0LMMNz 
 T
Ic!f%V-R-R
SSTs{   S9 AT5 AT5 9T5 T5 7A:T5 2T5 ET5 &!T5 G0T5 9	T2%T-'T2(T5 -T22T5 5	U.>%U)#U.)U.Nr   r   r3   r1   r  r    s	    bTr3   r  c                       e Zd Zd Zy)CreateVideoTokenc                    	 	 t        |      }t        j                  j                  |      j                         }|st        ddit        j                        S |j                  }t        |j                        dz   t        |j                        z   t        |j                        z   dz   t        |j                        z   x}}|j!                  d      }|st        ddit        j"                        S |j!                  d      }|st        dd	it        j"                        S t$        j                  j                  |      j                         }	|	st        dd
it        j                        S 	 |	j&                  }
|	j(                  }t+        t        j,                  |
j/                  d            \  }}t1        j2                  |dz   |j-                         z   d      }t5        j6                  |	j8                  j6                        }t5        j6                  |j6                        }	 |j;                  |      }|j=                  |      }t1        j>                  t5        j6                  |j6                              }	 ||k  r||z
  }ntA        d      ||z
  z
  }| }	 tC        tD        tF        tH        |      }tK        |      }|jM                  |       |||jO                         d}t        d|d      S # t        $ r0}t        dt        |      it        j
                        cY d }~S d }~ww xY w# t        $ r0}t        dt        |      it        jP                        cY d }~S d }~ww xY w)Nr7   r   r8   r:   ,r  r  r<   r>   r@   rA   rB   rC   r   r   r   r  r   r   r   ))r   rg   r   r-   r   rh   r   r(   ri   rj   rk   rl   r9   r   r   rN   rm   rn   r   rq   rr   rs   rt   ru   r   rv   ro   rp   rG   rw   rx   ry   r   r   r   r   r   r   r   r   r   )r   r   r   r   rF   rl   rd   r  r<   r   rq   rr   r   r   r   r   r   r   r   r   r   r   video_grantr   s                           r1   r   zCreateVideoToken.post  s+   MTN

 C "))00C08>>@>
Y :;FD]D]^^
,,4n//036N<U<U8VVWZ[i[s[sWttwzz|  AO  AU  AU  }V  V  V8xxx$9
Y 89&B]B]^^HH-.>
Y =>vGbGbcc+33::n:MSSU?
Y 78AZAZ[[M%66%66!#))-=-C-CC-HI<"++,<s,BZEUEUEW,WYlm ==!:!:!C!CD=mmN$;$;<O *223GH -778HI ll4==.2I2I#JKS **&)99OQ'+;>N+NOO&&OO{7:xH5+;??;  <<>7
 :'J
KKQ  NYA'0L0LMMNR 
 T
Ic!f%V-R-R
SSTsb   K; AL7 BL7 6/L7 &AL7 3FL7 ;	L4%L/)L4*L7 /L44L7 7	M0 %M+%M0+M0Nr   r   r3   r1   r  r    s	    NTr3   r  c                       e Zd Zd Zy)CreateSeerUserVideoTokenc                 n   	 	 t        |      }t        j                  j                  |      j                         }|st        ddit        j                        S |j                  }t        |j                        dz   t        |j                        z   t        |j                        z   dz   t        |j                        z   x}}|j!                  d      }|st        ddit        j"                        S |j!                  d      }|st        dd	it        j"                        S t$        j                  j                  |      j                         }	|	st        dd
it        j                        S 	 |	j&                  }
|	j(                  }t+        t        j,                  |
j/                  d            \  }}t1        j2                  |dz   |j-                         z   d      }t5        j6                  |j6                        }|j9                  |      }t1        j:                  t5        j6                  |j6                              }||k  r||z
  }nt=        d      ||z
  z
  }| }	 t?        t@        tB        tD        |      }tG        |      }|jI                  |       |||jK                         d}t        d|d      S # t        $ r0}t        dt        |      it        j
                        cY d }~S d }~ww xY w# t        $ r0}t        dt        |      it        jL                        cY d }~S d }~ww xY w)Nr7   r   r8   r   r  r  r  r<   r>   r@   rA   rB   rC   r   r   r   r  r   r   r   )'r   rg   r   r-   r   rh   r   r(   ri   rj   rk   rl   r9   r   r   r   rm   rn   r   rq   rr   rs   rt   ru   r   rv   ro   rp   rw   ry   r   r   r   r   r   r   r   r   r   )r   r   r   r   rG   rl   rd   r  r<   r   rq   rr   r   r   r   r   r   r   r   r   r   s                        r1   r   zCreateSeerUserVideoToken.post;  s   >TN
G
$C &&#&.4469
Y 01&:S:STT
,,4ill+c13y7K7K3LLSQZQdQdMeehkkmpqz  rI  rI  nJ  J  J8xxx$9
Y 89&B]B]^^HH-.>
Y =>vGbGbcc+33::n:MSSU?
Y 78AZAZ[[M%66%66!#))-=-C-CC-HI<"++,<s,BZEUEUEW,WYlm==!3!34='001EFll4==)2D2D#EF..*-==OQ'+?BR+RSO&&OO{7:xH5+;??;  <<>7
 :'J
KKs  NYA'0L0LMMNt 
 T
Ic!f%V-R-R
SSTsb   J? AK; BK; 6/K; &AK; 3EK; ?	K8%K3-K8.K; 3K88K; ;	L4%L/)L4/L4Nr   r   r3   r1   r"  r"  :  s    ?Tr3   r"  c                       e Zd Zd Zy)FinishAppointmentc           
         	 |j                   }|j                  d      }|st        ddit        j                        S t
        j                  j                  |      j                         }|st        ddit        j                        S d|_
        d|_        |j                          t        j                  j                         j                         }|r@|j                  }|j                   |d	z  z  }t#        |j                         t#        |      z
  }n|j                   }d
}	 t$        j                  j                  |j&                  j(                        j                         }	t+        |	j,                  ||j.                        }
	 	 t0        j                  j                  |j&                        j                         }|r&|xj2                  |z  c_        |j                          n+t0        j                  j5                  |j&                  |       	 d}t7        d|	j8                  |	j:                  |	j<                  t?        j@                         ||d      }|}tB        jD                  }|j&                  j8                  }tG        jH                  ||||g|       tK        jL                  |d       tN        j                  j5                  dtQ        |      z   dz   d|	       tR        j                  j5                  tU               |jV                  |j&                  |dd       t        ddi      S # tX        $ r0}t        dtQ        |      it        jZ                        cY d }~S d }~ww xY w)Nr<   r7   id is  requiredr   r8   r@   	CompletedTd   r   r   )rF   amountzPayment Receivedzpayout_approved_email.html)emailr   r   received_dater*  
commission)html_messagezStatus changed successfullyz You have received a payment of $zsuccessfully.appointment_earning)r7   r\   rF   walletappointment)r+   rG   rF   r*  payment_modetranscation_typerf   ).rl   rm   r   r   rn   r   r(   ri   rj   rk   appointment_statusappointment_completedr{   r   r)   commission_percentagepricer,   r   rF   r9   r    stripe_connect_account_idr<   r   r*  r   r!   r+  r   r   r   ry   r	   EMAIL_HOST_USERr#   	send_mailr"   rf   r   r-   r   r2   rG   rg   r   )r   r   rl   r<   r   general_objcommision_percenttotal_amountcommision_amountfortune_objtranfer_amount
wallet_objsubjectr.  plain_message
from_emailtor   s                     r1   r   zFinishAppointment.post  sH   -U
,,4HH-.>
Y 126;V;VWW+33::n:MSSU?
Y 78AZAZ[[(3?%+/?(''++-335;#99"((,=,CDL?001C4EE%++Lf&&--1O1O1R1R-SYY[;.{/T/TUefu  gE  gE  F>)]"**11A_A_1`ffh:))OO%%_5S5S[k%l)7"#?IZIZhsh~h~  LW  La  La  rz  r~  r~  r@  JZ  ht  Au  v<=((:&&,,2>>'=*rdVG:;%%,,5WX[\lXm5mo~5~  Rg  wB,  C$$++;X;Zete~e~  O^  Om  Om  uE  S[  mz+  {
Ii(
))	 UYs1v&f.S.STTUs*   ;L4 AL4 J(L4 4	M-=%M("M-(M-Nr   r   r3   r1   r%  r%  ~  s    .Ur3   r%  c                       e Zd Zd Zy)GetAppointmentc                    	 |j                   }|j                  d      }|st        ddit        j                        S t
        j                  j                  |      j                         }|st        ddit        j                        S |j                  |j                  d}t        d|d	      S # t        $ r0}t        dt        |      it        j                        cY d }~S d }~ww xY w)
Nr<   r7   r'  r   r8   r@   )r4  r5  rf   r   )query_paramsrm   r   r   rn   r   r(   ri   rj   rk   r4  r5  rg   r-   r   )r   r   rl   r<   r   all_datar   s          r1   rm   zGetAppointment.get  s    U


4HH-.>
Y 126;V;VWW+33::n:MSSU?
Y 78AZAZ[[(;;+AA8 ix8
99	 UYs1v&f.S.STTUs)   ;B2 AB2 &B2 2	C+;%C& C+&C+Nr   r   r3   r1   rG  rG    s    Ur3   rG  c                       e Zd Zd Zy)dummyc                     	 ddd}t        d|d      S # t        $ r0}t        dt        |      it        j                        cY d }~S d }~ww xY w)NSimpleCheck"RM03d12a938b7fdf21308ff7de7693ef80)r  r  rf   r   r7   r   )r   rg   r-   r   r   )r   r   rl   r   s       r1   rm   z	dummy.get  sS    T$9;4
it4
55	 T
Ic!f%V-R-R
SSTs    	A%A	A	ANr   r   r3   r1   rL  rL    s    Tr3   rL  )Qdjango.shortcutsr   rest_framework.viewsr   rest_framework.responser   rest_frameworkr   r   django.confr	   twilio.jwt.access_token.grantsr
   r   r   twilio.restr   twilio.jwt.access_tokenr   fortune_teller.authenticationr   r   seer_user.modelsr   r   r   fortune_teller.modelsr   r   r   r   modelsr   r   r   django.utils.timesincer   django.db.modelsr   r   pyfcmr   admin_panel.modelsr   ro   admin_panel.functionsr    django.template.loaderr!   django.contribr"   django.corer#   r2   TWILIO_ACCOUNT_SIDr   TWILIO_AUTH_TOKEN
auth_tokenTWILIO_CHAT_SIDr   TWILIO_SYNC_SIDsync_service_sidTWILIO_API_SIDr   TWILIO_API_SECRETr   r   r5   r   r   r   r   r   r   r   r  r  r"  r%  rG  rL  r   r3   r1   <module>rl     s   # ( , !    
  / J T T y y   (  , $ ! .  < 3 #   ((''
++ ++ 

!
!&&
	Z	( VT TB Y[T7 [T|Uw U43Uw 3Un
T 
TTT' TTn(TW (TVAT' ATJcTg cTLOTw OTf@Tw @TH/U /UhUW UPTG Tr3   