
    i0                         d dl Z d dlZd dlmZ d dlZd dlmZmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ dZh d	Zd
Z e j(                  ed        G d d      Zy)    N)FileResponse)
UploadFileHTTPException)Session)JWTPayloadSchema)TblGroup)
TblStudentuploads>   .jpg.png.svg.jpeg2   T)exist_okc                   `    e Zd ZdedefdZdefdZdedefdZ	defdZ
dedefd	Zdefd
Zy)CorporateStoreServicedbtokenc                      || _         || _        y )N)r   r   )selfr   r   s      F/var/www/html/retail-simulation-api/app/api/corporate_store/service.py__init__zCorporateStoreService.__init__   s    
    filec                     t         j                  j                  | j                        d   j	                         }|t
        vrt        dd| d      y )N     u   ❌ Unsupported file format: z'. Allowed formats: PNG, JPG, JPEG, SVG.status_codedetail)ospathsplitextfilenamelowerALLOWED_EXTENSIONSr   )r   exts     r   validate_filez#CorporateStoreService.validate_file   s]    ggt}}-a0668((C9VWZV[  \F  8G  H  H )r   group_idc                   K   t         j                  |       |j                          d {   }t        |      dz  }|t        kD  rt        dd|ddt         d      |j                  d       d {    |r\| j                  j                  t              j                  t        j                  |k(        j                         }|st        d	d
      t        | j                  dd       }|t        dd      | j                  j                  t              j                  t        j                   |k(        j                         }|r|j"                  st        d	d      |j"                  }|j$                  }|r4t&        j(                  j+                  |      rt'        j,                  |       t&        j(                  j/                  t0        |j2                        }	t5        |	d      5 }
t7        j8                  |j:                  |
       d d d        |	|_        | j                  j=                          | j                  j?                  |       d|j                  |	|j$                  dS 7 B7 # 1 sw Y   fxY ww)N   r      ❌ File size .2f MB exceeds maximum  MB.r   r     Group not found
student_idstudent_id missing in tokenGroup not assignedwbzFile uploaded successfully!messager)   r$   db_path) r   r(   readlenMAX_FILE_SIZE_MBr   seekr   queryr   filterr)   firstgetattrr   r	   r2   group0corporate_and_concept_level_organisational_chartr!   r"   existsremovejoin
UPLOAD_DIRr$   openshutilcopyfileobjr   commitrefreshr   r   r)   contentssize_mbrA   r2   studentold_file_path	save_pathbuffers              r   1upload_corporate_and_concept_level_organizationalzGCorporateStoreService.upload_corporate_and_concept_level_organizational   s    ++D1$h-;/%%'}4HIYHZZ^_  iil GGMM(+2283D3D3PQWWYE#<MNN \4@J!#<YZZggmmJ/66z7L7LPZ7Z[aacG'--#<PQQMME NNRWW^^M:IIm$ GGLLT]];	)T"ftyy&1 # BK> 5!MM	
 	
O % 	0 #"<   )I?I-AI?4I05E8I?-!I3A I?0I?3I<8I?c                    K   | j                   j                  t        j                        j	                  t        j
                  |k(        j                         }|r|d   sddiS |d   }||dS wNr   errorzNo image found for this group)r)   	image_url)r   r=   r   rB   r>   r)   r?   r   r)   resultrX   s       r   get_image_corporatez)CorporateStoreService.get_image_corporateN   sv     xXXY``aiararv~a~  F  F  HVAY<==1I	!# 	   A-A/c                   K   t         j                  |       |j                          d {   }t        |      dz  }|t        kD  rt        dd|ddt         d      |j                  d       d {    |r\| j                  j                  t              j                  t        j                  |k(        j                         }|st        d	d
      t        | j                  dd       }|t        dd      | j                  j                  t              j                  t        j                   |k(        j                         }|r|j"                  st        d	d      |j"                  }|j$                  }|r4t&        j(                  j+                  |      rt'        j,                  |       t&        j(                  j/                  t0        |j2                        }	t5        |	d      5 }
t7        j8                  |j:                  |
       d d d        |	|_        | j                  j=                          | j                  j?                  |       d|j                  |	|j$                  dS 7 B7 # 1 sw Y   fxY ww)Nr+   r   r,   r-   r.   r/   r   r   r0   r1   r2   r3   r4   r5   z1File uploaded and old file replaced successfully!r6   ) r   r(   r9   r:   r;   r   r<   r   r=   r   r>   r)   r?   r@   r   r	   r2   rA    store_level_organisational_chartr!   r"   rC   rD   rE   rF   r$   rG   rH   rI   r   rJ   rK   rL   s              r   %upload_store_level_organization_chartz;CorporateStoreService.upload_store_level_organization_chart[   s    ++D1$h-;/%%'}4HIYHZZ^_  iil GGMM(+2283D3D3PQWWYE#<MNN \4@J!#<YZZggmmJ/66z7L7LPZ7Z[aacG'--#<PQQMME >>RWW^^M:IIm$ GGLLT]];	)T"ftyy&1 # 2;. K!==	
 	
O % 	0 #"rT   c                    K   | j                   j                  t        j                        j	                  t        j
                  |k(        j                         }|r|d   sddiS |d   }||dS wrV   )r   r=   r   r^   r>   r)   r?   rY   s       r   get_image_store_levelz+CorporateStoreService.get_image_store_level   sq     xHHIPP)

%' 	 VAY<==1I	!# 	r\   N)__name__
__module____qualname__r   r   r   r   r(   intrS   r[   r_   ra    r   r   r   r      sf    ' )9 HJ H
/
J /
be /
d	 	/

 /
UX /
dC r   r   )r!   rH   fastapi.responsesr   pandaspdfastapir   r   sqlalchemy.ormr   app.dependency.authanticationr   app.models.main.groupr   app.models.main.studentr	   rF   r&   r;   makedirsr   rf   r   r   <module>rp      sO    	  *  - " : * . 
6   J &I Ir   