
    .iz                         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 d dl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  G d d      Zy)    N)List)load_workbook)Session)schema)OptimisingAssetsBaseTblOptimisingAssets)TblRecoveryOfPromotional)TblShortNegotiationFinal)remove_external_linkssafe_load_workbook)CustomResponse)Messages)HTTPException)JWTPayloadSchemac                   z    e Zd ZdedefdZdej                  fdZde	fdZ
deej                     fdZd	e	fd
Zy)OptimisingAssetsServicedbtokenc                      || _         || _        y )N)r   r   )selfr   r   s      T/var/www/html/retail-simulation-api/app/api/optimising_assets_for_revenue/service.py__init__z OptimisingAssetsService.__init__   s    
    requestc                   K   t        j                  |j                               }t        j                  || j
                         | j
                  j                          | j
                  j                  t        j                        j                         }| j
                  j                  t        j                        j                         }| j
                  j                  t        j                        j                         }|r
|d   |d   nd}|r
|d   |d   nd}|r
|d   |d   nd}||z   |z   }	d}
d}t        |
|      }t        |       |j!                  |
       |d   }|	|d<   |d   }|	|d<   |j!                  |
       |j#                          t%        d|
       t'        dt(        j*                  	      S w)
Nr   ;uploaded_files/Simulation_Test_file_clean_final_output.xlsx+files/Simulation_Test_file_clean_final.xlsxAssu Sum Mod AI11Assu Sum Mod B"   ✅ Excel updated successfully at:1statusmessage)r   model_validate
model_dumpr   create_optimising_assetsr   commitqueryr	   what_percentagefirstr
   $negotiation_what_percentage_of_salespercentage_of_salesr   r   savecloseprintr   r   OPTIMISING_ASSETS)r   r   created_optimising_assetstest1test2test3add1add2add3totalOUTPUT_PATH
EXCEL_PATHworkbooksheet_asheet_bs                  r   r(   z0OptimisingAssetsService.create_optimising_assets"   s    $8$G$GHZHZH\$]!445NPTPWPWX6FFGMMO6[[\bbd1EEFLLN U1X%9uQxq U1X%9uQxq U1X%9uQxqtd"SB
%k:>h'k" +,+,k"2K@S(2L2LMMs   F=F?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_optimising_assetsr   r   r   OptimisingAssetsResponser&   )r   r@   new_get_optimising_assets	get_groups       r   rD   z-OptimisingAssetsService.get_optimising_assetsJ   s\     $7$M$MhX\X_X_$`!(C8PQQ[tu[ti//>>yI[tuuus   4A$&AA$c                   K   |D ]y  }t        j                  |j                               }|j                  t	        dt
        j                        c S t        j                  |j                  || j                         { | j                  j                          | j                  j                  t        j                        j                         }| j                  j                  t        j                         j                         }| j                  j                  t        j"                        j                         }|r
|d   |d   nd}|r
|d   |d   nd}|r
|d   |d   nd}	||z   |	z   }
d}d}t%        ||      }t'        |       |j)                  |       |d   }|
|d<   |d   }|
|d<   |j)                  |       |j+                          t-        d	|       t	        d
t
        j.                        S w)N-1r#   r   r   r   r   r   r    r!   r"   )r   r&   r'   optimising_idr   r   OPTIMISING_ASSETS_NOTr   update_optimising_assetsr   r)   r*   r	   r+   r,   r
   r-   r.   r   r   r/   r0   r1   OPTIMISING_ASSETS_UPDATE)r   r   requpdated_datar4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   s                   r   rL   z0OptimisingAssetsService.update_optimising_assetsP   s    C/>>s~~?OPL))1%T8;Y;YZZ88**L$''  	 6FFGMMO6[[\bbd1EEFLLN U1X%9uQxq U1X%9uQxq U1X%9uQxqtd"SB
%k:>h'k" +,+,k"2K@S(2S2STTs   G8G:rJ   c                    K   t        j                  || j                        }|st        dt        j
                        S t        dt        j                        S w)NrI   r#   r"   )r   delete_optimising_assetsr   r   r   rK   OPTIMISING_ASSETS_DELETE)r   rJ   deleted_optimising_assetss      r   rQ   z0OptimisingAssetsService.delete_optimising_assets   sJ     $7$P$PQ^`d`g`g$h!(!x7U7UVVS(2S2STTs   AAN)__name__
__module____qualname__r   r   r   r   OptimisingAssetsCreater(   intrD   r   OptimisingAssetsUpdaterL   rQ    r   r   r   r      sa    ' )9 $&NV5R5R &NPv3 v,Ud6;X;X6Y ,UbU3 Ur   r   )ostypingr   openpyxlr   sqlalchemy.ormr   %app.api.optimising_assets_for_revenuer   -app.models.main.optimising_assets_for_revenuer   r   'app.models.main.recovery_of_promotionalr	   'app.models.main.short_negotiation_finalr
   app.utils.common_utilsr   r   app.utils.schemas_utilsr   app.locale.messagesr   fastapir   app.dependency.authanticationr   r   rZ   r   r   <module>rh      s:    	  " " 8 c L L L 2 ( ! :vU vUr   