o
    N0i                     @   s4  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 d dlmZ d dlmZmZ d	Zd
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edefddZ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d eeef fd!d"Zd#d$ Zd%d& Zd'S )(    )HTTPException)CustomerCreateCustomerUpdateWorkforceAssign)str_to_objectid)datetime)ObjectId)OptionalDictAny)get_next_sequence_value_int)	ASCENDING
DESCENDING	customerscustomerc                    sP   |   }t |d< t |d< td||d< |t |}t|j|d< |S )Ncreated_dateupdated_datecustomer_id_id)dictr   utcnowr   COLLECTION_NAME
insert_onestrinserted_id)r   dbdataresult r   >/var/www/html/moveengine/app/v1/services/platform/customers.pycreate_customer_service   s   r    
account_idc                    sT   t d |t dt| i}|stdddt|d |d< t|d |d< |S )NzCOming get_customer_servicer     Customer not foundstatus_codedetailr!   id)printr   find_oner   r   r   r!   r   r   r   r   r   get_customer_service   s   r+   updatec                    sT   dd |j dd D }t |d< |t dt| id|i t| |I d H S )Nc                 S   s   i | ]\}}||qS r   r   ).0kvr   r   r   
<dictcomp>!   s    z+update_customer_service.<locals>.<dictcomp>T)exclude_unsetr   r   z$set)r   itemsr   r   r   
update_oner   r+   )r!   r,   r   update_dictr   r   r   update_customer_service    s
   r5   c                    s2   t | |I d H }|t dt| iI d H  |S )Nr   )r+   r   
delete_oner   r*   r   r   r   delete_customer_service&   s   r7   skiplimitc                    sj   |t   | |}g }|2 z3 d H W }t|d |d< || q6 |t  i I d H }||dS )Nr   r!   total_countusers)r   findr8   r9   r   appendcount_documents)r8   r9   r   cursorr   custtotalr   r   r   list_customers_service+   s   
rC   qcustomer_type	from_dateto_datesort_by
sort_ordercurrent_userreturnc                 C   sb  |
 ddvrtddd|	t }i }|r*|dd}d|id	|id
|id|ig|d< |r0||d< |r6||d< |s:|rNi |d< |rF||d d< |rN||d d< dd	d
ddddd}| |d}|dkrdtnt}||||| |}g }|D ]-}t	|d |d< |
dd  | dt  |d< | dt  |d< || qy||}||dS )Nroles)      d   i  z Not permitted to view customers.r$   i)z$regexz$options
first_name	last_nameemailphonez$orrE   r!   r   z$gtez$ltezaddress.street)rQ   rR   rS   rT   addressrE   r   ascr   r'   r   r:   )getr   r   r   r   r=   sortr8   r9   r   popr   r   	isoformatr>   r?   )r8   r9   rD   rE   r!   rF   rG   rH   rI   r   rJ   
collectionqueryregex_queryallowed_sort_fields
sort_fieldsort_directionr@   r   r   r;   r   r   r   get_customers_service4   sR   



ra   c                 C   P   | j }| j}|t dt|idd|ii}|jdkr!tddddd	||d
S )Nr   	$addToSetfavourite_workforcer   r"   r#   r$   Tz&Favourite workforce saved successfullystatusmessager   workforce_idr   rh   r   r3   r   matched_countr   payloadr   r   rh   r   r   r   r   add_favourite_workforce_servicey      


rm   c                 C   rb   )Nr   rc   restricted_workforcer   r"   r#   r$   Tz'Restricted workforce saved successfullyre   ri   rk   r   r   r    add_restricted_workforce_service   rn   rp   N) fastapir    app.v1.models.platform.customersr   r   r   app.v1.libraries.objectr   r   bsonr   typingr	   r
   r   app.v1.services.sequencer   pymongor   r   r   r    r   r+   r5   r7   intrC   r   ra   rm   rp   r   r   r   r   <module>   sN    			

E