a
    OWg                    @   s  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	 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mZ ddlT d dlmZmZmZ d dlmZ d dlmZ d dlT d dlm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(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l0T d dl1T G dd deZ2G dd deZ3G dd deZ4G dd  d eZ5G d!d" d"eZ6G d#d$ d$eZ7G d%d& d&eZ8G d'd( d(eZ9G d)d* d*eZ:G d+d, d,eZ;G d-d. d.eZ<e+=d/d0d1d2 d d3lmZ G d4d5 d5eZ>G d6d7 d7eZ?G d8d9 d9eZ@G d:d; d;eZAG d<d= d=eZBG d>d? d?eZCG d@dA dAeZDG dBdC dCeZEG dDdE dEeZFG dFdG dGeZGG dHdI dIeZHG dJdK dKeZIG dLdM dMeZJG dNdO dOeZKG dPdQ dQeZLG dRdS dSeZMG dTdU dUeZNG dVdW dWeZOG dXdY dYeZPG dZd[ d[eZQG d\d] d]eZRG d^d_ d_eZSG d`da daeZTG dbdc dceZUG ddde deeZVG dfdg dgeZWG dhdi dieZXG djdk dkeZYG dldm dmeZZG dndo doeZ[G dpdq dqeZ\d
S )r    )render)APIView)Responsestatus)datetime	timedelta)settings)RefreshToken)TokenBackend)get_authorization_headerN)
exceptions   )*)	PaginatorPageNotAnInteger	EmptyPage)Q)authenticated)date)render_to_string)mail)get_template)HttpResponse)EmailMessage)JsonResponse)redirectc                   @   s   e Zd Zdd ZdS )addPlanc              
   C   s  zBzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}|d}|d}|d}|d}|d}	|d}
|d	}|d
}|d}|d}|d}|d}|d}|sttjddtjdW S |sttjddtjdW S |s.ttjddtjdW S |
sLttjddtjdW S |sjttjddtjdW S |	sttjddtjdW S |sttjddtjdW S t	j
j|d }|rttjddtjdW S t	j
j|d}|
|_||_||_|	|_||_||_||_||_||_||_||_||_|  ttjddW S  ty } z&ttjt|dtjdW  Y d }~S d }~0 0 d S )Nmessager   	plan_nameplan_descriptionpricediscountpackage_typeplan_validitydigital_rental_contractnotifications_stakeholdersvisibility_among_adsvisibility_at_topinformation_of_local_areaproperty_count	tier_typeplan name is requiredstatus_codestatus_messageplan description is requiredprice is requiredplan validity is requiredtyre type is requiredzPackage type is requiredproperty count is requiredplanNamePlan name already in usePlan created successfully)r   	Exceptionr   strr   HTTP_401_UNAUTHORIZEDdatagetHTTP_400_BAD_REQUESTSubscriptionPlanobjectsfilterfirstcreateplanDurationDaysr!   r"   r#   descriptionr%   r&   r'   r(   r)   	tyre_typer*   saveHTTP_200_OKHTTP_500_INTERNAL_SERVER_ERROR)selfrequestuider<   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   rF   ifExistplanObj rP   5/var/www/html/Sam_Eipo/Eipo/subscription_api/views.pypost%   sj    .












zaddPlan.postN__name__
__module____qualname__rR   rP   rP   rP   rQ   r   $   s   r   c                   @   s   e Zd Zdd ZdS )editPlanc              
   C   s  zzzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}|d}|d}|d}|d}|d}	|d}
|d	}|d
}|d}|d}|d}|d}|d}|d}| sttjddtjdW S |sttjddtjdW S |s:ttjddtjdW S |sXttjddtjdW S |svttjddtjdW S |sttjddtjdW S |
sttjddtjdW S |sttjddtjdW S t	j
j|dj|d}|rttjddtjdW S t	j
j|d }||_||_||_|	|_|
|_||_||_||_||_||_||_||_||_|  ttjddW S  ty } z&ttjt|dtjdW  Y d }~S d }~0 0 d S )Nr   r   idr   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r+   r*   plan id is requiredr-   r,   r0   r1   r2   r3   zpackage type is requiredr4   r5   rX   r7   Plan updated successfully)r   r9   r   r:   r   r;   r<   r=   r>   r?   r@   rA   excluderB   r6   rD   r!   r"   r#   rE   r%   r&   r'   r(   r)   rF   r*   rG   rH   rI   )rJ   rK   rL   rM   r<   plan_idr   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   rF   r*   rN   rO   rP   rP   rQ   rR   i   sr    .













zeditPlan.postNrS   rP   rP   rP   rQ   rW   h   s   rW   c                   @   s   e Zd Zdd ZdS )changePlanStatusc              
   C   s   zzt |}W n< tyJ } z$tdt|itjdW  Y d }~W S d }~0 0 |j}|d}|d}|sttjddtjdW S t	j
