
    whv                         d dl mZ d dlmZ d dlmZ d dlmc mc 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  G d
 d      Zy)    )List)HTTPException)SessionN)JWTPayloadSchema)Messages)CatchmentPotentialBaseTblCatchmentPotential)3calculate_potential_number_of_household_consumption'fill_and_calculate_potential_households)CustomResponsec                       e Zd ZdedefdZdej                  fdZde	dej                  fdZde	fd	Zdeej                     fd
Zde	fdZde	fdZy)Catchment_Potentialdbtokenc                      || _         || _        y N)r   r   )selfr   r   s      J/var/www/html/retail-simulation-api/app/api/catchment_potential/service.py__init__zCatchment_Potential.__init__   s    
    requestc                   K   t        j                  |j                               }t        |      |_        t        j                  || j                         | j                  j                          t        dt        j                        S w)N1statusmessage)r   model_validate
model_dumpr
   potential_number_of_householdsr	   creater   commitr   r   CATCHMENT_POTENTIAL_CREAT)r   r   created_users      r   create_catchment_potentialz.Catchment_Potential.create_catchment_potential   sb     -<<W=O=O=QR6ijv6w3$$\477;S(2T2TUUs   B	Bgroup_idreturnc                 B  K   | j                   j                  t              j                  t        j                  |k(        j                         }|st        dt        j                        t        d |D              }t        j                  |t        |            S w)N  status_codedetailc              3   N   K   | ]  }|j                   |j                  z    y wr   )number_of_householdspercentage_of_segment).0locs     r   	<genexpr>zECatchment_Potential.get_total_consumption_by_group.<locals>.<genexpr>   s%     j`iY\ 8 83;T;T T`is   #%)r%   r   )r   queryr	   filterr%   allr   r   CATCHMENT_NOT_FOUNDsumschemasTotalPotentialResponseint)r   r%   	locationstotal_consumptions       r   get_total_consumption_by_groupz2Catchment_Potential.get_total_consumption_by_group   s|     WW]]#89@@AVA_A_ckAklppr	Cx7S7STTj`ijj--x_bct_uvvs   BBc                    K   t        j                  || j                        }|st        dt        j
                        |D cg c]!  }t        j                  j                  |      # c}S c c}w w)Nr(   r)   )	r	   	get_by_idr   r   r   r5   r7   GetPotentialResponser   )r   r%   	catchment	get_groups       r   get_catchmentz!Catchment_Potential.get_catchment   s]     )33HdggF	Cx7S7STTXabXa9,,;;IFXabbbs   AA2&A-*A2c                 l  K   |D ]w  }t        j                  |j                               }|j                  t	        dt
        j                        t        j                  |j                  || j                         y | j                  j                          t        dt
        j                        S wNr(   r)   r   r   )r   r   r   catch_idr   r   r5   r	   updater   r!   r   CATCHMENT_UPDATE)r   r   requpdateds       r   update_catchmentz$Catchment_Potential.update_catchment$   s     C,;;CNN<LMG'#H<X<XYY!(()9)97DGGL	 
 	S(2K2KLLs   B2B4c                   K   | j                   j                  t              j                  t        j                  |k(        j                         }|D cg c]!  }t        j                  j                  |      # c}S c c}w wr   )	r   r2   r	   r3   r%   r4   r7   catchmentPotentialResponser   )r   r%   r   r0   s       r    get_catchment_poteneial_by_groupz4Catchment_Potential.get_catchment_poteneial_by_group:   sf     #ww}}-BCJJK`KiKimuKuvzz|RefRe322AA#FRefffs   AB&A=:BrE   c                    K   t        j                  || j                        }|st        dt        j
                        t        dt        j                        S wrD   )r	   deleter   r   r   r5   r   CATCHMENT_DELETED)r   rE   deleteds      r   delete_catchmentz$Catchment_Potential.delete_catchment>   sE     '..xACx7S7STTS(2L2LMMs   AAN)__name__
__module____qualname__r   r   r   r7   catchmentPotentialCreatr$   r9   r8   r<   rB   r   UpdatePotentialrJ   rM   rR    r   r   r   r      s    7 +; V8W8W VwS wWEcEc wcC cMT'2I2I-J M,gs gNs Nr   r   )typingr   fastapir   sqlalchemy.ormr   #app.api.catchment_potential.schemasapicatchment_potentialr7   app.dependency.authanticationr   app.locale.messagesr   #app.models.main.catchment_potentialr   r	   app.utils.common_utilsr
   r   app.utils.schemas_utilsr   r   rX   r   r   <module>rd      s/     ! " 5 5 : ( \  27N 7Nr   