
    .iX                         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
m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 dlmZ  G d d      Zy)    N)List)load_workbook)func)schema)
TblUtilityUtilityBase)remove_external_linkssafe_load_workbook)CustomResponse)Session)JWTPayloadSchema)Messages)HTTPExceptionc                       e Zd ZdedefdZdej                  fdZde	fdZ
ddZdeej                     fd	Zd
e	fdZy)UtilityServicedbtokenc                      || _         || _        y )N)r   r   )selfr   r   s      ?/var/www/html/retail-simulation-api/app/api/utilitys/service.py__init__zUtilityService.__init__   s    
    requestc                    K   t        j                  |j                               }t        j                  || j
                         | j
                  j                          t        dt        j                        S w)N1statusmessage)
r   model_validate
model_dumpr   create_utilityr   commitr   r   UTILITY)r   r   created_utilitys      r   r!   zUtilityService.create_utility   sT     %44W5G5G5IJ!!/477;S(2B2BCCs   A9A;group_idc                    K   t        j                  || j                        }|st        dd      |D cg c]!  }t        j
                  j                  |      # c}S c c}w w)Ni  zGet group ID not found)status_codedetail)r   get_utilityr   r   r   UtilityResponser   )r   r%   new_get_utility	get_groups       r   r)   zUtilityService.get_utility   sX     $00477CC8PQQRabRaY&&55i@Rabbbs   4A$&AA$c                   K   | j                   j                  t        j                  t        j
                              j                  t        j                  dk(        j                         xs d}| j                   j                  t        j                  t        j
                              j                  t        j                  dk(        j                         xs d}d}d}t        ||      }t        |       |j                  |       |d   }||d<   |d   }||d<   |j                  |       |j                          t        d	|        ||d
S w)NzStore Formate Ar   zStore Formate Bz;uploaded_files/Simulation_Test_file_clean_final_output.xlsxz+files/Simulation_Test_file_clean_final.xlsxzAssu Sum Mod AI14zAssu Sum Mod Bu#   ✅ Excel updated successfully at: )totalAtotalB)r   queryr   sumr   cost_per_monthfilterstore_format_typescalarr
   r	   savecloseprint)r   total_atotal_bOUTPUT_PATH
EXCEL_PATHworkbooksheet_asheet_bs           r   get_total_costzUtilityService.get_total_cost    s9    ''--)B)B CDKKJLhLhl}L}~  F  F  H  M  LM''--)B)B CDKKJLhLhl}L}~  F  F  H  M  LMSB
%k:>h'k" +, +, k"3K=AB!W55s   EEc                 p  K   |D ]y  }t        j                  |j                               }|j                  t	        dt
        j                        c S t        j                  ||j                  | j                         { | j                  j                          t	        dt
        j                        S wNz-1r   r   )r   r   r    
utility_idr   r   UTILITY_NOTr   update_utilityr   r"   UTILITY_UPDATE)r   r   requpdated_utilitys       r   rF   zUtilityService.update_utility:   s     C)889IJO))1%T8;O;OPP%%o7Q7QSWSZSZ[	 
 	S(2I2IJJs   B4B6rD   c                    K   t        j                  || j                        }|st        dt        j
                        S t        dt        j                        S wrC   )r   delete_utilityr   r   r   rE   UTILITY_DELETE)r   rD   deleted_utilitys      r   rK   zUtilityService.delete_utilityC   sE     $33JH!x7K7KLLS(2I2IJJs   AAN)returnr   )__name__
__module____qualname__r   r   r   r   UtilityCreater!   intr)   rA   r   UtilityUpdaterF   rK    r   r   r   r      sd    ' )9 D6+?+? Dc c64K40D0D+E KKc Kr   r   )ostypingr   openpyxlr   
sqlalchemyr   app.api.utilitysr   app.models.main.utilityr   r   app.utils.common_utilsr	   r
   app.utils.schemas_utilsr   sqlalchemy.ormr   app.dependency.authanticationr   app.locale.messagesr   fastapir   r   rU   r   r   <module>rb      s5    	  "  # ; L 2 " : ( !9K 9Kr   