
    Nh{                        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
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Zd dlmZ  ej        e          Z G d de          Z G d dej                  Z G d de          ZdS )    )APIView)Responsestatus   )DeviceNotificationHistory)DeviceSerializerNotificationHistorySerializer)now)genericspermissions)IsAuthenticated)CustomPaginationN)Userc                       e Zd Zd ZdS )RegisterDeviceAPIViewc                 2   |j                             d          }|j                             dd          }|j                             dd           }|j                             dd           }|st          ddddt          j        	          S 	 t
          j                            |
          }d}| ||_        |                    dg           d}|rU	 t          j                            |          }||_	        |                    dg           n# t          j
        $ r Y nw xY wt          d|t          |          j         dt          j        	          S # t
          j
        $ r t
          j                            ||d          }|rU	 t          j                            |          }||_	        |                    dg           n# t          j
        $ r Y nw xY wt          ddt          |          j         dt          j        	          cY S w xY w)N	device_idplatformandroidr   user_idFdevice_id is required)r   messageerrorr   )r   zDevice already exists)update_fieldsz"Device status updated successfullyiddeviceT)r   r   data)r   r   r   zDevice created successfully)r    getr   r   HTTP_400_BAD_REQUESTr   objectssaver   r   DoesNotExistr
   HTTP_200_OKcreateHTTP_201_CREATED)	selfrequestr   r   status_flagr   r   r   users	            2/var/www/html/e360mart/notification/views/buyer.pypostzRegisterDeviceAPIView.post   s   L$$[11	<##J	::l&&x66,""9d33 	Yu9P[rss  }C  }X  Y  Y  Y  Y0	/^'')'<<F-G& +8*555> <++w+77D"(DKIIXJI7777(   D "(005  (	* * * * " 	/ 	/ 	/^**#! +  F  <++w+77D"(DKIIXJI7777(   D 8(005  -	/ / / / / /	/s[   AE >D E D&#E %D&&3E 3H>GHGHG4HHN__name__
__module____qualname__r.        r-   r   r      s#        9/ 9/ 9/ 9/ 9/r4   r   c                       e Zd ZeZeZd ZdS )BuyerNotificationAPIViewc                    |j                             d          }|st          dddt          j                  S t
          j                            |                                          }|st          dddt          j	                  S t          j                            |                              d	          }|                    d
                                          }|                     |          }|                     |dd|i          }	t          dd||                     |	j                  j        d          S )Nr   Fr   r   r   r   r   zDevice not found)r   z-sent_atis_readTr*   )manycontextz*Buyer notifications retrieved successfully)r   r   unread_countr    )query_paramsr!   r   r   r"   r   r#   filterfirstHTTP_404_NOT_FOUNDr	   order_bycountpaginate_querysetget_serializerget_paginated_responser    )
r)   r*   argskwargsr   r   notifications_qsr=   page
serializers
             r-   listzBuyerNotificationAPIView.listP   si   (,,[99	 	32  13 3 3 3
 &&)&44::<< 	1-  /1 1 1 1 /6==V=LLUUV`aa'..u.==CCEE %%&677((D9gBV(WW
C(//
@@E	
 
   	r4   N)r0   r1   r2   r   serializer_classr   pagination_classrL   r3   r4   r-   r6   r6   K   s/        4'    r4   r6   c                       e Zd Zd ZdS ) BuyerMarkNotificationReadAPIViewc           	         	 |j                             d          }|s8t                              d           t	          dddt
          j                  S t          j        	                    |          
                                }|s;t                              d|            t	          dd	dt
          j                  S t          j        	                    |d
          }|                                }|dk    r;t                              d|            t	          dddt
          j                  S |                    d           t                              | d|            t	          d| ddt
          j                  S # t           $ rm}t                              d|j                             d           dt%          |                      t	          dddt
          j                  cY d }~S d }~ww xY w)Nr   zdevice_id missing in request.Fzdevice_id is required.r8   r   r   zDevice not found or inactive: zActive device not found.)r   r:   r   z$No unread notifications for device: z.No unread notifications found for this device.Tr9   z* notifications marked as read for device: z notifications marked as read.z8Error in BuyerMarkNotificationReadAPIView for device_id=z: zInternal server error.)r    r!   loggerinfor   r   r"   r   r#   r?   r@   rA   r	   rC   updater&   	Exception	exceptionstrHTTP_500_INTERNAL_SERVER_ERROR)r)   r*   r   r   	unread_qsr=   es          r-   r.   z%BuyerMarkNotificationReadAPIView.postq   s   *	=((55I 7;<<<#7! ! !57 7 7 7
 ^**i*88>>@@F 5HYHHIII#9! ! !35 5 5 5
 ,3::&RW:XXI$??,,Lq  N9NNOOO#O! ! !35 5 5 5
 T***KK<^^S\^^___*JJJ  (* * * *
  	= 	= 	=  BX_XdXhXhitXuXu  B  By|}~yy  B  B  C  C  C3  ;= = = = = = = = =	=s4   AF A.F A5F ;AF 
HA"H=HHNr/   r3   r4   r-   rP   rP   p   s#        += += += += +=r4   rP   )rest_framework.viewsr   rest_framework.responser   rest_frameworkr   modelsr   r	   serializersr
   r   django.utils.timezoner   r   r   rest_framework.permissionsr   suscription.custom_paginationr   logginglogin_signup.modelsr   	getLoggerr0   rR   r   ListAPIViewr6   rP   r3   r4   r-   <module>rg      ss   ( ( ( ( ( ( , , , , , , ! ! ! ! ! ! 0 0 0 0 0 0 0 0 I I I I I I I I % % % % % % 0 0 0 0 0 0 0 0 6 6 6 6 6 6 : : : : : :  $ $ $ $ $ $		8	$	$:/ :/ :/ :/ :/G :/ :/ :/x" " " " "x3 " " "J,= ,= ,= ,= ,=w ,= ,= ,= ,= ,=r4   