
    .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 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      Zy)    N)List)HTTPException)load_workbook)Session)schema)JWTPayloadSchema)Messages)RentExpensesBaseTblRentExpenses)TblStoreFormat)remove_external_linkssafe_load_workbook)CustomResponsec                       e Zd ZdedefdZdej                  fdZde	fdZ
de	d	d
fdZddZdeej                     fdZde	fdZy)RentExpensesServicedbtokenc                      || _         || _        y )N)r   r   )selfr   r   s      D/var/www/html/retail-simulation-api/app/api/rent_expenses/service.py__init__zRentExpensesService.__init__   s    
    requestc                 n  K   t        j                  |j                               }t        j                  || j
                         | j
                  j                          d}d}t        ||      }t        |       |j                  |       ddd}|j                         D ]G  \  }}|j                  |k(  s||   }	|j                  |	d<   |j                  |	d<   |j                  |	d<   I |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zStore Format AzStore Format BI12I23I24#   ✅ Excel updated successfully at: 1statusmessage)r
   model_validate
model_dumpr   create_rent_expensesr   commitr   r   saveitemsstore_format_typerent_per_monthrental_advance_amountrental_advance_periodcloseprintr   r	   RENT_EXPENSES)
r   r   created_rent_expensesOUTPUT_PATH
EXCEL_PATHworkbookformat_to_sheetformat_type
sheet_namesheets
             r   r*   z(RentExpensesService.create_rent_expenses   s     0 ? ?@R@R@T U,,-BDGGLSB
%k:>h'k" /.
 (7'<'<'>#K((K7 ,4CCe4JJe4JJe (? 	k"3K=ABS(2H2HIIs   B4D57A>D5rent_get_idc                    K   t        j                  || j                        }|st        dd      t        j
                  j                  |      S w)N  zGet Rent Expenses ID not foundstatus_codedetail)r   get_rent_expensesr   r   r   RentExpensesResponser(   )r   r=   new_get_rent_expensess      r   rC   z%RentExpensesService.get_rent_expenses>   sF      / A A+tww W$C8XYY**99:OPPs   AAgroup_idreturnr   c                 &  K   | j                   j                  t              j                  t        j                  |k(        j                         }|st        dd      |D cg c]!  }t        j                  j                  |      # c}S c c}w w)Nr?   zGet group ID not foundr@   )
r   queryr   filterrF   allr   r   rD   r(   )r   rF   new_get_group_rent_expenses	get_groups       r   get_group_rent_expensesz+RentExpensesService.get_group_rent_expensesD   su     &*ggmmO&D&K&KOLdLdhpLp&q&u&u&w#*C8PQQWrsWr)++::9EWrssss   A!B#&B	Bc                   K   | j                   j                  t        t              j	                  t        j
                  t        j
                  k(        j                         }|st        dd      |D ]  \  }}|j                  |_         | j                   j                          |D cg c]  \  }}|	 c}}S c c}}w w)Nr?   zData not foundr@   )
r   rI   r   r   rJ   rF   rK   r   
store_sizer+   )r   new_post_store_sizerent_expensestore_formatdata_s         r   post_store_sizez#RentExpensesService.post_store_size^   s     "ggmmONKRRSbSkSko}  pG  pG  TG  H  L  L  N"C8HII*=&L,&2&=&=L# +>$78$7q$7888s   B*C,B<8
C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}|j                         D ]G  \  }}	j                  |k(  s||	   }
j                   |
d<   |j"                  |
d	<   |j$                  |
d
<   I |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)   rent_idr   r	   RENT_EXPENSES_NOTr   update_rent_expensesr   r+   r   r   r,   r-   r.   r/   r0   r1   r2   r3   RENT_EXPENSES_UPDATE)r   r   requpdated_rent_expensesr6   r7   r8   r9   r:   r;   r<   s              r   r[   z(RentExpensesService.update_rent_expensesz   sK    C$4$C$CCNNDT$U!$,,4%T8;U;UVV001F1N1NPegkgngno	 
 	SB
%k:>h'k" /.
 (7'<'<'>#K$$3 ,4CCe4JJe4JJe (? 	k"3K=ABS(2O2OPPs   C/E02A>E0rY   c                    K   t        j                  || j                        }|st        dt        j
                        S t        dt        j                        S w)NrX   r%   r$   )r   delete_rent_expensesr   r   r	   rZ   RENT_EXPENSES_DELETE)r   rY   deleted_rent_expensess      r   r`   z(RentExpensesService.delete_rent_expenses   sF      / D DWdgg V$!x7Q7QRRS(2O2OPPs   AAN)rG   r   )__name__
__module____qualname__r   r   r   r   RentExpensesCreater*   intrC   rN   rV   r   RentExpensesUpdater[   r`    r   r   r   r      s}    ' )9 (J1J1J (JTQ# QtS t<M t498+Qf6O6O1P +QZQ Qr   r   )ostypingr   fastapir   openpyxlr   sqlalchemy.ormr   app.api.rent_expensesr   app.dependency.authanticationr   app.locale.messagesr	   app.models.main.rent_expensesr
   r   app.models.main.store_formater   app.utils.common_utilsr   r   app.utils.schemas_utilsr   r   ri   r   r   <module>rv      s7    	  ! " " ( : ( K 8 L 2\Q \Qr   