o
    'j,                    @   s^  d dl Z d dlmZ d dlmZ d dlZd dlmZ d dlm	Z	m
Z
mZmZ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 d dlZd dlZd d
lmZ d dlZd dlmZ d dlmZ edd Zedd Z edd Z!edd Z"edd Z#dd Z$edd Z%dd Z&edd Z'edd  Z(ed!d" Z)edSd#d$Z*d%d& Z+d'd( Z,ed)d* Z-ed+d, Z.edSd-d$Z*ed.d/ Z/ed0d1 Z0ed2d3 Z1ed4d5 Z2ed6d7 Z3ed8d9 Z4ed:d;d<d=d>e5d?e5d@e5dAe5dBe5dCe5dDe5dEe5dFe5dGe5dHe5dIe5dJe5fdKdLZ6ed:d;d<d=dMdN Z7ed:d;d<d=dOdP Z8ed:d;d<d=dQdR Z9dS )T    N)shared_task)	send_mail)Shop)ProductsSKUSalesUnitProductSelectionProductCategoryProductSubCategory)NotificationStatOrdersPayment)	messaging)credentials)Users)settings)timezone)	timedeltac              
   C   s  t d ztjj| d }tj D ]}|j}|j}t	jj|dd}t	jj|dd}t	jj|dd}|s=|j
| n$d}|D ]}	tjj|	|d }
|
rX|
jdkrXd	} nqA|ra|j
| |sj|j
| n$d}|D ]}tjj||d }|r|jdkrd	} nqn|r|j
| |s|j
| qd}|D ]}tjj||d }|r|jdkrd	} nq|r|j
| qW n ty } zt d
|  W Y d }~nd }~ww t d d S )NzCelery job starteduuidVisibleproduct
sku_statusproduct__item_sub_categoryr   product__item_categoryr   Tsku
sales_unitFzCelery Shop Creation : z*Celery Shop Delete Status Change Completed)logginginfor   objectsfilterfirstr   item_sub_categoryitem_categoryr   r   remover   shop_admin_status	Exceptionerror)shop_idshopsku_productsku_sub_categorysku_categorysku_datasku_sub_category_datasku_category_dataproduct_remove_flagl	sku_salessub_category_remove_flagmsku_sub_category_salescategory_remove_flagnsku_category_salese r=   E/var/www/html/collabkart/collabkart.saasvaap.com/adminportal/tasks.pyshop_add_celery_status_check   sp   



Zr?   c              
   C   s   t d|   dtj d}dtj dd}| dd} d	| d
|ddidd|dd|dgdgdd}tj|||d}td|j	 td|j
 d S )Nu'   🔔 WhatsApp Task Triggered | Number: !https://graph.facebook.com/v21.0/	/messagesBearer application/jsonAuthorizationzContent-Type+ whatsapptemplatecodeenbodytexttyperM   rO   
