o
    6k~i                     @   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	 d dl
mZ edd	 Zed
d Zedd Zedd ZdS )    )shared_task)timezone)	timedelta   )Notification)Booking)Offerc              
   C   s   zFt jj| d}|j}tjj|ddd|jj d|j d|j	 |j
|jj
dd |jrDd	d
lm} ||jdt|j
|jj
dd W dS W dS  t jyQ   Y dS w )z/Send reminder notification for upcoming bookingidbooking_reminderu   تذكير بالحجزu   لديك حجز في u    في u    الساعة )
booking_idplace_idusertypetitlemessagedatar   )send_fcm_notification)r   r   r   N)r   objectsgetr   r   createplacenamedatetimer
   	fcm_tokenservicesr   r   DoesNotExist)r   bookingr   r    r    8/var/www/newdalilibackend/backend/notifications/tasks.pysend_booking_reminder	   s,   	
	r"   c                  C   s   t  tdd } tjj|  ddgd}|D ]}tj|j	gt  tdd d qt  tdd }tjj| |j
ddgd	}|D ]}tj|j	g|d qCd
S )z(Schedule reminders for upcoming bookingsr   )dayspending	confirmed)r   
status__in   )hours)argseta)r   
time__hourr&   N)r   nowr   r   r   filterr   r"   apply_asyncr
   hour)tomorrowbookingsr   one_hour_laterr    r    r!   schedule_booking_reminders'   s,   r3   c                  C   sl   t  } tjjd| d}|D ]%}d|_|  t|jj	dr3t
jj|jj	ddd|j dd	|jid
 qdS )z#Check and deactivate expired offersT)	is_activeend_date__ltFplace_admin_profileoffer_expiredu   انتهى العرضu   انتهى عرض ""offer_idr   N)r   r,   r   r   r-   r4   savehasattrr   ownerr   r   r   r
   )r,   expired_offersofferr    r    r!   check_expired_offersF   s$   r?   c              
   C   s   z7ddl m} |jj| d}|j}t|jdr5tjj|jddd|j	j
 d|j d	|j|jd
d W dS W dS  tyQ } ztd|  W Y d}~dS d}~ww )z*Send notification when new review is addedr   )Reviewr	   r6   
review_newu   تقييم جديدu   تقييم جديد من z - u	    نجوم)	review_idr   r   z#Error sending review notification: N)reviews.modelsr@   r   r   r   r;   r<   r   r   r   usernameratingr
   	Exceptionprint)rB   r@   reviewr   er    r    r!   send_new_review_notification^   s"   rJ   N)celeryr   django.utilsr   datetimer   modelsr   bookings.modelsr   offers.modelsr   r"   r3   r?   rJ   r    r    r    r!   <module>   s    