j|d }|r|dkrd|_nd	|_|  nttjd
dW S ttjddW S  ty } z&ttjt|dtjdW  Y d }~S d }~0 0 d S Nr   r   rX   r   rY   r-   rZ   TFzInvalid plan idSuccess)r   r9   r   r:   r   r;   r<   r=   r>   r?   r@   rA   rB   rG   rH   rI   rJ   rK   rL   rM   r<   r]   status_dataZthePlanrP   rP   rQ   rR      s(    .


zchangePlanStatus.postNrS   rP   rP   rP   rQ   r^      s   r^   c                   @   s   e Zd Zdd ZdS )planListingc                 C   s  zzt |}W n< tyJ } z$tdt|itjdW  Y d }~W S d }~0 0 tjjdd}g }|D ]P}|j	|j
|j|j|j|j|j|j|j|j|j|j|j|j|jd}|| qbttjd|dW S  ty } z&ttjt|dtjdW  Y d }~S d }~0 0 d S )	Nr   r   Tend_date__isnull)rX   r   r$   r!   r    r#   r   r+   r"   r%   r&   r'   r(   r)   r*   successr.   r/   r<   r-   )r   r9   r   r:   r   r;   r?   r@   rA   rX   r6   rD   r!   rE   r#   rF   r"   r%   r&   r'   r(   r)   r*   appendrH   rI   rJ   rK   rL   rM   plan_objallDataplanall_datarP   rP   rQ   r=      s8    .zplanListing.getNrT   rU   rV   r=   rP   rP   rP   rQ   rc      s   rc   c                   @   s   e Zd Zdd ZdS )getplanDetailc                 C   sD   zzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 | jjd}|sxttj	ddtj	dW S t
jj|d }|sttj	ddtj	dW S |j|j|j|j|j|j|j|j|j|j|j|j|j|jd}ttjd	|d
W S  ty> } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S )Nr   r   rX   rY   r-   rZ   No plan found)rX   r   r$   r!   r    r%   r&   r'   r(   r)   r+   r#   r"   r*   rf   rg   )r   r9   r   r:   r   r;   rK   query_paramsr=   r>   r?   r@   rA   rB   rX   r6   rD   r!   rE   r%   r&   r'   r(   r)   rF   r#   r"   r*   rH   printrI   rJ   rK   rL   rM   r]   rj   alldatarP   rP   rQ   r=      s<    .zgetplanDetail.getNrn   rP   rP   rP   rQ   ro      s   ro   c                   @   s   e Zd Zdd ZdS )purchaseSubscriptionPlanc              
   C   s  z|zt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}tjj	|d
 }|d}|d}|d}|sttjddtjdW S |stdd	itjdW S tjj	|d

 }	tj }
|	jdkrt|	jd }nt|	jd }|
tjt|d }tjt_tjjt|d d|dd}|rntjj	|dd
 }|rbd|_|  tjj||	|
|dd}d|_|  tt t!t"t#t$t%g}|D ] }|jj	|ddj&|	j'd qt|j(t|j) |j*|j+|j,tj- |j.j/|j.j0|j.j1d}t2d}|3|}t4dd}d|d< t5j6||d d }d!}tj7}d"g}t8||||d#}|j9d$|: dd% |;  ttj<d&dW S  ty } z.t=| ttj>t|dtj>dW  Y d }~S d }~0 0 d S )'Nr   r   usersubscription_idpayment_tokenr!    Subscription plan id is requiredr-   payment_token is requiredrZ   monthly   m  daysd   usdPurchase SubscriptionamountcurrencysourcerE   Tcustomer_id	is_activeFcustomerrl   sub_start_datesub_expiry_dater   
customerIdre   subscription_typecustomer_nameZcustomer_addressZcustomer_numberZ
invoice_idZinvoice_dater   subscription_namerE   eipo-invoice.htmlapplication/pdfcontent_typeattachment; filename="file.pdf"Content-DispositiondestInvoiceNYour subscription is purchased successfully.Please find attached your invoice.test132@yopmail.comsubjectbody
from_emailtofile.pdffilenamecontentmimetype#Subscription purchased successfully)?r   r9   r   r:   r   r;   r<   Customerr@   rA   rB   r=   r>   r?   r   r   todayr#   intrD   r   r	   STRIPE_SECRET_KEYstripeapi_keyChargerC   CustomersSubscriptionsr   rG   has_subscriptionBussinessForSaleHouseWantedForRentInvestmentMyProjectInvestmentMyCompanyPropertyProjectSalePropertyRentPropertyupdaterF   	firstNamelastNameaddressphoneNumberrX   nowrl   r!   r6   rE   r   r   r   pisa	CreatePDFEMAIL_HOST_USERr   attachgetvaluesendrH   rr   rI   )rJ   rK   rL   rM   r<   customerObjrx   ry   r!   sub_objr   expiry_datenew_datechargesub_datanew_dataadsadtemplatehtmlpdf_filer   r   r   recipient_listemail_messagerP   rP   rQ   rR     sx    .





>

zpurchaseSubscriptionPlan.postNrS   rP   rP   rP   rQ   ru     s   ru   c                   @   s   e Zd Zdd ZdS )mySubscriptionPlanc           
      C   sx  z(zt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}tjj	|d
 }tjj	|dd}|sttjddtjdW S g }|D ]x}|j|jj|jj|j|j|j|jj|jj|jj|jj|jj|jj|jj|jj|jj|jj|jj|jjd}	||	 qttj d	|d