parametersnamelanguage
componentsmessaging_producttorO   rI   headersjsonzSTATUS:z	RESPONSE:)r    r!   r   WHATSAPP_PHONE_NUMBER_IDWHATSAPP_ACCESS_TOKENreplacerequestspostprintstatus_coderM   )numberorderIDrS   template_nameurlrZ   payloadresponser=   r=   r>   send_whatsapp_message   s,   
ri   c                 C   s   dt j d}dt j dd}| dd} d| d	d
ddidd|dgddddd|dgdgdd}tj|||d}td|j d|j	  d S )Nr@   rA   rB   rC   rD   rF   rG   rH   rI   otp_verificationrJ   rK   rL   rM   rN   rP   buttonrf   0rO   sub_typeindexrQ   rR   rV   rY   zOTP WhatsApp Status: z, Response: )
r   r\   r]   r^   r_   r`   r    r!   rb   rM   )rc   otprf   rZ   rg   rh   r=   r=   r>   send_otp_whatsapp_message   s<   
$rq   c                 C   s:  t d z|dtj d}|dd}|dd}|dd}|dd}d	tj d
d}dd| ddddidd|dd|dd|dgddddd|dgdgdd}	tj||t	|	d}
|
j
dkrrt d|
j  W d S t d|
j
 d |
j  W d S  ty } zt d!|  W Y d }~d S d }~ww )"NzWhatsapp sending via celeryz!https://graph.facebook.com/v17.0/rA   pick_up_addressrG   drop_addressgoogle_place_linkrd   rB   rC   rD   rH   
individualrI   navya_update_1rJ   en_USrL   rM   rN   rP   rk   rf   rl   rm   rR   )rW   recipient_typerX   rO   rI   )rZ   data   zMessage sent successfully!, zFailed to send message:, z, z Whatsapp Message Sending Error: )r    r!   r   whatsapp_PHONE_NUMBER_IDgetwhatsapp_ACCESS_TOKENr_   r`   r[   dumpsrb   rM   r*   r)   )rc   rS   ry   rf   pickup_addressrs   rt   order_idrZ   rg   rh   r<   r=   r=   r>   "send_whatsapp_message_delivery_boy  s`   

-
 r   c              
   C   sh   t d td|  zt| ||||d W d S  ty3 } zt d|  W Y d }~d S d }~ww )NzEmail sending via celeryzEmail sending via celery to subjectmessage
from_emailrecipient_listfail_silentlyz-Delivery boy assigning Email Sending Failed: )r    r!   ra   r   r)   )r   r   r   r   r   r<   r=   r=   r>   email_sendingL  s   
r   c              
   C   s~   z#t jj|d }tjj| d }tjj||||d}|  W d S  ty> } zt	
d|  W Y d }~d S d }~ww )Nr   )SendmsgOrderIDsendToDescriptionz&Notification History Creation Failed: )r   r"   r#   r$   r   r
   createsaver)   r    r!   )OrderNotification_titler   descriptionuserordersnotification_datar<   r=   r=   r>   notification_stat_postZ  s   
r   c           
      C   s  t d t|||| zKtjstd}t| tj	tj
||d|||ddtjddtjdd	itjtjd
tj||ddddd| d}t|}t d|  W d S  tjys }	 zt d|	  W Y d }	~	d S d }	~	w tjy }	 zt d|	  W Y d }	~	d S d }	~	w tjy }	 zt d|	  W Y d }	~	d S d }	~	w tjy }	 zt d|	  W Y d }	~	d S d }	~	w tjy }	 zt d|	  W Y d }	~	d S d }	~	w ty }	 zt d|	  W Y d }	~	d S d }	~	ww )Nznotification sending via celeryj/var/www/html/Testing_prj/Navya-Bakers/constants/navyabakers-1d955-firebase-adminsdk-fbsvc-d2f9578075.json)titlerL   zOrder Update)r   r   rd   rO   high)priorityzapns-priority10c   default)badgealertsound)aps)rZ   rg   )notificationry   androidapnstokenu$   ✅ Notification sent successfully: zFCM token is no longer valid: zSender ID mismatch: z"Third party authentication error: zQuota exceeded: zInvalid arguments: zError sending notification: )r    r!   r   firebase_admin_appsr   Certificateinitialize_appr   MessageNotificationAndroidConfig
APNSConfigAPNSPayloadApsApsAlertsendUnregisteredErrorr*   SenderIdMismatchErrorThirdPartyAuthErrorQuotaExceededErrorInvalidArgumentErrorr)   )
fcmTokenr   r   r   r   	OrderUUIDcredr   rh   r<   r=   r=   r>   send_notificationi  sl   



r   c                  C   s"   t jstd} t |  d S d S )Nr   )r   r   r   r   r   )r   r=   r=   r>   initialize_fcm_app  s   
r   c           	   
   C   s   ddl m} tj}tj}tj}t|}|||}z|jj||| d}t	
