o
    Ah                     @   s   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 d dl	m
Z
mZmZmZ d dlmZ d dlmZ d	Zd	Zd
e
dejdefddZdededededee dee dee dejdedefddZdedejdefddZdedededejdef
ddZdedejdefdd Zd!S )"    )datetime)DuplicateKeyError)database)
send_email)str_to_objectid)PartnerCreatePartnerUpdatePartnerPartners)User)Optionaluserspartnerdbreturnc              
   C   s   |   }t |d< |t }z||}W n$ ty9 } zdt|v r'tddt|v r1tdtdd }~ww d}d| j d	}t	||| j
 t|j|d
< |d
 |d< |S )Ncreated_dateemailz'Partner with this email already exists.mobilez/Partner with this mobile number already exists.zDuplicate key error.z#Your Organization has been created!zHello zQ,

Thank you for signing up for our platform. We're excited to have you on board!_id
partner_id)dictr   utcnowCOLLECTION_NAME
insert_oner   str
ValueErrornamer   r   inserted_id)r   r   partner_datapartners_collectionresultesubjectbody r$   9/var/www/html/moveengine/app/v1/services/saas/partners.pycreate_partner_service   s&   r&   skiplimitqpartner_typecreated_date_fromcreated_date_tostatuscurrent_userc	                 C   s|  |t  }	|dddkr|dddkrtdi }
|r+|dd}d|id	|ig|
d
< |r1||
d< |rH| dkr>d|
d< n
| dkrHd|
d< |sL|rfi }|rXt|d|d< |rbt|d|d< ||
d< d|
d< |	|
| |}g }|D ]:}t	|d |d< t	|d |d< |
d|dd |
dd d|v rt|d tr|d  |d< || qy|	|
}||dS )Nrolesr         zNot permitted to view partners.i)z$regexz$optionsr   r   z$orr*   activeT	is_activeinactiveFz%Y-%m-%dz$gtez$lter      r   idr   partner_name titler	   )total_countpartners)r   getr   lowerr   strptimefindr'   r(   r   
setdefault
isinstance	isoformatappendcount_documents)r'   r(   r)   r*   r+   r,   r-   r   r.   
collectionqueryregex_querydate_filterpartners_cursorpartners_listr   r;   r$   r$   r%   get_partners_service+   sH    



rL   r   c                 C   s>   |t  }|dt| i}|rt|d |d< |d |d< |S )Nr   r   )r   find_oner   r   r   r   rF   r   r$   r$   r%   get_partner_serviceg   s   rO   partner_updatec                 C   s
  |t  }|t }|dt| i}|std|d|d i}|s&tdt|d| kr3td|jdhd}|dd  |dd	krS|	dt| id
|i |j
|jd}	|	d|d id
|	i |dt| i}
|
rt|
d |
d< |
d |
d< |
S td)Nr   Partner not foundzUser not foundr   z%Not authorized to update this partneruser_id)excluder/   r6   z$set)r   r   zPartner not found after update)r   USER_COLLECTION_NAMErM   r   r   r   r=   r   pop
update_oner   r   )r   rP   r.   r   r   users_collectionexisting_partneruser_documentpartner_updatesuser_update_dataupdated_partnerr$   r$   r%   update_partner_serviceo   s,   r]   c                 C   sX   |t  }|dt| i}|std|dt| i t|d |d< |d |d< |S )Nr   rQ   r   )r   rM   r   r   
delete_oner   rN   r$   r$   r%   delete_partner_service   s   r_   N)r   pymongo.errorsr   app.dbr   app.v1.integrations.SMTPmailerr   app.v1.libraries.objectr   app.v1.models.saas.partnersr   r   r	   r
   app.v1.models.saas.usersmodelr   typingr   r   rT   MongoDBr   r&   intr   rL   rO   r]   r_   r$   r$   r$   r%   <module>   sZ    	

<
(