o
    Ah0                     @   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 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d ZdS )    )BackgroundTasksHTTPException)ObjectId)datetime)Optional)str_to_objectid   )CommunicationEmailCreateCommunicationEmailUpdatecommunication_emailpayload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
collectiondatainserted r   D/var/www/html/moveengine/app/v1/services/saas/communication_email.py"create_communication_email_service   s   
r   
account_idskiplimitqaccount_viewc                 C   s   |t  }i }|ddks|dkr| |d< d| i}|r0|dd}	d|	id|	id|	id	|	ig|d
< t||||}
||}|
D ] }t|d |d< |dd  t	|dt
rd|d  |d< qD||
dS )Nroles   r   i)z$regexz$optionsemail_titleemail_to
email_fromstatusz$or_idemail_idr   )total_countemails)r   getlistfindr   r   count_documentsr   pop
isinstancer   	isoformat)r   r   r   r    r!   r   current_userr   queryregexr,   r+   emailr   r   r    get_communication_emails_service   s*   


r8   r*   c                 C   s>   |t  dt| i}|rt|d |d< |dd  |S d S )Nr)   r*   )r   find_oner   r   r1   )r*   r   r7   r   r   r    read_communication_email_service5   s   r:   updatec                 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    z6update_communication_email_service.<locals>.<dictcomp>r)   z$setr     Email record not foundstatus_codedetailr   )
r   r   items
update_oner   matched_countr   r9   r   r1   )r*   r;   r   r   update_dataresultupdatedr   r   r   "update_communication_email_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   r9   r   r   
delete_oner   r1   )r*   r   r   r7   r   r   r   "delete_communication_email_serviceM   s   rM   c                 C   s   | d }dddddgiiiddd	d
idig}| |}dddd}|D ]}|d }|d }||v r>|||< |d  |7  < q$|S )Nr   z$matchr(   z$insuccessfailedz$groupz$statusz$sumr#   )r)   countr   )rN   rO   totalr)   rP   rQ   )	aggregate)r   r   pipelineresultscountsrI   r(   rP   r   r   r   get_email_status_countsY   s"   
rV   N)fastapir   r   bsonr   r   typingr   app.v1.libraries.objectr   models.saas.communication_emailr	   r
   r   r   r   intr8   r:   rK   rM   rV   r   r   r   r   <module>   s    &	