o
    Uh(                     @   sz   d Z ddlZddlZddlmZmZ ddlmZ ddlm	Z	m
Z
 ddlmZ ddlmZmZ ddlmZ G d	d
 d
ZdS )zBrand.    N)HTTPException
UploadFile)Session)BrandCreateBrandUpdate)JWTPayloadSchema)	BrandBaseTblBrand)CustomResponsec                   @   sp   e Zd Zd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	fddZde	fddZd	e	fddZdS )BrandServicedbtokenc                 C   s   || _ || _d S )N)r   r   )selfr   r    r   0/var/www/html/RetailAPI/app/api/brand/service.py__init__   s   
zBrandService.__init__
brand_databrand_imagec                    s   |s	t dddS |j}d| }t|d}t|j| W d    n1 s(w   Y  t|}t	|| j
 | j
  t ddd|id	S )
N0zBrand image is requiredstatusmessageuploads/wb1zBrand created successfully	image_urlr   r   data)r
   filenameopenshutilcopyfileobjfiler   model_validater	   creater   commit)r   r   r   image_filename
image_pathbuffercreate_datar   r   r   create_brand   s   


zBrandService.create_brandbrand_idc                    s   | j ttj|k }|stdddS |jd ur |j|_|jd ur)|j|_|r_|j	}d| }t
|d}t|j| W d    n1 sJw   Y  tj|jr\t|j ||_| j   | j | tddd|jid	S )
Nr   Brand not foundr   r   r   r   zBrand updated successfullyr   r   )r   queryr	   filterr+   firstr
   
brand_name	rationaler   r   r    r!   r"   ospathexistsr   remover%   refresh)r   r+   r   r   brandr&   r'   r(   r   r   r   update_brand    s(   



zBrandService.update_brandc                    2   | j ttj|k }|stddd|S )N  r,   status_codedetail)r   r-   r	   r.   r+   r/   r   )r   r+   r7   r   r   r   get_brand_by_id4   
   zBrandService.get_brand_by_idgroup_idc                    r9   )Nr:   zNo brands found for this groupr;   )r   r-   r	   r.   r@   allr   )r   r@   brandsr   r   r   get_brands_by_group_id:   r?   z#BrandService.get_brands_by_group_idc                    s,   t || j}|stdddS tdddS )Nz-1r,   r   r   zBrand deleted successfully)r	   deleter   r
   )r   r+   deletedr   r   r   delete_brandA   s
   zBrandService.delete_brandN)__name__
__module____qualname__r   r   r   r   r   r*   intr   r8   r>   rC   rF   r   r   r   r   r      s    r   )__doc__r2   r    fastapir   r   sqlalchemy.ormr   app.api.brand.schemasr   r   app.dependency.authanticationr   app.models.main.brandr   r	   app.utils.schemas_utilsr
   r   r   r   r   r   <module>   s    