d|  td|j d|  W d S  tyR } zt	
d|  W Y d }~d S d }~ww )Nr   )Client)rX   from_rL   zTwilio SMS send to z
Twilio SMSz	 send to zTwilio SMS Error: )twilio.restr   r   TWILIO_ACCOUNT_SIDTWILIO_AUTH_TOKENTWILIO_PHONE_NUMBERstrmessagesr   r    r!   ra   sidr)   )	rL   to_phoner   account_sid
auth_tokenfromphtwilio_clientr   r<   r=   r=   r>   sms  s$   
r   c              
   C   s  t d ztjj| d }tjj|jdd}tjj|jjdd}tjj|jjdd}t	j
d}|D ]}|s@|jj| n%d}|D ]}tjj||d	 }	|	r[|	jdkr[d
} nqD|re|jj| |sp|jjj| n&d}
|D ]}tjj||d	 }|r|jdkrd
}
 nqt|
r|jjj| |s|jjj| q4d}|D ]}tjj||d	 }|r|jdkrd
} nq|r|jjj| q4W n ty } zt d|  W Y d }~nd }~ww t d d S )Nz%shop availability update task startedidr   r   r   r   -created_atTr   Fz,Shop Admin Status Update from Celery error: z*shop availability status update task ended)r    r!   r   r"   r#   r$   r   r%   r&   r   order_byr   r'   r   r(   r)   )sku_idr   r0   r1   r2   shopsr,   r3   jr5   r6   kr8   r9   r4   r;   r<   r=   r=   r>   shop_admin_status_update  s   



<r   c              
   C   s  t d ztjj| d }tjj|d }tjj|jdd}tjj|jjdd}tjj|jj	dd}|s?|jj
| n%d}|D ]}tjj||d	 }	|	rZ|	jdkrZd
} nqC|rd|jj
| |so|jj	j
| n&d}
|D ]}tjj||d	 }	|	r|	jdkrd
}
 nqs|
r|jj	j
| |s|jjj
| n&d}|D ]}tjj||d	 }	|	r|	jdkrd
} nq|r|jjj
| W n ty } zt d|  W Y d }~nd }~ww t d d S )Nz5shop admin status update for shop from celery startedr   r   r   r   r   r   Tr   Fz1sku shop admin status update error from celery : z3shop admin status update for shop from celery ended)r    r!   r   r"   r#   r$   r   r   r%   r&   r   r'   r   r(   r)   )r   sales_unit_idr   r   r-   r1   r2   r3   zr5   product_category_remove_flagr    product_sub_category_remove_flagyr<   r=   r=   r>   &shop_admin_status_update_only_one_shop   s   



r   c              
   C     t d ztjj| d }|rotjj|dd}|s-tjj|d }|r,|j	| nd}|D ]}t
jj||d }|rH|jdkrHd} nq1|r]tjj|d }|r\|j	| nVtjj|d }|rn|j| nDtj D ]>}tjj|dd}|s|j	| qtd}|D ]}	t
jj|	|d }|r|jdkrd} nq|r|j	| qt|j| qtW n ty }
 zt d|
  W Y d }
