
    	,h7                         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)    )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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      >/var/www/html/RetailAPI/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catch_idc                    K   t        j                  || j                        }|st        dt        j
                        t        j                  j                  |      S w)Nr'   r(   )	r   	get_by_idr   r   r   r4   r6   GetPotentialResponser   )r   r<   	catchments      r   get_catchmentz!Catchment_Potential.get_catchment   sI     )33HdggF	Cx7S7STT++::9EEs   AAc                   K   |j                   t        dt        j                        t	        j
                  |j                   | j                        }|st        dt        j                        |j                  d      }t        ||      }t        di |}|j                   J t	        j                  |j                   || j                         t        dt        j                        S w)Nr'   r(   T)exclude_unsetr   r    )r<   r   r   CATCHMENT_ID_REQUIREDr   r>   r   r4   r   r
   r   updater   CATCHMENT_UPDATE)r   r   existingupdate_dataupdated_datavalidated_models         r   update_catchmentz$Catchment_Potential.update_catchment#   s     #C8V8VWW(2273C3CTWWMC8T8TUU((t(<>{HU0@<@''333$$_%=%=PTPWPWXS(2K2KLLs   C,C.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   r1   r   r2   r$   r3   r6   catchmentPotentialResponser   )r   r$   r   r/   s       r    get_catchment_poteneial_by_groupz4Catchment_Potential.get_catchment_poteneial_by_group0   sf     #ww}}-BCJJK`KiKimuKuvzz|RefRe322AA#FRefffs   AB&A=:Bc                    K   t        j                  || j                        }|st        dt        j
                        t        dt        j                        S w)Nr'   r(   r   r   )r   deleter   r   r   r4   r   CATCHMENT_DELETED)r   r<   deleteds      r   delete_catchmentz$Catchment_Potential.delete_catchment4   sE     '..xACx7S7STTS(2L2LMMs   AAN)__name__
__module____qualname__r   r   r   r6   catchmentPotentialCreatr#   r8   r7   r;   rA   UpdatePotentialrL   rO   rT   rD   r   r   r   r   
   s    7 +; V8W8W VwS wWEcEc wFC FMg.E.E Mgs gNs Nr   r   )fastapir   sqlalchemy.ormr   #app.api.catchment_potential.schemasapicatchment_potentialr6   app.dependency.authanticationr   app.locale.messagesr   #app.models.main.catchment_potentialr   r   app.utils.common_utilsr	   r
   app.utils.schemas_utilsr   r   rD   r   r   <module>rd      s,    ! " 5 5 : ( \  2.N .Nr   