W S  tyr } z.t!| ttj"t|dtj"dW  Y d }~S d }~0 0 d S )Nr   r   rv   r   -idNo active subscription found.r-   )rX   r]   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r   r*   rf   rg   )#r   r9   r   r:   r   r;   r<   r   r@   rA   rB   r   order_byr>   rX   rl   r6   r   r   r   rE   r!   r"   r#   rD   r%   r&   r'   r(   r)   r*   rh   rH   rr   rI   
rJ   rK   rL   rM   r<   r   r   all_Datairm   rP   rP   rQ   r=   a  sH    .zmySubscriptionPlan.getNrn   rP   rP   rP   rQ   r   `  s   r   c                   @   s   e Zd Zdd ZdS )mySubscriptionPlanDetailsc           	      C   sX  zzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}tjj	|d
 }|d}|sttjddtjdW S tjj	|d
 }|sttjddtjdW S |j|j|j|j|j|j|j|j|j|j|j|j|j|jd	}ttjd
|dW S  tyR } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S )Nr   r   rv   rx   Subscription Id is requiredr-   rZ   No subscription plan found)rX   r   r$   r!   r    r%   r&   r'   r(   r)   r   r"   r#   r*   rf   rg   )r   r9   r   r:   r   r;   r<   r   r@   rA   rB   r=   r>   r?   rX   r6   rD   r!   rE   r%   r&   r'   r(   r)   r"   r#   r*   rH   rr   rI   	rJ   rK   rL   rM   r<   r   rx   r   rm   rP   rP   rQ   r=     s@    .
zmySubscriptionPlanDetails.getNrn   rP   rP   rP   rQ   r     s   r   c                   @   s   e Zd Zdd ZdS )subscriptionRenewc              
   C   s  zbzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}tjj	|d
 }|d}|sttjddtjdW S tjj	|d
 }|jdkrtj }|tjd	d
 }	n@|jdkrtj }|tjdd
 }	ntj }|tjdd
 }	|s"ttjddtjdW S tjj	|d
 }
||
_||
_|	|
_d|
_|
  ttjddW S  ty } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S Nr   r   rv   rx   r   r-   rZ   Z30r}   r   Z60<   Z   zNo subscription package foundr   Tz!Subscription renewed successfully)r   r9   r   r:   r   r;   r<   r   r@   rA   rB   r=   r>   r?   rD   r   r   r   r   r   rl   r   r   r   rG   rH   rr   rI   rJ   rK   rL   rM   r<   r   rx   Zsubscription_objr   r   Zcust_subrP   rP   rQ   rR     s>    .





zsubscriptionRenew.postNrS   rP   rP   rP   rQ   r     s   r   c                   @   s   e Zd Zdd ZdS )deleteSubscriptionc              
   C   s   zzt |}W n< tyJ } z$tdt|itjdW  Y d }~W S d }~0 0 |j}tjj	|d
 }d|_|  ttjddW S  ty } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S Nr   r   rv   Frf   r-   r   r9   r   r:   r   r;   r<   r   r@   rA   rB   r   rG   rH   rr   rI   rJ   rK   rL   rM   r<   r   rP   rP   rQ   rR     s    .zdeleteSubscription.postNrS   rP   rP   rP   rQ   r     s   r   c                   @   s   e Zd Zdd ZdS )BuyBasicUserPlanc              
   C   sj  zzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}tjj	|d
 }|d}|sttjddtjdW S tjj	|dd
 }tjj	|d	
 }tj }	|j}
|	tjt|
d
 }|rd|_|  tjj|||	|dd}d|_|  ttjddW S  tyd } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S Nr   r   rv   rx   rz   r-   Tr   rZ   r   Fr   r   )r   r9   r   r:   r   r;   r<   r   r@   rA   rB   r=   r>   r   r?   r   r   r   rD   r   r   r   rG   rC   r   rH   rr   rI   rJ   rK   rL   rM   r<   r   rx   r   r   r   r   r   r   rP   rP   rQ   rR     s2    .

zBuyBasicUserPlan.postNrS   rP   rP   rP   rQ   r     s   r   sandboxZPAc7hv0w6SpPe3CDXaIVxk1pEwRL8b558GstnRM5IC43_tk7h9TFCKLkobbUXc2udA8Vblhy8AoYUlDxNzPEJNK3-Ur7oHlCiT7kY5BdMSLT1pvLKjG3BO2cTDJIp-VgFIQKq3ZBvknnncjejbKGySb4p5DLkD__tCA)mode	client_idZclient_secret)r   c                   @   s   e Zd Zdd ZdS )MakePaymentc              
   C   s$  zzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}tjj	|d
 }|d}|d}|d}|d}	|d}
t }t| |	r0tjj	|	d	
 }td
ddidt|	 d t| d t| dt| dt|ddddgd}zt|j}W n tyB   td}Y n0 t t|d }| rtjj|||||dd}|dkrtjj	|d	
 }d|_||_||_|  nR|dkrtjj	|d	
 }d|_||_||_|  n|dkr$tjj	|d	
 }d|_||_||_|  n|dkr\tjj	|d	
 }d|_||_||_|  n|dkrt jj	|d	
 }d|_||_||_|  np|d krt!jj	|d	
 }d|_||_||_|  n8|d!krt"jj	|d	
 }d|_||_||_|  n td"|j#d# j$iW S td$d%itj%dW S n|
rt&jj	|
d	
 }td
ddidt|
 d t| d t| dt| dt|ddddgd}| rtd"|j#d# j$iW S td$d%itj%dW S W nH ty } z.t| ttj't|d&tj'dW  Y d }~S d }~0 0 d S )'Nr   r   rv   r!   property_typeproperty_idr]   rx   rZ   salepayment_methodpaypalzFhttps://reeipo-new.vipankumar.in/user/payment-success?subscription_id=&customer_id=z&amount=z<https://reeipo-new.vipankumar.in/user/payment-failed?amount=Z
return_urlZ
cancel_urlUSDtotalr   Payment for Subscriptionr   rE   intentZpayerZredirect_urlsZtransactionsr   r   T)r   rl   payment_dater   r   r   property_projectsale_propertyrent_propertyhouse_for_rentcompany_seeking_equitybussiness_for_saleproperty_developerpayment_urlr   errorPayment creation failedr-   )(r   r9   r   r:   r   r;   r<   r   r@   rA   rB   r=   r   r   rr   FeatureAddPricingpaypalrestsdkPaymentr   r   
ValueErrorr   rC   CustomersFeatureAdsHistoryr   is_featuredfeature_planfeatured_end_daterG   r   r   r   CompanySeekingEquityr   PropertyDeveloperslinkshrefr>   r?   rI   )rJ   rK   rL   rM   r<   r   r!   r   r   r]   rx   r   rj   paymentdays_to_add	last_dater   property_objrP   rP   rQ   rR   	  s    .




"













"

zMakePayment.postNrS   rP   rP   rP   rQ   r     s   r   c                   @   s   e Zd Zdd ZdS )paymentSuccessPaypalc              
   C   s.  z| j jd}tjj|d }| j jd}|sNttj	ddtj	dW S t
jj|d }tj }|jdkrt|jd	 }nt|jd
 }|tjt|d }tjj|dd }	|	rd|	_|	  tjj||||dd}
d|_|  tttttttg}|D ] }|jj|ddj|jd qt |j!t |j" |j#|j$|
j%tj& |
j'j(|
j'j)|
j'j*d}t+d}|,|}t-dd}d|d< t.j/||d d}d}t0j1}dg}t2||||d}|j3d|4 dd |5  t6dW S  t7y( } z.t8| ttj9t |dtj9dW  Y d }~S d }~0 0 d S ) Nr   rv   rx   rz   r-   r   rZ   r|   r}   r~   r   Tr   Fr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   z<https://reeipo-new.vipankumar.in/user?paymentpalsuccess=true):rK   rq   r=   r   r@   rA   rB   r   r   r>   r?   r   r   r   r#   r   rD   r   r   r   rG   rC   r   r   r   r   r   r   r   r   r   rF   r:   r   r   r   r   rX   r   rl   r!   r6   rE   r   r   r   r   r   r	   r   r   r   r   r   r   r9   rr   rI   )rJ   rK   r   r   rx   r   r   r   r   r   r   r   r   r<   r   r   r   r   r   r   r   r   rM   rP   rP   rQ   r=     sX    

>


zpaymentSuccessPaypal.getNrn   rP   rP   rP   rQ   r    s   r  c                   @   s   e Zd Zdd ZdS )makePaymentVipsc              
   C   sR  zzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}tjj	|d
 }|d}|sttjddtjdW S tjj	|d
 }tj }|j}	|tjt|	d }
tjj	|d	d

 }|rd|_|  tjj||||
d	d}d	|_|  tttttttg}|D ] }|jj	|d	dj |j!d q"t|j"t|j# |j$|j%|j&tj' |j(j)|j(j*|j(j+d}t,d}|-|}t.dd}d|d< t/j0||d d}d}t1j2}dg}t3||||d}|j4d|5 dd |6  ttj7ddW S  tyL } z.t8| ttj9t|dtj9dW  Y d }~S d }~0 0 d S )Nr   r   rv   rx   rz   r-   rZ   r   Tr   Fr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ):r   r9   r   r:   r   r;   r<   r   r@   rA   rB   r=   r>   r?   r   r   r   rD   r   r   r   r   rG   rC   r   r   r   r   r   r   r   r   r   rF   r   r   r   r   rX   r   rl   r!   r6   rE   r   r   r   r   r   r	   r   r   r   r   r   rH   rr   rI   )rJ   rK   rL   rM   r<   r   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rP   rP   rQ   rR   )  s\    .

>

zmakePaymentVips.postNrS   rP   rP   rP   rQ   r  (  s   r  c                   @   s   e Zd Zdd ZdS )InitatePaymentc              
   C   sX  zzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}tjj	|d
 }|jd}|sttjddtjdW S tjj	|d
 }|j}|d}	d	}
d
}d|
iddi|	|ddd}tjd||
|fd}| }|d}ttj|dW S  tyR } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S Nr   r   rv   rx   rz   r-   rZ   orderIdZYOUR_CLIENT_IDZYOUR_CLIENT_SECRETZmerchantSerialNumberZmobileNumberZ12345678zPayment description)r  r   ZtransactionText)ZmerchantInfoZcustomerInfotransactionz*https://api.vipps.no/paymentapi/v2/payment)jsonauthurl)r.   r<   )r   r9   r   r:   r   r;   r<   r   r@   rA   rB   r=   r>   r?   r!   requestsrR   r!  rH   rr   rI   rJ   rK   rL   rM   r<   r   rx   r   r   Zorder_idZvipps_client_idZvipps_client_secretZvipps_payment_requestZvipps_responseZ
vipps_dataZ	vipps_urlrP   rP   rQ   rR   e  s>    .

zInitatePayment.postNrS   rP   rP   rP   rQ   r  d  s   r  c                   @   s   e Zd Zdd ZdS )addAgencyPlanc              
   C   s  zzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}|d}|d}|d}|d}|d}	|sttjdd	tjdW S |sttjd
d	tjdW S |sttjdd	tjdW S | sttjdd	tjdW S |	sttjdd	tjdW S t	j
j|d }
|
rFttjdd	tjdW S t	j
j|d}||_||_||_|	|_|  ttjdd	W S  ty } z&ttjt|d	tjdW  Y d }~S d }~0 0 d S )Nr   r   r   r    r!   r$   r+   r,   r-   r0   r1   r2   r3   r5   r7   r8   )r   r9   r   r:   r   r;   r<   r=   r>   AgencySubscriptionPlanr@   rA   rB   rC   rD   r!   rE   rF   rG   rH   rI   )rJ   rK   rL   rM   r<   r   r    r!   r$   rF   rN   rO   rP   rP   rQ   rR     sB    .




zaddAgencyPlan.postNrS   rP   rP   rP   rQ   r&    s   r&  c                   @   s   e Zd Zdd ZdS )editAgencyPlanc              
   C   s   zzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}|d}|d}|d}|d}|d}	|d}
|sttjd	d
tjdW S |sttjdd
tjdW S |sttjdd
tjdW S |sttjdd
tjdW S |	s ttjdd
tjdW S |
s>ttjdd
tjdW S t	j
j|dj|d}|rrttjdd
tjdW S t	j
j|d }||_|	|_||_||_|
|_|  ttjdd
W S  ty } z&ttjt|d
tjdW  Y d }~S d }~0 0 d S )Nr   r   rX   r   r    r!   r$   r+   rY   r-   r,   r0   r1   r2   r3   r5   rZ   r7   r[   )r   r9   r   r:   r   r;   r<   r=   r>   r'  r@   rA   r\   rB   r6   rD   r!   rE   rF   rG   rH   rI   )rJ   rK   rL   rM   r<   r]   r   r    r!   r$   rF   rN   rO   rP   rP   rQ   rR     sJ    .





zeditAgencyPlan.postNrS   rP   rP   rP   rQ   r(    s   r(  c                   @   s   e Zd Zdd ZdS )agencyChangePlanStatusc              
   C   s   zzt |}W n< tyJ } z$tdt|itjdW  Y d }~W S d }~0 0 |j}|d}|d}|sttjddtjdW S t	j
j|d }|r|dkrd|_nd	|_|  nttjd
dW S ttjddW S  ty } z&ttjt|dtjdW  Y d }~S d }~0 0 d S r_   )r   r9   r   r:   r   r;   r<   r=   r>   r'  r@   rA   rB   rG   rH   rI   ra   rP   rP   rQ   rR     s(    .


zagencyChangePlanStatus.postNrS   rP   rP   rP   rQ   r)    s   r)  c                   @   s   e Zd Zdd ZdS )agencyPlanListingc              
   C   s   zzt |}W n< tyJ } z$tdt|itjdW  Y d }~W S d }~0 0 tjjdd}g }|D ]0}|j	|j
|j|j|j|j|jd}|| qbttjd|dW S  t y } z&ttjt|dtjdW  Y d }~S d }~0 0 d S )	Nr   r   Trd   )rX   r   r$   r!   r    r   r+   rf   rg   r-   )r   r9   r   r:   r   r;   r'  r@   rA   rX   r6   rD   r!   rE   rF   rh   rH   rI   ri   rP   rP   rQ   r=     s(    .zagencyPlanListing.getNrn   rP   rP   rP   rQ   r*     s   r*  c                   @   s   e Zd Zdd ZdS )agencyPlanDetailsc              
   C   s"  zzt |}W n< tyJ } z$tdt|itjdW  Y d }~W S d }~0 0 | jjd}|svttj	ddtj	dW S t
jj|d }|sttj	ddtj	dW S |j|j|j|j|j|jd}ttjd	|d
W S  ty } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S )Nr   r   rX   rY   r-   rZ   rp   )rX   r   r$   r!   r    r+   rf   rg   )r   r9   r   r:   r   r;   rK   rq   r=   r>   r'  r@   rA   rB   rX   r6   rD   r!   rE   rF   rH   rr   rI   rs   rP   rP   rQ   r=     s,    .zagencyPlanDetails.getNrn   rP   rP   rP   rQ   r+    s   r+  c                   @   s   e Zd Zdd ZdS )purchaseAgencySubscriptionPlanc              
   C   sj  zzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}tjj	|d
 }|d}|d}|sttjddtjdW S |stdditjdW S tjj	|d	
 }tj }	|j}
|	tjt|
d
 }tjt_tjjt|jd d|dd}|rtjj	|dd
 }|r8d|_|  tjj|||	|dd}d|_|  t|jt|j  |j!|j"|j#tj$ |j%j|j%j&|j%j'd}t(d}|)|}t*dd}d|d< t+j,||d d}d}tj-}dg}t.||||d}|j/d|0 dd |1  ttj2d dW S  tyd } z.t3| ttj4t|dtj4dW  Y d }~S d }~0 0 d S !Nr   r   rv   rx   ry   rz   r-   r{   rZ   r   r   r   r   r   Tr   Fr   r   zeipo-agency-invoice.htmlr   r   r   r   r   r   r   r   r   r   r   r   )5r   r9   r   r:   r   r;   r<   r   r@   rA   rB   r=   r>   r'  r   r   r   rD   r   r   r	   r   r   r   r   rC   r!   AgencySubscriptionsr   rG   r   r   r   r   r   rX   r   rl   r6   rE   r   r   r   r   r   r   r   r   r   r   rH   rr   rI   rJ   rK   rL   rM   r<   r   rx   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rP   rP   rQ   rR   5  sl    .


>

z#purchaseAgencySubscriptionPlan.postNrS   rP   rP   rP   rQ   r,  4  s   r,  c                   @   s   e Zd Zdd ZdS )agencyMySubscriptionPlanc           
      C   sJ   zzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}tjj	|d
 }tjj	|ddd}|sttjddtjdW S g }|D ]H}|j|jj|jj|j|j|j|jj|jj|jj|jjd	
}	||	 qttjd
|dW S  tyD } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S )Nr   r   rv   True)r   r   r   r   r-   
rX   r]   r   r   r   r   r    r!   r$   r   rf   rg   )r   r9   r   r:   r   r;   r<   r   r@   rA   rB   r.  r   r>   rX   rl   r6   r   r   r   rE   r!   rD   rh   rH   rr   rI   r   rP   rP   rQ   r=   y  s8    .zagencyMySubscriptionPlan.getNrn   rP   rP   rP   rQ   r0  x  s   r0  c                   @   s   e Zd Zdd ZdS )agencyMySubscriptionPlanDetailsc           	   
   C   s6  zzt |}W n< tyJ } z$tdt|itjdW  Y d }~W S d }~0 0 |j}tjj	|d
 }|d}|sttjddtjdW S tjj	|d
 }|sttjddtjdW S |j|j|j|j|j|jd	}ttjd
|dW S  ty0 } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S )Nr   r   rv   rx   r   r-   rZ   r   )rX   r   r$   r!   r    r   rf   rg   )r   r9   r   r:   r   r;   r<   r   r@   rA   rB   r=   r>   r.  rX   r6   rD   r!   rE   rH   rr   rI   r   rP   rP   rQ   r=     s0    .
z#agencyMySubscriptionPlanDetails.getNrn   rP   rP   rP   rQ   r3    s   r3  c                   @   s   e Zd Zdd ZdS )agencySubscriptionRenewc              
   C   s  zbzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}tjj	|d
 }|d}|sttjddtjdW S tjj	|d
 }|jdkrtj }|tjd	d
 }	n@|jdkrtj }|tjdd
 }	ntj }|tjdd
 }	|s"ttjddtjdW S tjj	|d
 }
||
_||
_|	|
_d|
_|
  ttjddW S  ty } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S r   )r   r9   r   r:   r   r;   r<   r   r@   rA   rB   r=   r>   r'  rD   r   r   r   r   r.  rl   r   r   r   rG   rH   rr   rI   r   rP   rP   rQ   rR     s>    .





zagencySubscriptionRenew.postNrS   rP   rP   rP   rQ   r4    s   r4  c                   @   s   e Zd Zdd ZdS )agencyDeleteSubscriptionc              
   C   s   zzt |}W n< tyJ } z$tdt|itjdW  Y d }~W S d }~0 0 |j}tjj	|d
 }d|_|  ttjddW S  ty } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S r   r   r   rP   rP   rQ   rR     s    .zagencyDeleteSubscription.postNrS   rP   rP   rP   rQ   r5    s   r5  c                   @   s   e Zd Zdd ZdS )BuyBasicAgencyPlanc              
   C   sj  zzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}tjj	|d
 }|d}|sttjddtjdW S tjj	|dd
 }tjj	|d	
 }tj }	|j}
|	tjt|
d
 }|rd|_|  tjj|||	|dd}d|_|  ttjddW S  tyd } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S r   )r   r9   r   r:   r   r;   r<   r   r@   rA   rB   r=   r>   r.  r'  r   r   r   rD   r   r   r   rG   rC   r   rH   rr   rI   r   rP   rP   rQ   rR     s2    .

zBuyBasicAgencyPlan.postNrS   rP   rP   rP   rQ   r6    s   r6  c                   @   s   e Zd Zdd ZdS )agencyMakePaymentc           	   
   C   sd  zzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}tjj	|d
 }|d}|sttjddtjdW S tjj	|d
 }tdd	d
idt| d t| dd|jddddgd}| r td|jd jiW S tdditjdW S W nH ty^ } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S )Nr   r   rv   rx   rz   r-   rZ   r   r   r   zZhttp://54.225.243.254:9007/subscription-api/agency-payment-success-paypal?subscription_id=r   http://vipankumar.in:4016/r   r   r   r   r   r   r  r   r	  r
  )r   r9   r   r:   r   r;   r<   r   r@   rA   rB   r=   r>   r'  r  r  r!   rC   r  r  rr   rI   	rJ   rK   rL   rM   r<   r   rx   r   r  rP   rP   rQ   rR     s>    .

zagencyMakePayment.postNrS   rP   rP   rP   rQ   r7    s   r7  c                   @   s   e Zd Zdd ZdS )agencyPaymentSuccessPaypalc              
   C   s  z| j jd}tjj|d }| j jd}|sNttj	ddtj	dW S t
jj|d }tj }|j}|tjt|d }tjj|d	d
 }	|	rd|	_|	  tjj||||d	d}
d	|_|  t|jt|j |j|j|
jtj |
jj|
jj|
jj d}t!d}|"|}t#dd}d|d< t$j%||d d}d}t&j'}dg}t(||||d}|j)d|* dd |+  t,dW S  t-y } z.t.| ttj/t|dtj/dW  Y d }~S d }~0 0 d S Nr   rv   rx   rz   r-   r   rZ   r   Tr   Fr   r   r   r   r   r   r   r   r   r   r   r   r   r   z0http://vipankumar.in:4016?paymentpalsuccess=true)0rK   rq   r=   r   r@   rA   rB   r   r   r>   r'  r   r   r   rD   r   r   r.  r   rG   rC   r   r:   r   r   r   r   rX   r   rl   r!   r6   rE   r   r   r   r   r   r	   r   r   r   r   r   r   r9   rr   rI   rJ   rK   r   r   rx   r   r   r   r   r   r   r<   r   r   r   r   r   r   r   r   rM   rP   rP   rQ   r=   2  sN    
>


zagencyPaymentSuccessPaypal.getNrn   rP   rP   rP   rQ   r:  1  s   r:  c                   @   s   e Zd Zdd ZdS )agencyInitatePaymentc              
   C   sX  zzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}tjj	|d
 }|jd}|sttjddtjdW S tjj	|d
 }|j}|d}	d	}
d
}d|
iddi|	|ddd}tjd||
|fd}| }|d}ttj|dW S  tyR } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S r  )r   r9   r   r:   r   r;   r<   r   r@   rA   rB   r=   r>   r'  r!   r$  rR   r!  rH   rr   rI   r%  rP   rP   rQ   rR   e  s>    .

zagencyInitatePayment.postNrS   rP   rP   rP   rQ   r=  d  s   r=  c                   @   s   e Zd Zdd ZdS )addLawyerPlanc              
   C   s  zzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}|d}|d}|d}|d}|d}	|sttjdd	tjdW S |sttjd
d	tjdW S |sttjdd	tjdW S | sttjdd	tjdW S |	sttjdd	tjdW S t	j
j|d }
|
rFttjdd	tjdW S t	j
j|d}||_||_||_|	|_|  ttjdd	W S  ty } z&ttjt|d	tjdW  Y d }~S d }~0 0 d S )Nr   r   r   r    r!   r$   total_contractr,   r-   r0   r1   r2   total contract is requiredr5   r7   r8   )r   r9   r   r:   r   r;   r<   r=   r>   LawyerSubscriptionPlanr@   rA   rB   rC   rD   r!   rE   r?  rG   rH   rI   )rJ   rK   rL   rM   r<   r   r    r!   r$   r?  rN   rO   rP   rP   rQ   rR     sB    .




zaddLawyerPlan.postNrS   rP   rP   rP   rQ   r>    s   r>  c                   @   s   e Zd Zdd ZdS )editLawyerPlanc              
   C   s   zzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}|d}|d}|d}|d}|d}	|d}
|sttjd	d
tjdW S |sttjdd
tjdW S |sttjdd
tjdW S |sttjdd
tjdW S |	s ttjdd
tjdW S |
s>ttjdd
tjdW S t	j
j|dj|d}|rrttjdd
tjdW S t	j
j|d }||_|	|_||_||_|
|_|  ttjdd
W S  ty } z&ttjt|d
tjdW  Y d }~S d }~0 0 d S )Nr   r   rX   r   r    r!   r$   r?  rY   r-   r,   r0   r1   r2   r@  r5   rZ   r7   r[   )r   r9   r   r:   r   r;   r<   r=   r>   rA  r@   rA   r\   rB   r6   rD   r!   rE   r?  rG   rH   rI   )rJ   rK   rL   rM   r<   r]   r   r    r!   r$   r?  rN   rO   rP   rP   rQ   rR     sJ    .





zeditLawyerPlan.postNrS   rP   rP   rP   rQ   rB    s   rB  c                   @   s   e Zd Zdd ZdS )lawyerChangePlanStatusc              
   C   s   zzt |}W n< tyJ } z$tdt|itjdW  Y d }~W S d }~0 0 |j}|d}|d}|sttjddtjdW S t	j
j|d }|r|dkrd|_nd	|_|  nttjd
dW S ttjddW S  ty } z&ttjt|dtjdW  Y d }~S d }~0 0 d S r_   )r   r9   r   r:   r   r;   r<   r=   r>   rA  r@   rA   rB   rG   rH   rI   ra   rP   rP   rQ   rR     s(    .


zlawyerChangePlanStatus.postNrS   rP   rP   rP   rQ   rC    s   rC  c                   @   s   e Zd Zdd ZdS )lawyerPlanListingc              
   C   s   zzt |}W n< tyJ } z$tdt|itjdW  Y d }~W S d }~0 0 tjjdd}g }|D ]0}|j	|j
|j|j|j|j|jd}|| qbttjd|dW S  t y } z&ttjt|dtjdW  Y d }~S d }~0 0 d S )	Nr   r   Trd   )rX   r   r$   r!   r    r   r?  rf   rg   r-   )r   r9   r   r:   r   r;   rA  r@   rA   rX   r6   rD   r!   rE   r?  rh   rH   rI   ri   rP   rP   rQ   r=     s(    .	zlawyerPlanListing.getNrn   rP   rP   rP   rQ   rD     s   rD  c                   @   s   e Zd Zdd ZdS )lawyerPlanDetailsc              
   C   s"  zzt |}W n< tyJ } z$tdt|itjdW  Y d }~W S d }~0 0 | jjd}|svttj	ddtj	dW S t
jj|d }|sttj	ddtj	dW S |j|j|j|j|j|jd}ttjd	|d
W S  ty } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S Nr   r   rX   rY   r-   rZ   rp   )rX   r   r$   r!   r    r?  rf   rg   )r   r9   r   r:   r   r;   rK   rq   r=   r>   rA  r@   rA   rB   rX   r6   rD   r!   rE   r?  rH   rr   rI   rs   rP   rP   rQ   r=     s,    .zlawyerPlanDetails.getNrn   rP   rP   rP   rQ   rE    s   rE  c                   @   s   e Zd Zdd ZdS )purchaselawyerSubscriptionPlanc              
   C   sj  zzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}tjj	|d
 }|d}|d}|sttjddtjdW S |stdditjdW S tjj	|d	
 }tj }	|j}
|	tjt|
d
 }tjt_tjjt|jd d|dd}|rtjj	|dd
 }|r8d|_|  tjj|||	|dd}d|_|  t|jt|j  |j!|j"|j#tj$ |j%j|j%j&|j%j'd}t(d}|)|}t*dd}d|d< t+j,||d d}d}tj-}dg}t.||||d}|j/d|0 dd |1  ttj2d dW S  tyd } z.t3| ttj4t|dtj4dW  Y d }~S d }~0 0 d S r-  )5r   r9   r   r:   r   r;   r<   r   r@   rA   rB   r=   r>   rA  r   r   r   rD   r   r   r	   r   r   r   r   rC   r!   LawyerSubscriptionsr   rG   r   r   r   r   r   rX   r   rl   r6   rE   r   r   r   r   r   r   r   r   r   r   rH   rr   rI   r/  rP   rP   rQ   rR   5  sl    .


>

z#purchaselawyerSubscriptionPlan.postNrS   rP   rP   rP   rQ   rG  4  s   rG  c                   @   s   e Zd Zdd ZdS )lawyerMySubscriptionPlanc           
      C   sH   zzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}tjj	|d
 }tjj	|dd}|sttjddtjdW S g }|D ]H}|j|jj|jj|j|j|j|jj|jj|jj|jjd
}	||	 qttjd	|d
W S  tyB } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S )Nr   r   rv   r   r   r   r-   r2  rf   rg   )r   r9   r   r:   r   r;   r<   r   r@   rA   rB   rH  r   r>   rX   rl   r6   r   r   r   rE   r!   rD   rh   rH   rr   rI   r   rP   rP   rQ   r=   u  s8    .zlawyerMySubscriptionPlan.getNrn   rP   rP   rP   rQ   rI  t  s   rI  c                   @   s   e Zd Zdd ZdS )lawyerMySubscriptionPlanDetailsc              
   C   s"  zzt |}W n< tyJ } z$tdt|itjdW  Y d }~W S d }~0 0 | jjd}|svttj	ddtj	dW S t
jj|d }|sttj	ddtj	dW S |j|j|j|j|j|jd}ttjd	|d
W S  ty } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S rF  )r   r9   r   r:   r   r;   rK   rq   r=   r>   rH  r@   rA   rB   rX   r6   rD   r!   rE   r?  rH   rr   rI   rs   rP   rP   rQ   r=     s,    .z#lawyerMySubscriptionPlanDetails.getNrn   rP   rP   rP   rQ   rJ    s   rJ  c                   @   s   e Zd Zdd ZdS )lawyerSubscriptionRenewc              
   C   s  zbzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}tjj	|d
 }|d}|sttjddtjdW S tjj	|d
 }|jdkrtj }|tjd	d
 }	n@|jdkrtj }|tjdd
 }	ntj }|tjdd
 }	|s"ttjddtjdW S tjj	|d
 }
||
_||
_|	|
_d|
_|
  ttjddW S  ty } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S r   )r   r9   r   r:   r   r;   r<   r   r@   rA   rB   r=   r>   rA  rD   r   r   r   r   rH  rl   r   r   r   rG   rH   rr   rI   r   rP   rP   rQ   rR     s>    .





zlawyerSubscriptionRenew.postNrS   rP   rP   rP   rQ   rK    s   rK  c                   @   s   e Zd Zdd ZdS )lawyerDeleteSubscriptionc              
   C   s   zzt |}W n< tyJ } z$tdt|itjdW  Y d }~W S d }~0 0 |j}tjj	|d
 }d|_|  ttjddW S  ty } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S r   r   r   rP   rP   rQ   rR     s    .zlawyerDeleteSubscription.postNrS   rP   rP   rP   rQ   rL    s   rL  c                   @   s   e Zd Zdd ZdS )BuyBasicLawyerPlanc              
   C   sj  zzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}tjj	|d
 }|d}|sttjddtjdW S tjj	|dd
 }tjj	|d	
 }tj }	|j}
|	tjt|
d
 }|rd|_|  tjj|||	|dd}d|_|  ttjddW S  tyd } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S r   )r   r9   r   r:   r   r;   r<   r   r@   rA   rB   r=   r>   rH  rA  r   r   r   rD   r   r   r   rG   rC   r   rH   rr   rI   r   rP   rP   rQ   rR     s2    .

zBuyBasicLawyerPlan.postNrS   rP   rP   rP   rQ   rM    s   rM  c                   @   s   e Zd Zdd ZdS )lawyerMakePaymentc           	   
   C   sd  zzt |}W n< tyL } z$tdt|itjdW  Y d }~W S d }~0 0 |j}tjj	|d
 }|d}|sttjddtjdW S tjj	|d
 }tdd	d
idt| d t| dd|jddddgd}| r td|jd jiW S tdditjdW S W nH ty^ } z.t| ttjt|dtjdW  Y d }~S d }~0 0 d S )Nr   r   rv   rx   rz   r-   rZ   r   r   r   zZhttp://54.225.243.254:9007/subscription-api/lawyer-payment-success-paypal?subscription_id=r   r8  r   r   r   r   r   r   r  r   r	  r
  )r   r9   r   r:   r   r;   r<   r   r@   rA   rB   r=   r>   rA  r  r  r!   rC   r  r  rr   rI   r9  rP   rP   rQ   rR     s>    .

zlawyerMakePayment.postNrS   rP   rP   rP   rQ   rN    s   rN  c                   @   s   e Zd Zdd ZdS )lawyerPaymentSuccessPaypalc              
   C   s  z| j jd}tjj|d }| j jd}|sNttj	ddtj	dW S t
jj|d }tj }|j}|tjt|d }tjj|d	d
 }	|	rd|	_|	  tjj||||d	d}
d	|_|  t|jt|j |j|j|
jtj |
jj|
jj|
jj d}t!d}|"|}t#dd}d|d< t$j%||d d}d}t&j'}dg}t(||||d}|j)d|* dd |+  t,dW S  t-y } z.t.| ttj/t|dtj/dW  Y d }~S d }~0 0 d S r;  )0rK   rq   r=   r   r@   rA   rB   r   r   r>   rA  r   r   r   rD   r   r   rH  r   rG   rC   r   r:   r   r   r   r   rX   r   rl   r!   r6   rE   r   r   r   r   r   r	   r   r   r   r   r   r   r9   rr   rI   r<  rP   rP   rQ   r=   0  sN    
>


zlawyerPaymentSuccessPaypal.getNrn   rP   rP   rP   rQ   rO  /  s   rO  )]django.shortcutsr   rest_framework.viewsr   rest_framework.responser   rest_frameworkr   r   r   django.confr	   Zrest_framework_simplejwt.tokensr
   !rest_framework_simplejwt.backendsr   Zrest_framework.authenticationr   jwtr   modelsdjango.core.paginatorr   r   r   django.db.modelsr   Zcustomer_api.authenticationr   Zcustomer_api.modelsr   django.template.loaderr   django.corer   r   django.http.responser   django.core.mailr   Zxhtml2pdf.pisar   r   r  r$  django.httpr   r   Zagency_panel.modelsZlawyer_panel.modelsr   rW   r^   rc   ro   ru   r   r   r   r   r   	configurer   r  r  r  r&  r(  r)  r*  r+  r,  r0  r3  r4  r5  r6  r7  r:  r=  r>  rB  rC  rD  rE  rG  rI  rJ  rK  rL  rM  rN  rO  rP   rP   rP   rQ   <module>   s   DJ $O)%# g:</)+D #,3.)+@!$*