~
nd }
~
ww t d	 d S 
Nz(category based shop admin status startedr   r   r   Tr   Fz*category based shop admin status started: z&category based shop admin status endedr    r!   r   r"   r#   r$   r   r   r   r'   r   r(   addallr)   r+   category_idr,   r2   update_statusr9   r4   r;   catr7   r<   r=   r=   r>   'category_based_shop_admin_status_celeryy  h   


r   c                 C   s   t jj| dD ]>}tjj|dd}|s|j| qd}|D ]}tjj||d }|r5|jdkr5d} nq|r?|j| q|j	| qd S )N)category__uuidr   r   Tr   F)
r	   r"   r#   r   r   r'   r   r$   r(   r   )r   r,   sub_catr1   r6   rr8   r=   r=   r>   category_exist  s,   
r   c                 C   s   t j D ]>}tjj|dd}|s|j|  qd}|D ]}tjj|| d }|r3|j	dkr3d} nq|r=|j|  q|j
|  qd S )Nr   r   Tr   F)r	   r"   r   r   r#   r   r'   r   r$   r(   r   )r,   r   r1   r6   sr8   r=   r=   r>   category_not_exist  s,   
r   c           	      C   s  t jj| d }|rrtjj|dd}|s*tjj|d }|r(|j| d S d S d}|D ]}tjj||d }|rE|j	dkrEd} nq.|r]tjj|d }|r[|j| d S d S tjj|d }|rp|j
| d S d S |r{t|| d S t| d S )Nr   r    product__item_sub_category__uuidr   Tr   F)r   r"   r#   r$   r   r	   r   r'   r   r(   r   r   r   )	r+   sub_category_idr   r,   r1   r   r6   r   r8   r=   r=   r>   +sub_category_based_shop_admin_status_celery  sF   
r   c           
      C   s   t jj| d }tjd}|r|j|d}|r|j|d}|D ]>}tjj|dd}|s4|j| q!d}|D ]}t	jj||d }	|	rO|	j
dkrOd	} nq8|rY|j| q!|j| q!d S )
Nr   z-created_date)item_category__uuid)r%   r   r   Tr   F)r   r"   r#   r$   r   r   r   r   r'   r   r(   r   )
r+   r   r   r,   product_listr   sku_productsr3   r-   sku_product_salesr=   r=   r>   category_product_list1  s,   
r   c              
   C   r   r   r   r   r=   r=   r>   r   ^  r   c              
   C   s  t d ztjj|d }tjj| d } tjj| dd}tjj|dd}tjj|dd}tjj|dd}tj	d}|D ]}	|re|D ]}
t
jj|
|	d	 }|rd|jdkrd|jjjj|	  nqF|r|D ]}t
jj||	d	 }|r|jdkr|jjjj|	  nqi|s| j|	 n$d
}|D ]}t
jj||	d	 }|r|jdkrd} nq|r| j|	 |s|j|	 q@d
}|D ]}t
jj||	d	 }|r|jdkrd} nq|r|j|	 q@W n ty } zt d W Y d }~nd }~ww t d d S )NzHmaster product edit category based shop shop admin status change startedr   r   r   r   r   )product__item_category__uuidr   r   r   TFz+master product edit celery task failed: {e}z)master product edit celery task completed)r    r!   r   r"   r#   r$   r	   r   r   r   r   r(   r   r   r%   r   r   r'   r)   )existing_sub_categoryexisting_categoryto_sub_categoryto_categoryr1   r2   to_sku_sub_category_datato_sku_category_datar   r,   to_sku_category_to_sku_category_salesto_sku_sub_category_to_sku_sub_category_salesr6   r   r8   r9   r4   r;   r<   r=   r=   r>   .product_availability_shop_status_change_celery  s   




>r   c           
   
   C   sZ  t d ztjj| d } tjj|d }tjj| dd}tjj|dd}tj	d}|D ]\}|s;|j
| n$d}|D ]}tjj||d }|rV|jdkrVd	} nq?|r_|j
| |sh| j
| q0d}|D ]}tjj||d }|r|jdkrd	} nql|r| j
| q0W n ty }	 zt d
 W Y d }	~	nd }	~	ww t d d S )Nz)master product delete celery task startedr   r   r   r   r   Tr   Fz-master product delete celery task error : {e}z+master product delete celery task completed)r    r!   r	   r"   r#   r$   r   r   r   r   r   r'   r   r(   r)   )
product_sub_categoryproduct_categoryr1   r2   r   r,   r3   r   r5   r<   r=   r=   r>   ;master_product_edit_celery_task_to_update_shop_availability   sR   


