o
    *i!                     @   s"  d dl 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	 d dl
mZ d dlmZ d d	lmZmZ d d
lmZmZ dZdedefddZ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fddZdedefddZdededefdd Zdedefd!d"ZdS )#    N)datetime)ObjectId)	InvalidId)DuplicateKeyError)HTTPException)Optional)get_next_sequence_value_int)
VendorBaseVendorUpdate)	ASCENDING
DESCENDINGvendorsvendor_datareturnc              
   C   s   |t  }dD ]}|| v r| | dv rd | |< qz?t }|| d< || d< d| d< td|| d< || }t|j| d< t|j| d	< | d  | d< | d  | d< d
| iW S  tyc   t	ddd t
yy } zt	ddt| dd }~ww )N)tax_idwebsitelogo) Ncreated_dateupdated_dateactivestatusv_id_id	vendor_idr     zVendor creation failedstatus_codedetaili  zServer error: )COLLECTION_NAMEr   utcnowr   
insert_onestrinserted_id	isoformatr   r   	Exception)r   dbvendors_collectionfieldcurrent_timeresulte r,   </var/www/html/moveengine/app/v1/services/platform/vendors.pycreate_vendor_service6   s.   

r.   
account_idskiplimitqvendor_typer   created_date_fromcreated_date_tosort_by
sort_orderc              	   C   s  |
t  }i }| dkr| |d< |r%|dd}d|id|id|id|ig|d	< |r+||d
< |r1||d< |s5|rOi }|rAt|d|d< |rKt|d|d< ||d< ddd
dddddd}||d}|	dkrftnt}|||||	|}t
|}g }|D ];}t|d |d< t|d |d< |dd |dd dD ]}||v rt|| tr||  ||< q|| q||}||dS )Nallr/   i)z$regexz$optionsvendor_namecontact_person_nameemailphonez$orr3   r   z%Y-%m-%dz$gtez$lter   r   )idr:   r3   r;   r=   r<   r   r   ascr   r   user_idr   r   )total_countr   )r   r   strptimegetr   r   findsortr0   r1   listr"   
setdefault
isinstancer$   appendcount_documents)r/   r0   r1   r2   r3   r   r4   r5   r6   r7   r&   r'   queryregex_query
date_querysort_fields
sort_fieldsort_dirvendors_cursorr   formatted_vendorsvendorr(   rB   r,   r,   r-   get_vendors_serviceU   s`   



rU   r   c                 C   s   zt | }W n ty   tdddw |t d|i}|s%tdddt|d |d< t|d |d< |dd	 |d
d	 dD ]}||v rXt|| trX|| 	 ||< qC|S Nr   Invalid vendor IDr   r     Vendor not foundr   r/   r   r@   rA   )
r   r   r   r   find_oner"   rH   rI   r   r$   )r   r&   vendor_object_idrT   r(   r,   r,   r-   read_vendor_service   s"   r\   c           
      C   s  |t  }zt| }W n ty   tdddw |d|i}|s'tddddd |  D }t |d	< |	d|id
|i}|j
dkrMtddd|d|i}t|d |d< t|d |d< |dd |dd dD ]}	|	|v rt||	 tr||	  ||	< qr|S )Nr   rW   r   r   rX   rY   c                 S   s   i | ]\}}|d ur||qS )Nr,   ).0kvr,   r,   r-   
<dictcomp>   s    z)update_vendor_service.<locals>.<dictcomp>r   z$setr   r   r/   r   r@   rA   )r   r   r   r   rZ   
model_dumpitemsr   r    
update_onematched_countr"   rH   rI   r$   )
r   r   r&   r'   r[   existing_vendorupdate_datar*   updated_vendorr(   r,   r,   r-   update_vendor_service   s6   
rh   c                 C   s   |t  }zt| }W n ty   tdddw |d|i}|s'tddd|d|i t|d |d< t|d |d< |dd	 |d
d	 dD ]}||v rat|| t	ra|| 
 ||< qL|S rV   )r   r   r   r   rZ   
delete_oner"   rH   rI   r   r$   )r   r&   r'   r[   rT   r(   r,   r,   r-   delete_vendor_service   s&   rj   )jsonr   bsonr   bson.errorsr   pymongo.errorsr   fastapir   typingr   app.v1.services.sequencer   #app.v1.models.platform.vendormodelsr	   r
   pymongor   r   r   dictr.   r"   intrU   r\   rh   rj   r,   r,   r,   r-   <module>   sL    &	

M#