
    .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 d d	lmZmZ d d
lmZ d dlmZ  G d d      Zy)    N)List)load_workbook)Session)HTTPException)schema)CentralisedAndDirectBaseTblCentralisedAndDirect)JWTPayloadSchema)remove_external_linkssafe_load_workbook)CustomResponse)Messagesc                   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)CentralisedAndDirectServicedbtokenc                      || _         || _        y )N)r   r   )selfr   r   s      M/var/www/html/retail-simulation-api/app/api/centralised_and_direct/service.py__init__z$CentralisedAndDirectService.__init__   s    
    requestc                   K   |j                   dk(  rP|j                  st        dd      t        j                  |j                  | j
                  |j                         }nl|j                   dk(  rP|j                  st        dd      t        j                  |j                  | j
                  |j                         }nt        dd	      | j
                  j                          | j
                  j                  |       d
}d}t        ||      }t        |       |j                  |       |d   }|j                  |d<   |j                  |d<   |d   }|j                  |d<   |j                  |d<   |d   }|j                  |d<   |d   }	|j                  |	d<   |d   }
|j                   |
d<   |d   }|j"                  |d<   |d   }|j$                  |d<   |d   }|j&                  |d<   |d   }|j(                  |d<   |d   }|j                  |d<   |d   }|j                  |d<   |j                  |       |j+                          t-        d|       t/        dt0        j2                        S w)Nz"Centralised Warehouse Distributioni  zCentralised data requiredstatus_codedetail)datar   distribution_typez"Direct Store Delivery DistributionzDirect data requiredi  zInvalid distribution type;uploaded_files/Simulation_Test_file_clean_final_output.xlsx+files/Simulation_Test_file_clean_final.xlsxAssu Sum Mod AK13K29Assu Sum Mod BWarehouse (Direct Store)B7C7Warehouse (Central)B6B8C8D10D11B13C13"   ✅ Excel updated successfully at:1statusmessage)r   centralisedr   r	   create_centralised_and_directr   directcommitrefreshr   r   saveemployee_cost_per_headnumber_of_employees"employees_in_charge_at_store_levelsalary_of_each_employee0expected_number_of_warehouse_increase_every_yearexpected_number_of_warehouserental_expensesutilities_costtransportation_costcloseprintr   r   CENTRALISED_AND_DIRECT)r   r   new_dataOUTPUT_PATH
EXCEL_PATHworkbooksheet_asheet_bsheet_csheet_dsheet_esheet_fsheet_gsheet_hsheet_isheet_jsheet_ks                    r   r6   z9CentralisedAndDirectService.create_centralised_and_direct   sl    $$(LL&&#<WXX.LL((77")";";H &&*NN>>#<RSS.LL^^77")";";H  C8STT!SB
%k:>h'k" +,!88!55+,!88!5556 CC56 8801 QQ01 ==01 0001!0001!5501!5501!88k"2K@S(2Q2QRRs   I/I1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Centralised is not foundr   )r	   get_centralised_and_directr   r   r   CentralisedAndDirectResponsemodel_validate)r   rV   new_get_centralised_and_direct	get_groups       r   rX   z6CentralisedAndDirectService.get_centralised_and_direct[   sv     -D-_-_`hjnjqjq-r*1#<VWW dB  C  dBV_F77FFyQ  dB  C  C  Cs   4A$&AA$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   }j                  |d<   |j                  |d<   |d   }|j                  |d<   |j                  |d<   |d	   }	|j                   |	d
<   |d	   }
|j"                  |
d<   |d   }|j$                  |d<   |d   }|j&                  |d<   |d   }|j(                  |d<   |d   }|j*                  |d<   |d   }|j,                  |d<   |d   }|j                  |d<   |d   }|j                  |d<   |j                  |       |j/                          t1        d|       t	        dt
        j2                        S w)N-1r2   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   )r   rZ   
model_dumpcentralised_direct_idr   r   CENTRALISED_AND_DIRECT_NOTr	   update_centralised_and_directr   r8   r   r   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   CENTRALISED_AND_DIRECT_UPDATE)r   r   requpdated_centralised_and_directrH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   s                     r   rb   z9CentralisedAndDirectService.update_centralised_and_directa   s*    C-E-T-TUXUcUcUe-f*-CCK%T8;^;^__#AAB`BvBv  yW  Y]  Y`  Y`  a	 
 	SB
%k:>h'k" +,7NN7KK+,7NN7KK566YY566NN016gg016SS016FF017FF017KK017KK017NNk"2K@S(2X2XYYs   HH	r`   c                    K   t        j                  || j                        }|st        dt        j
                        S t        dt        j                        S w)Nr^   r2   r1   )r	   delete_centralised_and_directr   r   r   ra   CENTRALISED_AND_DIRECT_DELETE)r   r`   deleted_centralised_and_directs      r   rg   z9CentralisedAndDirectService.delete_centralised_and_direct   sJ     )@)^)^_tvzv}v})~&-!x7Z7Z[[S(2X2XYYs   AAN)__name__
__module____qualname__r   r
   r   r   DistributionCreater6   intrX   r   rY   rb   rg    r   r   r   r      sc    7 +; ES6;T;T ESPC C4Z$v?b?b:c 4ZlZ Zr   r   )ostypingr   openpyxlr   sqlalchemy.ormr   fastapir   app.api.centralised_and_directr   &app.models.main.centralised_and_directr   r	   app.dependency.authanticationr
   app.utils.common_utilsr   r   app.utils.schemas_utilsr   app.locale.messagesr   r   ro   r   r   <module>r{      s4    	  " " ! 1 d : L 2 (MZ MZr   