&r  c              
   C   s  t d tjj| d }zP|jdkr6tjj|dd }|r.|jdkr*d|_	nd|_	nd|_	|
  nd|_	|
  |j	rjtjj|jjdjdd tjj|jjjd	jdd tjj|jjjd	jdd ntjj|jddd
}|stjj|jjdjdd n3d}|D ]}tjj|dd }|rtjj|jjdjdd d} nq|stjj|jjdjdd tjj|jjddd}|stjj|jjjd	jdd n6d}|D ] }	tjj|	dd }
|
rtjj|jjjd	jdd d} nq|s	tjj|jjjd	jdd tjj|jjddd}|s&tjj|jjjd	jdd n8d}|D ]"}tjj|dd }|rKtjj|jjjd	jdd d} nq*|s^tjj|jjjd	jdd W n tyz } zt d|  W Y d }~nd }~ww t d d S )N'update sku status long distance startedr   r   r   status   TFlong_distance_availabilityr   r   r   sku_expiry_duration__gtr   r   r	  r   r   r	  z-long distance sku edit status check failed : z long distance sku edit completed)r    r!   r   r"   r#   r$   r   r   sku_expiry_durationr  r   r   r   r   updater   r&   r   r	   r%   r)   )r   r0   sales_unit_datalong_dist_sku_productlong_dist_product_flagr   long_dist_sales_checklong_dist_sku_sub_categorylong_dist_sub_category_flagr   long_dist_sales_check_sublong_dist_sku_categorylong_dist_sku_category_flagxlong_dist_sales_check_catr<   r=   r=   r>   ,update_sku_long_distance_status_check_celery@  s   



r  c              
   C   s@  t d ztjj| d }tjj|d }tjj|d }tjj|ddd}|s9tjj|j	dj
dd n1d}|D ]}tjj|dd	 }	|	r[tjj|j	dj
d
d d
} nq=|sjtjj|j	dj
dd tjj|ddd}
|
stjj|jdj
dd n1d}|
D ]}tjj|dd	 }|rtjj|jdj
d
d d
} nq|stjj|jdj
dd tjj|ddd}|stjj|jdj
dd n1d}|D ]}tjj|dd	 }|rtjj|jdj
d
d d
} nq|stjj|jdj
dd t d W d S  ty } zt d|  W Y d }~d S d }~ww )Nr  r   r   r   r  r  Fr  r  Tr
  r  z delete long distance error endedz'delete sku status long distance Error: )r    r!   r   r"   r#   r$   r	   r   r   r   r  r   r   r)   )sku_product_idsku_sub_category_idsku_category_idr-   r.   r/   r  r  ir  r  r  r   r  r  r  r   r  r<   r=   r=   r>   !long_distance_status_check_celery  s   

r  c                 C   s   t d tjj|ddd}|stjj|djdd n3d}|D ]!}tjj|d }|rA|j	dkrAtjj|djd	d d	} nq |sOtjj|djdd tjj| ddd
}|sft
jj| djdd n/d}|D ]}tjj|dd }	|	rt
jj| djd	d d	} nqj|st
jj| djdd tjj|d }
tjj|
ddd}|stjj|
jdjdd n1d}|D ]}tjj|dd }|rtjj|
jdjd	d d	} nq|stjj|
jdjdd tjj|
jddd}|stjj|
jjdjdd n6d}|D ]!}tjj|dd }|r&tjj|
jjdjd	d d	} nq|s8tjj|
jjdjdd tjj|
jddd}|sSt
jj|
jjdjdd n6d}|D ]!}tjj|dd }	|	rwt
jj|
jjdjd	d d	} nqW|st
jj|
jjdjdd t d d S )NzYproduct category sub category change on product edit  long distance status update startedr   r  )r   r   r	  r   Fr  )r   T)r   r   r	  r  r   r  r
  r  zWproduct category sub category change on product edit  long distance status update ended)r    r!   r   r"   r#   r	   r  r   r$   r  r   r   r   r%   r   r&   )r   r   
