o
    Uhu                  
   @   s:  d Z ddlZddlmZmZ ddlmZmZm	Z	m
Z
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mZmZmZmZmZ e Zej ddddedeeeef deeeef fddZ!ej"dedeeeefde#dedefddZ$ej"deddeeeefde#dedefddZ%ej&dddeeeefdededefdd Z'ej"d!e(e ddeeeefde#dedefd"d#Z)ej*d$ddeeeefde#dedefd%d&Z+e d'e	d(eefd)edefd*d+Z,ej"d,ee deefd-e-defd.d/Z.dS )0z
Catchment.    N)	AnnotatedList)	APIRouterDependsFileHTTPException
UploadFile)Session)service)get_db)JWTPayloadSchemaget_current_student)TblMainData   )GetPotentialResponseMainDataCreateMainDataResponseTotalPotentialResponseUpdatePotentialcatchmentPotentialCreatcatchmentPotentialResponsez/catchment_creatT)response_model_exclude_nonerequestdbtokenc                       t ||| I d H S N)r
   Catchment_Potentialcreate_catchment_potentialr   r   r    r    =/var/www/html/RetailAPI/app/api/catchment_potential/router.pycreate_catchment      r"   z//catchment_potential/{group_id}/total_potential)response_modelgroup_idc                    r   r   )r
   r   get_total_consumption_by_groupr%   r   r   r    r    r!   r&      r#   r&   z/catchment/{catch_id})r$   r   catch_idc                    r   r   )r
   r   get_catchmentr(   r   r   r    r    r!   get_simulation   r#   r+   z/catchment/updatec                    r   r   )r
   r   update_catchmentr   r    r    r!   update_segment   r#   r-   z%/catchment_potential/group/{group_id}c                    r   r   )r
   r    get_catchment_poteneial_by_groupr'   r    r    r!   get_customer_locations_by_group   r#   r/   z/catchment/delete/{catch_id}c                    r   r   )r
   r   delete_catchmentr*   r    r    r!   r0   #   r#   r0   z/upload-main-data/.filec           
   	      s  t | j}dd |jD |_d*dd}g }| D ]\}}td+i d||ddd||ddd||ddd	||d	d
||ddd||dd||dd||dd||dd||dd||dd||dd||dd||dd||dd||dd||d d!||d"d#||d$d%||d%d&||d&d'||d'}|| q|t	  |
  |D ]}td+i | }	||	 q|
  d(t| d)iS ),Nc                 S   s0   g | ]}|   d dddddqS ) _/-)striplowerreplace).0colr    r    r!   
<listcomp>,   s   0 z upload_excel.<locals>.<listcomp>c                 S   s&   || v rt | | s| ||S |S r   )pdisnullget)rowkeydefaultr    r    r!   safe_get/   s   &zupload_excel.<locals>.safe_getcategory_identifier format_typereference_retailerno_of_storesdescription!indicative_categories_descriptionno_of_cats_lno_of_cats_mno_of_cats_hindicative_sizeindicative_size_square_feetcapital_available)indicative_capital_available_rs_in_croresapprox_investment+approx_investment_per_store_in_rupees_lakhscomp_intensity_lcompetition_intensity_lcomp_intensity_mcompetition_intensity_mcomp_intensity_hcompetition_intensity_h
tech_inv_h#technology_investment_in_rs_lakhs_h
tech_inv_m#technology_investment_in_rs_lakhs_m
tech_inv_l#technology_investment_in_rs_lakhs_l
spillage_hspillage_factor_h
spillage_lspillage_factor_l
services_h
services_m
services_lmessagez records replaced successfullyr   r    )r<   
read_excelr1   columnsiterrowsr   appendqueryr   deletecommitdictaddlen)
r1   r   dfrB   main_data_listr3   r?   itemdatarecordr    r    r!   upload_excel'   sv   





	













rv   z/main-data/rE   c                 C   s.   | ttj| k }|stddd|S )Ni  z"No data found for this format type)status_codedetail)rk   r   filterrE   allr   )rE   r   resultsr    r    r!   get_main_data_by_format_type\   s   r|   )/__doc__pandasr<   typingr   r   fastapir   r   r   r   r   sqlalchemy.ormr	   app.api.catchment_potentialr
   app.database.main.mysqlr   app.dependency.authanticationr   r   app.models.main.main_datar   schemasr   r   r   r   r   r   r   catchment_potential_routerpostr"   r>   intr&   r+   putr-   listr/   rl   r0   rv   strr|   r    r    r    r!   <module>   s@    $0&&&&&"4