
    .iF                         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 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)    )List)HTTPException)Session)func)schema)JWTPayloadSchema)Messages)ElectricalCablingBaseTblElectricalCabling)TblStoreFormat)CustomResponsec                       e Zd ZdedefdZdeej                     fdZ	de
fdZde
dd	fd
Zdeej                     fdZde
fdZy)ElectricalCablingServicedbtokenc                      || _         || _        y )N)r   r   )selfr   r   s      I/var/www/html/retail-simulation-api/app/api/electrical_cabling/service.py__init__z!ElectricalCablingService.__init__   s    
    requestc                   K   g }|D ]  }| j                   j                  t              j                  t        j                  |j                  k(        j                         }|t        dd|j                         |j                  }|j                  dk(  r|j                  |j                  z  }nv|j                  dv r|j                  |z  }nX|j                  dk(  r|j                  |j                  z  }n/|j                  dk(  r|j                  |z  }nt        dd|       |j                         }t        |      |d	<   t!        j"                  |      }t%        j&                  || j                         }	|j)                  |	        | j                   j+                          t-        d
t.        j0                        S w)Ni  z"store_size not found for group_id status_codedetailHVAC)LightingCablingz
Unit PricezRate per SQFTz)Unknown feature_type or choice for item: total1statusmessage)r   queryr   filtergroup_idfirstr   
store_sizefeature_typenumber_tonnes	cost_unitchoicehavs_rate_unit	rate_unit
model_dumpfloatr
   model_validater   create_electrical_cablingappendcommitr   r	   ELECTRICAL_CABLING)
r   r   created_electrical_cablingitemrowr(   r   request_datadatasales
             r   r2   z2ElectricalCablingService.create_electrical_cabling&   s    %'"Dn-//4==@A  {# #?O 
 J  F***T^^;""&==3,)<)<</3 $ #FtfM   ??,L$)%LL!(77ED'AA$PD&--d3K N 	S(2M2MNNs   GGr&   c                    K   t        j                  || j                        }|st        dd      |D cg c]!  }t        j
                  j                  |      # c}S c c}w w)N  zGet group ID not foundr   )r   get_electrical_cablingr   r   r   ElectricalCablingResponser1   )r   r&   new_get_electrical_cabling	get_groups       r   get_electrical_cabling1z0ElectricalCablingService.get_electrical_cabling1   s]     %9%P%PQY[_[b[b%c")C8PQQ\vw\vy00??	J\vwwws   4A$&AA$returnr   c                   K   | j                   j                  t        j                  t        j                  t        j                  t        j                        j                  d            j                  t        j                  |k(        j                  t        j                  t        j                        j                         }|st        dd      |D cg c]!  }t        j                  j                  |      # c}S c c}w w)N	total_sumr=   zGet sum ID not foundr   )r   r$   r   r&   store_format_typer   sumr   labelr%   group_byallr   r   ElectricalCablingSumr1   )r   r&   new_get_sum_electricalget_sum_groups       r   get_sum_electricalz+ElectricalCablingService.get_sum_electrical   s     GGMM$--$66-334::;G
 V(11X=>X*335I5[5[\SU 	 &C8NOO_uv_um++::=I_uvvvs   CD&D?Dc                 p  K   |D ]y  }t        j                  |j                               }|j                  t	        dt
        j                        c S t        j                  |j                  || j                         { | j                  j                          t	        dt
        j                        S wNz-1r!   r    )r
   r1   r/   electrical_idr   r	   ELECTRICAL_CABLING_NOTr   update_electrical_cablingr   r4   ELECTRICAL_CABLING_UPDATE)r   r   requpdated_elecctrical_cablings       r   update_elecctrical_cablingz3ElectricalCablingService.update_elecctrical_cabling   s     C*?*N*Ns~~O_*`'*88@%T8;Z;Z[[ ::;V;d;d  gB  DH  DK  DK  L	 
 	S(2T2TUUs   B4B6rQ   c                    K   t        j                  || j                        }|st        dt        j
                        S t        dt        j                        S wrP   )r   delete_electrical_cablingr   r   r	   rR   ELECTRICAL_CABLING_DELETE)r   rQ   deleted_elecctrical_cablings      r   delete_elecctrical_cablingz3ElectricalCablingService.delete_elecctrical_cabling   sJ     &:&T&TUbdhdkdk&l#*!x7V7VWWS(2T2TUUs   AAN)__name__
__module____qualname__r   r   r   r   r   ElectricalCablingCreater2   intrB   rN   ElectricalCablingUpdaterW   r\    r   r   r   r      s|    ' )9 2-OtF<Z<Z7[ -OxxS xw w7M wVtF<Z<Z7[ VVS Vr   r   N)typingr   fastapir   sqlalchemy.ormr   
sqlalchemyr   app.api.electrical_cablingr   app.dependency.authanticationr   app.locale.messagesr	   "app.models.main.electrical_cablingr
   r   app.models.main.store_formater   app.utils.schemas_utilsr   r   rc   r   r   <module>rn      s1     ! "  - : ( Z 8 2XV XVr   