product_idr  r  r  r  r  r  r  r   r  r  r  r=   r=   r>   !long_distance_master_product_edit  s   




r   c              
   C   s  t d ztjj| d }tjj|d }tjj|d }tjj|dd}tjj|dd}tjj|dd}t	j
d}	|	D ]}
|sL|j|
 n$d	}|D ]}tjj||
d
 }|rg|jdkrgd} nqP|rp|j|
 |sy|j|
 n$d	}|D ]}tjj||
d
 }|r|jdkrd} nq}|r|j|
 |s|j|
 qAd	}|D ]}tjj||
d
 }|r|jdkrd} nq|r|j|
 qAW n ty } zt d|  W Y d }~nd }~ww t d d S )Nz.sku delete long distance status update startedr   r   r   r   r   r   r   Tr   Fz!SKU delete Long  Distance Error: z,sku delete long distance status update ended)r    r!   r   r"   r#   r$   r	   r   r   r   r   r   r'   r   r(   r)   )r  r  r  r-   r.   r/   r0   r1   r2   r   r,   r3   r   r5   r6   r   r8   r9   r4   r;   r<   r=   r=   r>   sku_delete_long_distance_celeryH  s   



<r!  T   
   )bindmax_retriesdefault_retry_delayphone_numberdelivery_partner_namer   pickup_locationcustomer_namecustomer_phonedelivery_addressgoogle_maps_linkorder_amountpayment_modedelivery_slotpickup_timeconfirm_linkc                 C   s  t d|  zdtj d}dtj dd}|dd}t d	|  d
|ddddidd|dd|dd|dd|dd|dd|dd|dd|	dd|
dd|dd|dd|dgdgdd}tj|||d}t d|j  t d|j	  |jdkrt 
d|j	  td|j t d|  d|dW S  ty } zt 
d| dt   | j|d d!}~ww )"z)Send WhatsApp message to delivery partneruD   🚀 TASK STARTED: send_whatsapp_message_delivery_partner for order r@   rA   rB   rC   rD   rF   rG   u   📱 Sending to: rH   rI   delivery_boy_assignrJ   rK   rL   rM   rN   rP   rR   rV   rY   zWhatsApp Status: zWhatsApp Response: rz   u   ❌ WhatsApp API error: WhatsApp API returned u4   ✅ TASK COMPLETED: WhatsApp message sent for order Tsuccessr   u   ❌ WhatsApp task failed: 
excN)r    r!   r   r\   r]   r^   r_   r`   rb   rM   r*   r)   	traceback
format_excretry)selfr'  r(  r   r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  rf   rZ   rg   rh   r9  r=   r=   r>   &send_whatsapp_message_delivery_partner  sX   

r>  c                 C   s   t d|  zKt d|  d| d| d| d| d| d| d	| d
| d|	 d|
 d| d| d}td| |tj|gdd t d|  d|dW S  tyr } zt d| dt   | j	|dd}~ww )zSend email to delivery partneru8   🚀 TASK STARTED: send_delivery_assign_email for order u   📧 Sending to: z
Hello z_,

You have been assigned a new order delivery.

Order Details
-------------
Order ID        : z
Pickup Location : z6

Customer Details
----------------
Customer Name   : z
Customer Phone  : z$

Delivery Address
----------------
z&

Delivery Location
-----------------
u7   

Payment Details
---------------
Order Amount    : ₹z
Payment Mode    : z

Delivery Slot   : z

Delivery Confirmation Link
--------------------------  
Please confirm delivery by clicking the link below once the order is delivered:
zL

Pickup Instruction
------------------
Please reach the pickup location by zc,
collect the payment, and update the delivery status after completion.

Thank you,
Navya Bakeshop
z!New Delivery Assigned | Order ID Fr   u)   ✅ TASK COMPLETED: Email sent for order Tr5  u   ❌ Email task failed: r7  r8  N)
r    r!   r   r   DEFAULT_FROM_EMAILr)   r*   r:  r;  r<  )r=  r(  r   r)  r,  delivery_locationr*  r+  r.  r/  r0  r1  recipient_emaildeliverylinkr   r9  r=   r=   r>   send_delivery_assign_email  sT   !%,rC  c              
   C   s  z}t d|  tjj|d}tjj|d }|jdkr2|jdkr2t d| d|j  W d S t d| d t	j
tj d	d
|idd}t d|j d|j  |jdkr{d|_d|_|jdgd |jdgd t d| d W d S W d S  tjy   t d| d Y d S  t	jy } zt d|  | j|dd }~w ty } zt d | j|dd }~ww )Nz[CELERY] Checking order )order_ID)orderz	New OrderzBill Createdz[CELERY] Order u    already updated → u"    still New Order → checking Payuzorders/double/verifiy/r   r#  )r[   timeoutz[CELERY] Payu verify response : rz   Failedorder_status)update_fieldspayment_statusz marked FAILEDz does not existz[CELERY] Network error: r8  z[CELERY] Unexpected error)r    r!   r   r"   r|   r   r#   r$   rI  r_   r`   r   DOMAINrb   rM   rK  r   warningDoesNotExistr*   RequestExceptionr<  r)   	exception)r=  r   rE  paymentrh   r9  r=   r=   r>   check_and_verify_order_statusE  sD   


