
    \gz                     F   S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKrS SKJr  S SKrS S	KJrJr  S
SKJrJrJrJrJr  S SKJr  S SKrS SKrS SKJr  S SKJ r   S SK!r!S SK"r"S SK#J$r$  S SK%J%r%J&r&  S
SKJ'r'  S SK(J)r)  S SK*J+r+  S SK,J-r-  S SK.J/r/J0r0  \"Rb                  " \25      r3\'Rh                  Rk                  5        HC  r6\6Rn                  Rp                  b  M  \-" \6Rn                  5      \6l7        \6Rs                  5         ME     Sr:Sr;\:(       a  \;(       a  \!R                  " \:\;4S9r<OSr<\3R{                  S5        S r>S r?S r@S rAS rBS rCS SKJr  S
S KJrJr  S! rDS0S" jrES# rF\ S$ 5       rGS% rHS& rIS' rJS( rKS) rL\ S* 5       rM\ S+ 5       rNS, rOS- rPS. rQS/ rRg)1    )	send_mail)ValidationError)validate_email)settings)messages)ClientN)logout)renderredirect   )SkylinkPlanOTTPlanOTTSubscriptionOTTActivationLogOTTAggregator)JsonResponse)	b64encode)csrf_exempt)timezone)datetime	timedelta)VerificationCode)render_to_string)reverse)
make_aware)SumCountrzp_test_qcFb099Pizad7Sz2ZULiDyrWgcu6GVYILGmVbt)authu:   ❌ Razorpay client not initialized. API keys are missing!c           	         U R                   R                  SS 5      nU R                   R                  SS 5      nU(       a  UnSnOU(       a  UnSnO[        S5      $ [        R                  R                  SS9n[        U SUUU[        S.5      $ )	Nemailphone_numberphoneott_subscription:loginactivestatuszott_subscription/platforms.html)contactverification_typeott_platformrazorpay_key)sessiongetr   r   objectsfilterr
   RAZORPAY_KEY_ID)requestr"   r#   r)   r*   platform_instances         9C:\xampp\htdocs\skyplay_api_hub\ott_subscription\views.pyplatforms_viewr5   ,   s    OO.E??&&~t<L #	# 011 &--44H4E '<.)'	?      c                  B    [        [        R                  " SS5      5      $ )z,Generates a random 6-digit verification codei i?B )strrandomrandint r6   r4   generate_verification_coder<   H   s    v~~ff-..r6   c                     [        5       nSnSU 3nSn[        X#X@/5        [        R                  R	                  U U[
        R                  " 5       S.S9  g )NzYour OTP Verification CodezYour verification code is zyour-email@example.comcode	timestamp)r"   defaults)r<   r   r   r/   update_or_creater   now)r"   verification_codesubjectmessage
