B
    bg!                 @   s   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mZmZmZmZ d dlmZ d dlZG dd deZdS )	    )ladonize)request_validonline_employee_newstamp2datetimedatetime2stampinterface_response)save_notification
user_photo
get_sender)SUCCESS_CODEMESSAGE_CODESYSTEM_EXCEPTIONDATA_EXCEPTIONpaging)gettext_lazyNc               @   sZ   e Zd ZdZeeeeeeeeeeeed
dd Zeeeeeeeeeddd Z	dS )BioTimeAppAnnouncementu   
    【Announcement】
    )Zrtypec
          
   C   s  ddl m}
 ddlm}m} t||krL|sLtd}td}ttd||t	S yt
|}t|}|
 }||_||_||_|j|_|j|_d|_||_t||kr|r||_|  ddtd	i}ttt|ddS  tk
r } z dd
l}|  ttdd|tS d
}~X Y nX d
S )u  
        @param user:            employee id , add Private it's required
        @param subject:         (required)title
        @param content:         (required)content
        @param category:        1:Public, 2:Private
        @param send_time:       upload time（stamp）
        @param source:          data source(1: IOS， 2：Android)
        @param device_token:    Token for push message
        @param language:
        @param token:
        @rtype:
            success
                {"code": 1, "error": "", "describe": "", "message": "", "data":{"message":"Pop-up message"}}
            fail
                {"code": -10001, "error": "", "describe": "exception state", "message": "Pop-up message", "data":""}
        r   )Announcement)PUBLIC_ANNOUNCEMENTPRIVATE_ANNOUNCEMENTz
Data Errorz'Private announcement must be with user. messagez{0}zRequest is processingN)'mysite.mobile.models.model_announcementr   mysite.mobile.choicesr   r   int_r   r   r   r   r   subjectcontentcategory
company_ididsendersystem_sender	send_timeZreceiver_idZsaveformatr   jsondumps	Exception	traceback	print_excr   )selfuserr   r   r   r"   sourcedevice_tokenlanguagetokenr   r   r   errordescribeempZancdataer'    r4   @G:\easytimepro\master/mysite/mobile\services\app_announcement.pyupload_announcement   s4    z*BioTimeAppAnnouncement.upload_announcementc       (   
   C   s
  ddl m}m} ddlm}	m}
 ddlm} ddlm	} ddl
m} ddlm} |sxdtd	|}ttd
d
|tS yJt|}d|j d }|pd}d}|d | }|| }||d}dg i}||
fkr|d d |ddd||d}||ddd}||}g }|r|jjd|jd}|jjd|j|jd}g }t||
krfx8|D ]}||j qNW nx|D ]}||j qlW t|	}g }x|D ]} y6|jj| d d }!|!r|!j}"|!j}#nd}"d}#W n   d
}"d
}#Y nX | d |krt }$d}%| d |jkrd}%| d |$d < |"p(|#|$d!< t| d | d" d#d$ |$d$< d|t| |$d%< ||$d&< | d |$d'< |%|$d(< | d |$d)< t| d* |$d+< ||$ qW tt t!"||| d
d,S  t#k
r }& z dd-l$}'|'%  ttd
d
|&t&S d-}&~&X Y nX d-S ).u  
        get announcement
        @param category:        １：Public, ２：Private
        @param page_num:        page number(１５items/page)
        @param source:          data source(1: IOS， 2：Android)
        @param device_token:    Token for push message
        @param language:
        @param token:
        @rtype:
            success
                {"code": 1, "error": "", "describe": "", "message": "", "data":[{"code": object ID, "subject":"title",
                "content":"", "send_time":"(stamp)"},]}
            fail
               {"code": -10001, "error": "", "describe": "exception state", "message": "Pop-up message", "data":""}
        r   )get_sqlp_query)ANNOUNCEMENT_CATEGORYr   )r   )Employee)employee_transaction_paging)Qz{0}zParams category="{0}" error.r   '      )receiverr   andr@   sqlZannouncementmobile)ZsqlidZappparamsid_partZcreate_timeZdesc)Z	sort_nameZ
sort_order)r   r      )r   r   Zreceiver_id__exact   )r   ZAdminFTcodename   )r    r!   Zphotor   Zcategory_valr   r    r      Znotification_timeZ
successfulN)'Zmysite.sql_utilsr7   r8   r   r9   r   r   r   Zmysite.personnel.modelsr:   mysite.mobile.utilsr;   Zdjango.db.modelsr<   r#   r   r   r   r   r   r   appendZobjectsfilterr   r   dictfirst
first_name	last_namer
   r   r   r$   r%   r&   r'   r(   r   )(r)   r   Zpage_numr+   r,   r-   r.   r7   r8   r9   r   r   r:   r;   r<   r0   r1   Zemp_id_formatZ	PAGE_SIZEZbeginendrD   rE   rB   Zrowsr2   Zannouncement_public_messageZannouncement_private_messageZannouncementListZpublic_messageZprivate_messageZ
categoriesrZemp_namerQ   rR   rowZ	is_senderr3   r'   r4   r4   r5   pull_announcement@   s    





z(BioTimeAppAnnouncement.pull_announcementN)
__name__
__module____qualname____doc__r   r   strr   r6   rV   r4   r4   r4   r5   r      s
   &/r   )Zmysite.ladon.ladonizerr   rL   r   r   r   r   r   r   r	   r
   r   r   r   r   r   Zdjango.utils.translationr   r   r$   objectr   r4   r4   r4   r5   <module>   s   