rR  c                 C   s  t d|  zdtj d}dtj dd}t|ddd	d }t d
|  t|p3d}t|p9d}t|p?d}t|pEd}t|pKd}t|pQd}t|pWd}t|	p]d}	t|
pcd}
d|ddddidd|dd|dd|dd|dd|dd|dd|dd|	dd|
dg	dgdd}t d|  tj	|||dd}t d|j
  t d|j  |j
dvrt d|j
 d|j  td|j
 d|j t d |  d!|| d"W S  tjjy } zt d#|  | j|d$d%}~w tjjy$ } zt d&|  | j|d$d%}~w tyF } zt d'| d| d(t   | j|d$d%}~ww ))z@
    Send WhatsApp order confirmation message to Shop Owner
    u9   🚀 TASK STARTED: send_whatsapp_order_message for order r@   rA   rB   rC   rD   rF   rG    u"   📱 Sending WhatsApp message to: rH   rI   orde_confrimed_shopadminrJ   rK   rL   rM   rN   rP   rR   rV   u   📦 Payload: r  )rZ   r[   rF  u   📨 WhatsApp Status Code: u   📨 WhatsApp Response: )rz      u!   ❌ WhatsApp API Error | Status: z | Response: r4  rG  uA   ✅ TASK COMPLETED: WhatsApp message sent successfully for order T)r6  r   rh   u   ⏰ WhatsApp API Timeout: r8  Nu$   🌐 WhatsApp API Connection Error: u#   ❌ WhatsApp task failed for order r7  )r    r!   r   r\   r]   r   r^   stripr_   r`   rb   rM   r*   r)   r[   
exceptionsTimeoutr<  ConnectionErrorr:  r;  )r=  r'  shop_owner_namer   r*  r+  addresstotal_amountpayment_methoddelivery_modedelivery_timerf   rZ   rg   rh   r9  r=   r=   r>   send_whatsapp_order_messager  s   


r`  )N):r:  celeryr   django.core.mailr   r    shops.modelsr   products.modelsr   r   r   r   r	   orders.modelsr
   r   r   r   r   r   accounts.modelsr   r_   django.confr   r[   django.utilsr   datetimer   r?   ri   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r!  r   r>  rC  rR  r`  r=   r=   r=   r>   <module>   s   
 
*
5
F

=

Z
X> *
.
,=
c
?
[
A
i
]	
J
S
,