o
    2iW                     @   s  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 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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d6dd Z#d!d" Z$d#d$ Z%ed%d& Z&ed'd( Z'ed6d)d Z#ed*d+ Z(ed,d- Z)ed.d/ Z*ed0d1 Z+ed2d3 Z,ed4d5 Z-dS )7    )shared_task)	send_mailN)Shop)ProductsSKUSalesUnitProductSelectionProductCategoryProductSubCategory)NotificationStatOrders)	messaging)credentials)Users)settingsc              
   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:   ;/var/www/html/Testing_prj/Navya-Bakers/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: z!https://graph.facebook.com/v21.0/	/messagesBearer application/jsonAuthorizationzContent-Type+ whatsapptemplatecodeenbodytexttyperI   rK   
parametersnamelanguage
components)messaging_producttorK   rE   )headersjsonzSTATUS:z	RESPONSE:)r   r   r   WHATSAPP_PHONE_NUMBER_IDWHATSAPP_ACCESS_TOKENreplacerequestspostprintstatus_coderI   )numberorderIDrO   template_nameurlrT   payloadresponser:   r:   r;   send_whatsapp_message   s,   
rc   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/r=   pick_up_addressrC   drop_addressgoogle_place_linkr^   r>   r?   r@   rD   
individualrE   navya_update_1rF   en_USrH   rI   rJ   rL   buttonr`   0)rK   sub_typeindexrM   rN   )rR   recipient_typerS   rK   rE   )rT   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_TOKENrY   rZ   rU   dumpsr\   rI   r'   r&   )r]   rO   ro   r`   pickup_addressre   rf   order_idrT   ra   rb   r9   r:   r:   r;   "send_whatsapp_message_delivery_boy   s`   

-
 rw   c              
   C   sZ   t d zt| ||||d W d S  ty, } zt d|  W Y d }~d S d }~ww )NzEmail sending via celery)subjectmessage
from_emailrecipient_listfail_silentlyz-Delivery boy assigning Email Sending Failed: )r   r   r   r&   )rx   ry   rz   r{   r|   r9   r:   r:   r;   email_sending  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_datar9   r:   r:   r;   notification_stat_post$  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)titlerH   zOrder Update)r   r   r^   rK   high)priorityzapns-priority10c   default)badgealertsound)aps)rT   ra   )notificationro   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credry   rb   r9   r:   r:   r;   send_notification3  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_appq  s   
r   c           	   
   C   s   ddl m} d}d}d}t|}|||}z|jj||| d}td|  W d S  tyD } ztd|  W Y d }~d S d }~ww )	Nr   )Client"ACc6df2dd6139dd07e9d84e78ac73f27f8 d01958dbb0ae7723b4718873add279e7z+18106965991)rS   from_rH   zTwilio SMS send to zTwilio SMS Error: )twilio.restr   strmessagesr   r   r   r&   )	rH   to_phoner   account_sid
auth_tokenfromphtwilio_clientry   r9   r:   r:   r;   smsy  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   r-   r.   r/   shopsr)   r0   jr2   r3   kr5   r6   r1   r8   r9   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*   r.   r/   r0   zr2   product_category_remove_flagr    product_sub_category_remove_flagyr9   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)   r/   update_statusr6   r1   r8   catr4   r9   r:   r:   r;   'category_based_shop_admin_status_celeryB  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_catr.   r3   rr5   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   r.   r3   sr5   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)   r.   r   r3   r   r5   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_productsr0   r*   sku_product_salesr:   r:   r;   category_product_list  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_categoryr.   r/   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_salesr3   r   r5   r6   r1   r8   r9   r:   r:   r;   .product_availability_shop_status_change_celerye  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_categoryr.   r/   r   r)   r0   r   r2   r9   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   r-   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_catr9   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  r9   r:   r:   r;   !long_distance_status_check_celerye  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,   r-   r.   r/   r   r)   r0   r   r2   r3   r   r5   r6   r1   r8   r9   r:   r:   r;   sku_delete_long_distance_celery  s   



<r  )N).celeryr   django.core.mailr   r   shops.modelsr   products.modelsr   r   r   r   r	   orders.modelsr
   r   r   r   r   accounts.modelsr   rY   NavyaBackersr   rU   r<   rc   rw   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r:   r:   r:   r;   <module>   sl   
 
,
F

=

Z
X> *
.
,=
c
?
[
A
i