
    V
h                        S SK J r   S SKJr  S SKJr  SSKJrJr  SSKJ	r	  S SK
JrJr  S SKr\R                  " \5      rS	r1 S
krS\S\R&                  S\4S jrS\S\\   S\S\S\R&                  S\\   4S jrS\S\R&                  S\\   4S jrS\S\S\R&                  S\\   4S jrS\S\R&                  S\\   4S jrg)    )datetime)
Collection)database   )SupportActivityCreateSupportActivityUpdate)str_to_objectid)OptionalListNsupport_activities>   ticketsupport_requestsubscription_requestactivitydbreturnc                   #    U R                   [        ;  a  [        S5      e U[           nU R	                  5       n[
        R                  " 5       US'   UR                  U5      n[        UR                  5      US'   US   US'   [        R                  SUS   5        U$ ! [         a  n[        R                  SU5        e SnAff = f7f)zz
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es         RC:\Suresh\moveshuttle\MDcreated\moveengine\app\v1\services\saas\supportcustomer.py create_customer_activity_servicer)      s     
 }}22TUU,.,? (0(9n%&11-@"6#5#56e'4U';m$2M-4PQ ;Q?s)    C	A<B  C	 
C*CCC	
account_idtype_filterskiplimitc                   #     U[            nU S[        [        5      0S.nU(       a  U[        ;  a  [        S5      eXS'   UR	                  U5      R                  U5      R                  U5      R                  SS5      n/ nU  Sh  vN n	[        U	S   5      U	S'   U	S   U	S	'   UR                  U	5        M5   N0
 U$ ! [         a  n
[        R                  S
U
5        e Sn
A
ff = f7f)zz
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'   s              r(    list_customer_activities_servicer8   %   s     
,.,?)E4@V;W3XY"88 !TUU'&M&++E277=CCEJOOP^`bc
 	##SZCJ!$UCc"	#  <a@sM   C'B B> B;B9	B;-B> 9B;;B> =C'>
C$CC$$C'r   c                 4  #     U[            nUR                  S[        U 5      05      nU(       a=  UR                  S5      [        ;  a  [        S5      e[        US   5      US'   US   US'   U$ ! [         a  n[        R                  SX5        e SnAff = f7f)z8
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'   s        r(   get_customer_activity_servicer>   <   s     ,.,?(115/+:V2WX||F#+AA !EFF!(5/2HUO&.uoH]# @+Qs)   BA*A/ .B/
B9BBBactivity_updatec                   #     U[            nUR                  SS9nUR                  S[        U 5      0SU05      nUR                  S:X  a  gUR                  S[        U 5      05      nU(       a=  UR                  S5      [        ;  a  [        S5      e[        US   5      US'   US   US	'   U$ ! [         a  n[        R                  S
X5        e SnAff = f7f)z/
Update an existing customer support activity.
T)exclude_unsetr   z$setr   Nr   r:   r   z'Error updating customer activity %s: %s)r   r   
update_oner	   matched_countr;   r<   r   r   r   r"   r    r#   )r   r?   r   r$   update_datar&   r   r'   s           r(    update_customer_activity_servicerE   M   s     ,.,?%***>&115/+:V2WZ`bmYno1$(115/+:V2WX||F#+AA !EFF!(5/2HUO&.uoH]# >Os6   CAB. CA!B. -C.
C8CCCc                 n  #     U[            nUR                  S[        U 5      05      nU(       d  gUR                  S5      [        ;  a  [        S5      eUR                  S[        U 5      05        [        US   5      US'   US   US'   U$ ! [         a  n[        R                  SX5        e SnAff = f7f)zC
Delete a customer support activity and return the deleted record.
r   Nr   r:   r   z'Error deleting customer activity %s: %s)r   r;   r	   r<   r   r   
delete_oner   r"   r    r#   r=   s        r(    delete_customer_activity_servicerH   b   s     ,.,?(115/+:V2WX<<'==ABB((%1M)NOhuo."*5/ >Os3   B5,B B5AB B5
B2B--B22B5)r   pymongo.collectionr   app.dbr   models.saas.supportmodelr   r   libraries.objectr	   typingr
   r   logging	getLogger__name__r    r   r   MongoDBr   r)   r   intr8   r>   rE   rH        r(   <module>rU      s?    )  T / ! 			8	$ ' O 5J PXP`P` ei (s RU ^a jm s{  tD  tD   IM  NR  IS .S h>N>N S[\`Sa " Nc iqiyiy   G  HL  M * AQAQ V^_cVd rT   