from_emails        r4   send_verification_emailrH   M   sY    24*G*+<*=>G)Jg
G4--+(,,.I . r6   c                     [        5       nSU 3n[        R                  R                  U U[        R
                  " 5       S.S9  g )NzYour OTP verification code is r>   )r#   rA   )r<   r   r/   rB   r   rC   )r#   rD   rF   s      r4   send_verification_smsrJ   Z   sE    24./@.ABG --!+(,,.I . r6   c           	         SnSnSnS nU R                   S:X  Ga3  U R                  R                  S5      nU R                  R                  S5      nU(       GaZ  S nSnSU;   a,  [        R                  R                  US9R                  5       nO+[        R                  R                  US	9R                  5       nUS
:X  af  [        S5        Sn[        R                  " U S5        SU;   a  X0R                  S'   OX0R                  S'   [        S5      n[        [        S5      5      $ U(       an  XVR                  :X  aG  SnSU;   a  X0R                  S'   OX0R                  S'   [        R                  " U S5        [        S5      $ [        R                  " U S5        O[        R                  " U S5        OU(       a  SU;   a3   [        U5        [!        U5        SnSn[        R                  " U S5        O[Sn[$        R&                  " X5      (       a'  [)        U5        SnSn[        R                  " U S5        O[        R                  " U S5        [+        U SUUUUS.5      $ ! ["         a    [        R                  " U S5         N5f = f)NF POSTr)   rD   T@)r"   )r#   123456z
call loginz*Verification successful with default code!r"   r#   zott_subscription:platformszVerification successful!z,Invalid verification code. Please try again.z3The verification code has expired or was not found.z0A verification code has been sent to your email.zInvalid email address.z^\+?[1-9]\d{1,14}$r$   z0A verification code has been sent to your phone.zInvalid phone number format.zott_subscription/login.html)verification_code_sentcode_verifiedr)   r*   )methodrM   r.   r   r/   r0   firstprintr   successr-   r   r   r?   errorr   rH   r   rematchrJ   r
   )	r2   rP   rQ   r)   r*   entered_codeverification_recordurlphone_regexs	            r4   
login_viewr]   e   sM   "MG~~,,""9-||''(;< "&%)"g~&6&>&>&E&EG&E&T&Z&Z&\#&6&>&>&E&ESZ&E&[&a&a&c# x'l# $  *VW'>/6OOG,6=OON3:;(D EFF ##;#;;$(Mg~3:0:A7$$W.HI#$@AANN7,Z[w(]^ g~F"7++G4-1*(/%$$W.`a 488K11)'2-1*(/%$$W.`aNN7,JK'8"8&.	;   ' FNN7,DEFs    1I !JJc                 .    [        U 5        [        S5      $ )Nr%   )r	   r   r2   s    r4   logout_viewr`      s    
7O,--r6   )r   r   c                    [        U R                  R                  SS5      =(       d    S5      n[        U R                  R                  SS5      =(       d    S5      n[        U R                  R                  SS5      =(       d    S5      n[        R                  R                  SSS9R                  5       n[        R                  R                  US	9R                  5       nU(       Ga  [        R                  R                  US
9nUR                  SSS9nUR                  R                  US9nUR                  UR                  SSS9S9n	/ n
UR                  5       (       Ga  U GH   nUR                  R                  5       n/ nU Hk  nUR                  (       a  UR                  R                   OSnUR#                  UR$                  UR&                  UR(                  UR*                  US.5        Mm     [-        X;R$                  5      u  nnU(       a  SOSnU
R#                  UR$                  UR(                  UR&                  UR.                  SUUU(       a  UOSUS.	5        GM     U	R                  5       (       Ga/  U	 GH   nUR                  R                  5       n/ nU Hk  nUR                  (       a  UR                  R                   OSnUR#                  UR$                  UR&                  UR(                  UR*                  US.5        Mm     [-        X;R$                  5      u  nnU(       a  SOSnU
R#                  UR$                  UR(                  UR&                  UR.                  SUUU(       a  UOSUS.	5        GM     U	R                  5       (       d  U
R#                  SS05        US:X  a  [1        SXUS.5      nO[1        SXUS.5      n[3        SU05      $ [3        SS05      $ )Nplatform_idr   sky_plan_idr   	client_idr&   hotstart)r(   r?   id)rb   rg   T)flat)id__indefault_image_url)rg   namer?   	is_activeimagefreezN/A)	rg   r?   rk   pricesubscription_tiersottsstatus_flagexpiration_datehotstart_enabledpaidrF   zNo paid OTT plans available.   zott_subscription/jiostart.html)plansrd   rb   zott_subscription/ott_plans.htmlhtmlrV   zSkylinkPlan not found.)intGETr.   r   r/   r0   existsr   rS   r   values_list	ott_plansexcluderq   allrm   r[   appendrg   rk   r?   rl   is_plan_expiredro   r   r   )r2   platform_to_checkrc   rd   rt   skylink_planr}   ott_plan_idsconnected_ott_planspaid_ott_plans
plans_dataott_planassociated_otts	otts_dataott	image_url
is_expiredrs   plan_statushtml_contents                       r4   get_skylink_plansr      s}   GKKOOM1=BCgkkoomQ7<1=KGKKOOK38q9I %,,338*3U\\^ &&---=CCELOO**7H*I	 !,,T,= +44;;<;P #**2E2Q2QRV]a2Q2b*c 
 %%''/"*--"3"3"5	*C14		@SI$$!ff # #%(]]!*&  + />i.U+
O#-a1!!"++$MM$MM%^^*0%#.:Iu(8
# 
% 0>   ""*"*--"3"3"5	*C14		@SI$$!ff # #%(]]!*&  + />i.U+
O#-a1!!"++$MM$MM%^^*0%#.:Iu(8
# 
! +: "((**!!9.L"MN !+,LXb  K\  O]  ^L+,MYc  L]  P^  _LV\233 W&>?@@r6   c                    U UUUU[         R                  " U5      U[         R                  " U5      UU	S.
nU
(       ah  U	S:X  ab  UR                  U
R                  S5      U
R                  S5      U
R                  S5      U
R                  S5      U
R                  S5      S.5        [        R
                  R                  " S
0 UD6  g	)zF
Common function to log OTT activation, whether successful or failed.
)
rd   rb   plan_idr(   rF   inputresponse_statusoutputendpointrp   ru   razorpay_order_idrazorpay_payment_idrazorpay_signaturepayment_amountpayment_currencyr   r   r   r   r   Nr;   )jsondumpsupdater.   r   r/   create)rd   r3   r   r(   rF   
input_datar   output_datar   rp   razorpay_detailslog_datas               r4   log_ott_activationr   (  s    
 (J'***[)0H .&8!1!5!56I!J#3#7#78M#N"2"6"67K"L.223CD 0 4 45G H
 	 ##/h/r6   c                 H    [         R                  R                  XS9R                  5       nU(       aU  UR                  nU(       aA  UR                  S5      nU[        R                  " 5       R                  S5      ::  a  SU4$ SU4$ gg! [         R                   a     gf = f)N)rd   r   z%d-%m-%YTF)FN)	r   r/   r0   rS   rs   strftimer   rC   DoesNotExist)rd   r   activation_logrs   formatted_expiration_dates        r4   r   r   F  s     *118898^ddf,<<O ,;,D,DZ,P),0G0G
0SS!::: ";;;(( s   BB
 B
 
B! B!c                     [         R                  " U R                  5      nUR                  S5      nUR                  S5      nUR                  S5      nUR                  SS5      n[        R
                  R                  US9nUR                  nS nS n	S n
SnUn[        R
                  R                  UUUS9nUS	:X  a  [        U 5      nOJUS
:X  a  [        U 5      nO8US:X  a  [        U 5      nO&US:X  a  [        U 5      nOUS:X  a  [        U 5      nOS nU(       aN  UR                  n[         R                  " UR                  S5      5      nUS   n	U	S:X  a  UOUS   n
US   nUS   nOSn	Sn
SnUS:X  aj  UR                  S5      UR                  S5      UR                  S5      UR                  SS5      S-  UR                  S5      S.n[!        X&USS XXUU5        O[!        X&USS XXU5
        [#        S!S S".5      $ ! [$         aP  n[!        WWWS#['        U5      ['        U5      S$['        U5      SW5
        [#        S%['        U5      S".5      s S nA$ S nAff = f)&Nrd   rb   r   rp   rn   rf   rL   )rd   rb   r   watchoplay_boxhotstarottplay	tatabingeutf-8r      r   r   r     z5Invalid platform ID or failed to fetch platform data.ru   r   r   r   r   r   d   r   r   Successz/The activation has been completed successfully.T)rU   rF   Failure  F)r   loadsbodyr.   r   r/   r?   r   r   fetch_watcho_datafetch_playbox_datafetch_hotstar_datafetch_ottplay_datafetch_tatabinge_datacontentdecoder   r   	Exceptionr8   )r2   datard   rb   r   rp   r3   platform_codeplatform_datar   r   r   r   subscriptionresponse_contentresponse_jsonr   es                     r4   ott_activationr   ]  s   GCzz',,'HH[)	hh}-((9%!XX&:FC)11555E).. 
 '..55) 6 
 H$-g6Mj(.w7Mi'.w7Mi'.w7Mk)09M M,44 JJ'7'>'>w'GHM+,=>O&5&<]-PXBYF$Z0H&w/J!OLFH ' &*XX.A%B'+xx0E'F&*hh/C&D"&((+;Q"?#"E$(HH-?$@  yWi  RC  EO  bh  tF  HX  YyWi  RC  EO  bh  tF  G9jkll C9&7)SQRVUXYZU[]`befgbhjl  oA  	B#a&ABB	Cs   G<G? ?
I	AIIIc                 "   SnSnSnU SU 3n[        UR                  S5      5      R                  S5      nSSU 3S.nS	S
0n [        R                  " USS9R                  S5      n[
        R                  " XUS9n	UU	R                  U	R                  S:X  a  U	R                  5       OU	R                  US.n
U	R                  S:X  a
  [        U
SS9$ [        XR                  S9$ ! [         a  n[        S[        U5      0SS9s S nA$ S nAff = f)NzNhttps://beta2-publicapis.dishtv.in/api/WatchoOne/SubscriptionRequestWatchoplan152zW@tCh0!$p@54321:r   application/jsonzBasic Content-TypeAuthorization	InputDatazrkm1KdqGcA8KsYuZElhieCcEeA2VUQg5Kw3+Cw++kogzYmoyPyhEZP85eIZD1Zi+6McbhfD6sBt4JJz4PM1Bp120bgQDEAnBh/eGi9IaX6IS+pG4HdXPd8SPf6H5KxFrHQG5r+ckdthKQP4dH+kYACHi+OFgUgyf74C1LlQ7LsGcrwaVmUxh5ejHG4Xw+rAbmce6SZIK+A+Xq/Hz4MC7nLlvVJc2Um7YF)ensure_ascii)headersr   r   r   r   r   r   safer'   rV   r   )r   encoder   r   r   requestspoststatus_codetextr   r   r8   )r2   api_urlusernamepassword
auth_valueencoded_auth_valuer   r   	json_dataresponseresultr   s               r4   r   r     s*   ^G H H :Qxj)J":#4#4W#=>EEgN +!"4!56G 	  xD;JJt%8??H	 ==	J '33)1)=)=)Dhmmo(--	
 3&U33/C/CDD ;Wc!f-c::;s%   BC% C% %
D/D	D	Dc                    SnSSS.nSSSS.n [         R                  " XUS	9nUUR                  UR                  S
:X  a  UR                  5       OUR                  US.nUR                  S
:X  a
  [        USS9$ [        XTR                  S9$ ! [         R                  R                   a   n[        [        U5      US.SS9s S nA$ S nAff = f)NzJhttps://8fjpx02rmk.execute-api.ap-south-1.amazonaws.com/prod/v3/assignPack(spfFnjetet705D8sngf7H7kojE04oYkn7DNECvDvr   )z	x-api-keyr   
9715121791ڀ8588f445e9a912e828597d43702aa89aaceacbe149db175366ca95bab1e31ebb85e191e7484116fc2de11b9d9247b5f03786ed689c53716a5a0cdc42800198874517369)r$   
partnerKeypackCoder   r   r   r   Fr   r'   rV   r2   r   )	r   r   r   r   r   r   
exceptionsRequestExceptionr8   )r2   r   r   r   r   r   r   s          r4   r   r     s    ZG @*G  YDL==WE '33)1)=)=)Dhmmo(--	
 3&U33/C/CDD// Lc!f>sKKLs$   A)B 9B C
*C?C
C
c                 n   [         R                  n[         R                  n[         R                  n[         R                  n0 SS_SU_SU_SS_SS_S	S
_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_nSSS.n [
        R                  " XUS9nUUR                  UR                  S:X  a  UR                  5       OUR                  US.nUR                  S:X  a
  [        US S!9$ [        XR                  S"9$ ! [
        R                  R                   a   n	[        [        U	5      US#.S$S"9s S n	A	$ S n	A	ff = f)%NmodeCREATE_ACTIVATE	oper_codelogin_idr$   
9715121790r"   zarul@gmail.com
first_nameJon	last_nameDoeaddresszsubscriber address	plan_codeottplay_monthly_testuse_alt_lco_coder   partner_reference_idrL   zoneservice_number
state_codesubscription_typesubscription_idr   fRGcemrfodXg5OBXh6JDJ79MNab7QSbOxlnAlmL8VvRdCNSVBdfiHmSzwvcQ24pDOPtBD2rPu8LrU0S1gOlGZ2iegAPpEKXuvIb9b3ctf3dAQStqGuNRfZYZHEwpzontQQhrmd0EixJ1378ss7sBRonQfceHO6Jyj6La8EODIymMyqhNWURo9zlUZIDjgn19rJCfNVn42nL7OA4zSqTgsA1uyy8nVx7C89l8imSpYvs8E70uqeUzAfo3w9EUpP1r   r   r   r   Fr   r'   r   r   )r   OTTPLAY_API_URLOTTPLAY_OPER_CODEOTTPLAY_LOGIN_IDOTTPLAY_AUTH_TOKENr   r   r   r   r   r   r   r   r8   )
r2   r   r   r   
auth_tokenpayloadr   r   r   r   s
             r4   r   r     s    &&G**I((H,,J!I 	H 		
 	! 	e 	U 	' 	+ 	A 	 	 	" 	b 	R  	2!G* + [G
O==H '33)1)=)=)Dhmmo(--	
 3&U33/C/CDD// Oc!fA#NNOs%   9A)C6 #C6 6D4D/)D4/D4c                     SSS.$ Nr   zTataBinge specific data)platformr   r;   r_   s    r4   r   r   8      #-FGGr6   c                     SSS.$ r  r;   r_   s    r4   r   r   =  r  r6   c                 ^   U R                   S:w  a  [        SS0SS9$ [        (       d!  [        R	                  S5        [        SS0SS9$  [
        R                  " U R                  5      n[        UR                  S	S
5      5      S-  nUR                  SS5      nUS
::  a  [        SS0SS9$ [        R                  S[        R                   35        [        R                  R                  UUSS.5      n[        R                  SU 35        [        U5      $ ! [        R                   R"                   a7  n[        R	                  S[%        U5       35        [        SS0SS9s S nA$ S nAf[&         a7  n[        R	                  S[%        U5       35        [        SS0SS9s S nA$ S nAff = f)NrM   rV   zMethod not allowedi  r'   u#   ❌ Razorpay client not initializedzRazorpay client not initializedr   amountr   r   currencyINRzInvalid amountr   u   🔑 API Key: r   )r  r  payment_captureu   ✅ Razorpay Order Created: u   ❌ Razorpay API Error: zRazorpay authentication failedi  u   ❌ Unexpected Error: zInternal server error)rR   r   razorpay_clientloggerrV   r   r   r   ry   r.   infor   r1   orderr   razorpayerrorsBadRequestErrorr8   r   )r2   r   r  r  r  r   s         r4   create_razorpay_orderr  C  s   ~~W&:;CHH?:;W&GHQTUULzz',,'TXXh*+c188J.Q;*: ;CHH 	nX%=%=$>?@  %%,,  .
 
 	25':;E""??** U/Ax89W&FGPSTT L-c!fX67W&=>sKKLs8   
A!D ,A+D F,6,E("F,(F,5,F'!F,'F,c                    U R                   S:X  a  [        R                  " U R                  5      nUR	                  S5      nUR	                  S5      nUR	                  S5      nUUUS.n [
        R                  R                  U5        [        SSS.5      $ [        S	S0SS9$ ! [        R                  R                   a    [        S	S
0SS9s $ f = f)NrM   r   r   r   )r   r   r   zPayment successfulzSubscription activated.)r(   rF   rV   z&Payment signature verification failed.r   r'   zInvalid request)rR   r   r   r   r.   r  utilityverify_payment_signaturer   r  r  SignatureVerificationError)r2   r   r   r   r   params_dicts         r4   confirm_paymentr!  j  s    ~~zz',,'"hh'<= HH%89!XX&:; "3#6"4
		a##<<[I  +?Le fgg "34SAA 99 	a*R S\_``	as   +,B$ $*CCc                      [        U SSS05      $ )Nz"ott_subscription/transactions.htmlr)   Tr
   r_   s    r4   transactions_viewr$    s    '?)TARSSr6   c                    U R                   R                  SS5      nU R                   R                  SS5      nU R                   R                  SS5      n[        R                  R	                  5       nU(       a  UR                  US9nUS:X  a  SU 3nUR                  U5      nU Vs/ s H  nUR                  UR                  R                  UR                  UR                  R                  S	5      UR                  UR                  UR                  UR                   R                  S
5      S.PM     nn[#        SU0SS9$ s  snf )NsearchrL   sort_byactivation_date
sort_orderdesc)client_id__icontains-z%Y-%m-%d %H:%Mz%Y-%m-%d)rd   r  r   r(  r(   rp   r   rs   transactionsFr   )rz   r.   r   r/   r   r0   order_byrd   rb   rk   r   r(  r   r(   rp   r   rs   r   )r2   search_queryr'  r)  r-  tr   s          r4   get_transactionsr1    s0   ;;??8R0Lkkooi):;Gv6J $++//1L #***M VgY-((1L  A **yy 0099:JKhh"#"6"6.. 0099*E		
  	  .U;;s   )BEc                      [        U SSS05      $ )Nzott_subscription/dashboard.htmlr)   Tr#  r_   s    r4   dashboard_viewr3    s    '<	4?PQQr6   c           
          [         R                  R                  SS9R                  5       n[         R                  R                  SS9R	                  [        S5      S9S   =(       d    Sn[         R                  R                  5       n[         R                  R                  S5      R                  [        S5      S	9n[         R                  R                  SS9R                  S5      R                  [        S5      S9n[         R                  R                  S
S0S9R                  S
5      R                  [        S5      S	9R                  S
5      n[        UUU[        U5      [        U5      [        U5      S.5      $ )Nru   )rp   r   )totalr5  r   platform_id__namerg   )countdatezDATE(activation_date))select)total_revenuetotal_activationstotal_transactionsactivations_by_platformrevenue_by_platformactivations_over_time)r   r/   r0   r7  	aggregater   valuesannotater   extrar.  r   list)r2   r<  r:  r;  r=  r>  r?  s          r4   get_dashboard_datarE    se   )1188F8SYY[ %,,33v3NXX_bcs_tXuv}~  D  CDM )00668 	  ''(;<	d	$  	  ''6'B	#	$	,-	.  	  &&v7N.O&P		d	$	&		  &.0#'(?#@#$78!%&;!<  r6   )rL   rn   N)Sdjango.core.mailr   django.core.exceptionsr   django.core.validatorsr   django.confr   django.contribr   twilio.restr   r9   django.contrib.authr	   rW   django.shortcutsr
   r   modelsr   r   r   r   r   django.httpr   r   r   base64r   django.views.decorators.csrfr   r  loggingdjango.utilsr   r   r   r   django.template.loaderr   django.urlsr   django.utils.timezoner   django.db.modelsr   r   	getLogger__name__r  r/   r   recordr@   tzinfosaver1   RAZORPAY_SECRETr  rV   r5   r<   rH   rJ   r]   r`   r   r   r   r   r   r   r   r   r   r  r!  r$  r1  r3  rE  r;   r6   r4   <module>r^     s   & 2 1   #   & 	 - Y Y $    4   ! ( $ 3  , '			8	$&&**,F&%f&6&67 - ,,ooO_+MNOO
LLMN8/

M`.
 % (hAV0<. HC HCX.;`%LP4OlH
H #L #LL B B>T <JR&r6   