
    .i                         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mZ d dlmZmZ d d	lmZ d d
lmZ d dlmZ  G d d      Zy)    N)List)load_workbook)Session)schema)JWTPayloadSchema)	SalesBaseTblSales)remove_external_linkssafe_load_workbook)CustomResponse)Messages)HTTPExceptionc                       e Zd ZdedefdZdeej                     fdZ	de
fdZde
d	d
fdZdeej                     fdZde
fdZy)SalesServicedbtokenc                      || _         || _        y )N)r   r   )selfr   r   s      </var/www/html/retail-simulation-api/app/api/sales/service.py__init__zSalesService.__init__   s    
    requestc                   K   g }|D ]3  }t        j                  || j                        }|j                  |       5 | j                  j	                          d}d}t        ||      }t        |       |j                  |       |d   }|d   }	|d   }
|d   }|j                  |d<   |j                  |	d<   |j                  dz  |
d	<   |j                  dz  |
d
<   t        |j                  xs d      }|dz  dz  |
d<   |j                  dz  |
d<   |j                  |       |j                          t        d|       t        dt         j"                        S w)N;uploaded_files/Simulation_Test_file_clean_final_output.xlsx+files/Simulation_Test_file_clean_final.xlsxAssu Sum Mod AAssu Sum Mod BAssu Sum Mod OnlineK10   G6G7r   順 G8G9"   ✅ Excel updated successfully at:1statusmessage)r	   create_salesr   appendcommitr   r
   savecogsaverage_traffic_expectednumber_of_transaction_per_monthfloataverage_transaction_valuecloseprintr   r   SALES)r   r   created_salesitemsaleOUTPUT_PATH
EXCEL_PATHworkbooksheet_asheet_bsheet_online	last_itemavg_vals                r   r,   zSalesService.create_sales   sP    D((tww7D  &  	SB
%k:>h'k" +,+, 56BK	""&??"DT&FFKT	;;@qA%lf4T&^^b0Tk"2K@S(..AAs   EEgroup_idc                    K   t        j                  || j                        }|st        dd      |D cg c]!  }t        j
                  j                  |      # c}S c c}w w)N  zGet group ID not foundstatus_codedetail)r	   	get_salesr   r   r   SalesResponsemodel_validate)r   rC   new_get_sales	get_groups       r   rI   zSalesService.get_sales9   sX      **8TWW=C8PQQP]^P]9$$33I>P]^^^s   4A$&AA$get_idreturnr	   c                 2  K   | j                   j                  t        j                  t        j                  z  j                  d            j                  t        j                  |k(        j                         }|st        dd      d|j                  iS w)NtablerE   zID not foundrF   total)r   queryr	   r4   r2   labelfiltersales_idfirstr   rQ   )r   rN   get_multiple_datas      r   get_multiplezSalesService.get_multiple?   s      GGMM33h6^6^^eefmn VH%%/0UW 	 !CGG*0011s   BBc                 :  K   |D ]y  }t        j                  |j                               }|j                  t	        dt
        j                        c S t        j                  |j                  || j                         { | j                  j                          d}d}t        ||      }t        |       |j                  |       |d   }|d   }|d   }	|d   }
|
j                  |d	<   |
j                  |d	<   |
j                  d
z  |	d<   |
j                   d
z  |	d<   t#        |
j$                  xs d      }|d
z  dz  |	d<   |
j                  d
z  |	d<   |j                  |       |j'                          t)        d|       t	        dt
        j*                        S w)N-1r)   r   r   r   r   r   r   r    r!   r"   r#   r   r$   r%   r&   r'   r(   )r   rK   
model_dumprV   r   r   	SALES_NOTr	   update_salesr   r.   r   r
   r/   r0   r1   r2   r3   r4   r5   r6   SALES_UPDATE)r   r   requpdated_salesr;   r<   r=   r>   r?   r@   rA   rB   s               r   r^   zSalesService.update_salesM   s{    C%44S^^5EFM%%-%T8;M;MNN!!-"8"8-Q	 
 	SB
%k:>h'k" +,+, 56BK	""&??"DT&FFKT	;;@qA%lf4T&^^b0Tk"2K@S(2G2GHHs   FFrV   c                    K   t        j                  || j                        }|st        dt        j
                        S t        dt        j                        S w)Nr[   r)   r(   )r	   delete_salesr   r   r   r]   SALES_DELETE)r   rV   deleted_saless      r   rc   zSalesService.delete_saless   sE      --h@!x7I7IJJS(2G2GHHs   AAN)__name__
__module____qualname__r   r   r   r   r   SalesCreater,   intrI   rY   SalesUpdater^   rc    r   r   r   r      sy    ' )9 %B$v/A/A*B %BN_s _2 2z 2$If.@.@)A $ILI# Ir   r   )ostypingr   openpyxlr   sqlalchemy.ormr   app.api.salesr   app.dependency.authanticationr   app.models.main.salesr   r	   app.utils.common_utilsr
   r   app.utils.schemas_utilsr   app.locale.messagesr   fastapir   r   rl   r   r   <module>rx      s4    	  " "   : 5 L 2 ( !jI jIr   