o
    Ah                     @   s  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	 d dl
mZmZ d dlZeeZd	Zh d
ZdedejdefddZdedee dededejdee fddZdedejdee fddZdededejdee fddZdedejdee fddZdS )    )datetime)
Collection)database   )SupportActivityCreateSupportActivityUpdate)str_to_objectid)OptionalListNsupport_activities>   ticketsupport_requestsubscription_requestactivitydbreturnc              
      s   | j tvr
tdz+|t }|  }t |d< ||}t|j	|d< |d |d< t
d|d  |W S  tyH } zt
d|  d}~ww )z
    Insert a new customer support activity into the support_activities collection.
    Only allowed activity types are accepted.
    z9This activity type is not permitted for customer support.created_date_idactivity_idzCreated customer activity %sz$Error creating customer activity: %sN)typeALLOWED_CUSTOMER_TYPES
ValueErrorCOLLECTION_NAMEdictr   utcnow
insert_onestrinserted_idloggerinfo	Exceptionerror)r   r   activities_collectionactivity_dataresulte r&   @/var/www/html/moveengine/app/v1/services/saas/supportcustomer.py create_customer_activity_service   s"   

r(   
account_idtype_filterskiplimitc              
      s   zL|t  }| dttid}|r|tvrtd||d< ||||dd}g }|2 z3 dH W }	t|	d |	d< |	d |	d	< |	|	 q06 |W S  t
y` }
 ztd
|
  d}
~
ww )z
    Retrieve a paginated list of customer support activities for the given account.
    Only returns records with allowed types.
    z$in)r)   r   z1Invalid activity type filter for customer supportr   r   Nr   r   z%Error listing customer activities: %s)r   listr   r   findr+   r,   sortr   appendr    r   r!   )r)   r*   r+   r,   r   r"   querycursor
activitiesdocr%   r&   r&   r'    list_customer_activities_service%   s*   r6   r   c              
      s   z+|t  }|dt| i}|r*|dtvrtdt|d |d< |d |d< |W S  ty@ } zt	d| |  d}~ww )z@
    Retrieve a single customer support activity by its ID.
    r   r   "Access denied to internal activityr   z)Error retrieving customer activity %s: %sN)
r   find_oner   getr   r   r   r    r   r!   r   r   r"   r   r%   r&   r&   r'   get_customer_activity_service<   s   r;   activity_updatec              
      s   zE|t  }|jdd}|dt| id|i}|jdkr W dS |dt| i}|rD|dtvr6tdt	|d |d< |d |d	< |W S  t
yZ } ztd
| |  d}~ww )z7
    Update an existing customer support activity.
    T)exclude_unsetr   z$setr   Nr   r7   r   z'Error updating customer activity %s: %s)r   r   
update_oner   matched_countr8   r9   r   r   r   r    r   r!   )r   r<   r   r"   update_datar$   r   r%   r&   r&   r'    update_customer_activity_serviceM   s&   
rA   c              
      s   z7|t  }|dt| i}|sW dS |dtvrtd|dt| i t|d |d< |d |d< |W S  tyL } zt	
d| |  d}~ww )zK
    Delete a customer support activity and return the deleted record.
    r   Nr   r7   r   z'Error deleting customer activity %s: %s)r   r8   r   r9   r   r   
delete_oner   r    r   r!   r:   r&   r&   r'    delete_customer_activity_serviceb   s"   rC   )r   pymongo.collectionr   app.dbr   models.saas.supportmodelr   r   libraries.objectr   typingr	   r
   logging	getLogger__name__r   r   r   MongoDBr   r(   r   intr6   r;   rA   rC   r&   r&   r&   r'   <module>   s    
,  