
    	,h                     |    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 d dlmZ  G d	 d
      Zy)    )func)schema)
TblUtilityUtilityBase)CustomResponse)Session)JWTPayloadSchema)Messages)HTTPExceptionc                   |    e Zd ZdedefdZdej                  fdZde	fdZ
ddZdej                  fd	Zde	fd
Zy)UtilityServicedbtokenc                      || _         || _        y N)r   r   )selfr   r   s      3/var/www/html/RetailAPI/app/api/utilitys/service.py__init__zUtilityService.__init__   s    
    requestc                    K   t        j                  |j                               }t        j                  || j
                         | j
                  j                          t        dt        j                        S w)N1statusmessage)
r   model_validate
model_dumpr   create_utilityr   commitr   r
   UTILITY)r   r   created_utilitys      r   r   zUtilityService.create_utility   sT     %44W5G5G5IJ!!/477;S(2B2BCCs   A9A;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_utilityr   r   r   UtilityResponser   )r   r"   new_get_utility	get_groups       r   r&   zUtilityService.get_utility   sX     $00477CC8PQQRabRaY&&55i@Rabbbs   4A$&AA$c                    K   | j                   j                  t        j                  t        j
                              j                         }|S wr   )r   queryr   sumr   cost_per_monthscalar)r   new_get_total_costs     r   get_total_costzUtilityService.get_total_cost   s7     "ggmmDHHZ5N5N,OPWWY	"	"s   AAc                 *  K   t        j                  |j                               }|j                  t	        dt
        j                        S t        j                  ||j                  | j                         t	        dt
        j                        S wNz-1r   r   )r   r   r   
utility_idr   r
   UTILITY_NOTr   update_utilityr   UTILITY_UPDATE)r   r   updated_utilitys      r   r5   zUtilityService.update_utility    sm     %44W5G5G5IJ%%-!x7K7KLL!!/?3M3MtwwWS(2I2IJJs   BBc                    K   t        j                  || j                        }|st        dt        j
                        S t        dt        j                        S wr2   )r   delete_utilityr   r   r
   r4   UTILITY_DELETE)r   r"   deleted_utilitys      r   r9   zUtilityService.delete_utility'   sE     $33HdggF!x7K7KLLS(2I2IJJs   AAN)returnr   )__name__
__module____qualname__r   r	   r   r   UtilityCreater   intr&   r0   UtilityUpdater5   r9    r   r   r   r   
   s_    ' )9 D6+?+? Dc c#K6+?+? KKC Kr   r   N)
sqlalchemyr   app.api.utilitysr   app.models.main.utilityr   r   app.utils.schemas_utilsr   sqlalchemy.ormr   app.dependency.authanticationr	   app.locale.messagesr
   fastapir   r   rC   r   r   <module>rL      s)     # ; 2 " : ( !!K !Kr   