o
    hm                     @   s   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m	Z	 ddl
mZmZmZ dZd	Zded
efddZdedededee dee f
ddZdefddZdedefddZdefddZdefddZdefdd Zd!S )"    )BackgroundTasksHTTPException)ObjectId)datetime)Optional)str_to_objectid   )TicketCreateTicketUpdateTicketReplyCreateticketticket_repliesbackground_tasksc                 C   s8   |t  }|  }t |d< ||}t|j|d< |S Ncreated_dateidCOLLECTION_NAMEdictr   utcnow
insert_onestrinserted_id)r   r   dbtickets_collectionticket_datainserted r   5/var/www/html/moveengine/app/v1/services/cx/ticket.pycreate_ticket_service   s   
r   
account_idskiplimitqaccount_viewc                 C   s   |t  }i }|ddks|dkr| |d< |r)|dd}	d|	id|	id|	ig|d	< t||||}
||}|
D ]#}t|d
 |d< |d
d  d|v r`t	|d t
r`|d  |d< q=||
dS )Nroles   r    i)z$regexz$optionssubject	questingsdescriptionz$or_id	ticket_idr   )total_counttickets)r   getlistfindr!   r"   count_documentsr   pop
isinstancer   	isoformat)r    r!   r"   r#   r$   r   current_userr   queryregex_queryr.   r-   r   r   r   r   get_tickets_service   s&   


r9   r,   c                 C   s>   |t  dt| i}|rt|d |d< |dd  |S d S )Nr+   r,   )r   find_oner   r   r3   )r,   r   r   r   r   r   read_ticket_service3   s   r;   r   c                 C   s~   |t  }dd |  D }|dt| id|i}|jdkr&tddd|dt| i}t|d |d	< |	dd  |S )
Nc                 S   s   i | ]\}}|d ur||qS )Nr   ).0kvr   r   r   
<dictcomp>>   s    z)update_ticket_service.<locals>.<dictcomp>r+   z$setr     Ticket not foundstatus_codedetailr   )
r   r   items
update_oner   matched_countr   r:   r   r3   )r,   r   r   r   update_dataresultupdatedr   r   r   update_ticket_service<   s   

rK   c                 C   s\   |t  }|dt| i}|stddd|dt| i t|d |d< |dd  |S )Nr+   r@   rA   rB   r   )r   r:   r   r   
delete_oner   r3   )r,   r   r   r   r   r   r   delete_ticket_serviceN   s   rM   payloadc                 C   s8   |t  }|  }t |d< ||}t|j|d< |S r   r   )rN   r   
collectiondatar   r   r   r   create_ticket_reply_service[   s   
rQ   c                 C   s~   |t  }d| i}t||dd}t|}|D ] }t|d |d< |dd  t|dt	r9|d 
 |d< q||dS )Nr,   r   r&   r+   reply_id)r-   replies)r   r0   r1   sortlenr   r3   r4   r/   r   r5   )r,   r   rO   r7   rS   r-   replyr   r   r   get_ticket_replies_servicef   s   
rW   N)fastapir   r   bsonr   r   typingr   app.v1.libraries.objectr   models.cx.ticketr	   r
   r   r   COLLECTION_NAME_REPLYr   r   intr9   r;   rK   rM   rQ   rW   r   r   r   r   <module>   s    &	