o
    b-h]                     @   s  d dl mZmZmZmZ d dlmZ d dlmZ d dl	m
Z
mZ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mZmZ e Zejd
e
deejfde
dejfddZejd
edd ddddeejeefde de dee! dee! dee! dejdefddZ"ejde
deejfde!dejfddZ#ejde
deejeefde!de
dedejdef
dd Z$ej%de
deejfde!dejfd!d"Z&ejd#edd ddddddddd$eejeefde!de de dee! dee! d%ee! d&ee' d'ee! d(ee! d)ee! d*ee! dejdefd+d,Z(ej)de
deejeefde!d-e
dejfd.d/Z*ej)d0edeejeefde!d-edejfd1d2Z+dS )3    )	APIRouterHTTPExceptionDependsRequest)Optional)database)PricingRulePricingRulesPricingRuleStatusUpdate)User)get_current_userdetails)pricingrules   )get_users_serviceupdate_account_servicedelete_account_serviceupdate_pricingrules_serviceupdate_record_status/)response_modelaccountdbc              
   C   sf   zt d t| |}|W S  ty! } ztdt|dd }~w ty2 } ztdddd }~ww )NzPRICING CREATE ACCOUTNT 26  status_codedetail  Internal server error)printaccount_servicecreate_account_service
ValueErrorr   str	Exception)r   r   created_accountvee r'   @/var/www/html/moveengine/app/v1/routers/platform/pricingrules.pycreate_account   s   r)   
   Nskiplimitqaccount_typestatuscurrent_userc           	   
   C   sJ   zt d t| ||||||}|W S  ty$ } ztdddd }~ww )Nzget_accountsget_accounts 35r   r   r   )r   r   get_accounts_servicer#   r   )	r+   r,   r-   r.   r/   r   r0   resultr&   r'   r'   r(   get_accounts#   s   r3   z/{account_id}
account_idc              
   C   s^   zt d t| |}|d u rtddd|W S  ty. } ztddt| dd }~ww )Nzget_accountget_account 47  PricingRule not foundr   r   zError retrieving PricingRule: )r   r   get_account_servicer   r#   r"   )r4   r   r   r&   r'   r'   r(   get_account5   s   r8   requestc              
   C   sf   t d zt d t| |||}|W S  ty! } z|d }~w ty2 } ztdddd }~ww )NzJupdate_accountupdate_account 656666666666666666666666666666666666666666666zupdate_accountupdate_account 65r   r   r   )r   r   r   r   r#   )r4   r   r9   r   r0   updated_accounther&   r'   r'   r(   update_accountD   s   r<   c              
   C   s^   t d zt| |}|d u rtddd|W S  ty. } ztddt| dd }~ww )Nzdelete_accountdelete_account 79r5   Pricing Rule not foundr   r   zError deleting PricingRule: )r   r   r   r   r#   r"   )r4   r   deleted_accountr&   r'   r'   r(   delete_accountV   s   r?   z/list/{account_id}/ascpricing_type	is_activecreated_date_fromcreated_date_tosort_by
sort_orderc                 C   s(   t d t| |||||||||	|
||S )z8
    Returns a list of users for the given account.
    zlistlistlistlist 1022222)r   r   )r4   r+   r,   r-   r/   rA   rB   rC   rD   rE   rF   r   r0   r'   r'   r(   	get_usersd   s    rG   role_updatec              
      s   | dddkr| dddkr| ddstddd	ztd
 t|  t| ||I dH }|s7tddd	|W S  tyM } ztdt|d	d}~ww )z"
    Update an existing role.
    rolesr      d   is_account_adminF  Not authorized to update rolesr   3account_idaccount_idaccount_idaccount_id11112222555Nr5   r=   r   )getr   r   r   r#   r"   r4   rH   r   r0   updated_roler&   r'   r'   r(   update_pricingrulesz   s   ,
rS   z/{account_id}/update-statusc              
      s   | dddkr| ddstdddztd	| t|  t| ||I d H }|s0td
dd|W S  tyF } ztdt|dd }~ww )NrI   r   rJ   rL   FrM   rN   r   5account_idaccount_idaccount_idaccount_id11112222555ssr5   r6   r   )rP   r   r   r   r#   r"   rQ   r'   r'   r(   update_pricingrules_status   s   
rU   ),fastapir   r   r   r   typingr   app.dbr   #app.v1.models.platform.pricingrulesr   r	   r
   app.v1.models.saas.usersmodelr   app.v1.dependencies.authr   app.v1.services.platformr   r   services.platform.pricingrulesr   r   r   r   r   routerpostget_mongo_dbMongoDBr)   rP   intr"   r3   r8   r<   deleter?   boolrG   putrS   rU   r'   r'   r'   r(   <module>   s    		
