
    	,hW	                         d dl mZ d dlmZmZ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 d dlmZ  G d	 d
      Zy)    )HTTPException)NetworkPlanningCreateNetworkPlanningResponseNetworkPlanningUpdate)JWTPayloadSchema)Messages)NetworkPlanningBaseTblNetworkPlanning)calculate_total_store_counts#calculate_total_store_counts_update)Session)CustomResponsec                   L    e Zd ZdedefdZdefdZdefdZ	defdZ
defd	Zy
)NetworkPlanningServicedbtokenc                      || _         || _        y )N)r   r   )selfr   r   s      2/var/www/html/RetailAPI/app/api/network/service.py__init__zNetworkPlanningService.__init__   s    
    requestc                    K   t        |      }t        di |j                         |}t        j                  || j
                         | j
                  j                          t        dt        j                        S w)N1statusmessage )
r   r	   
model_dumpr
   creater   commitr   r   NETWORK_CREAT)r   r   store_countsnew_datas       r   create_network_planz*NetworkPlanningService.create_network_plan   s`     3G<&M););)=MM!!(DGG4S(2H2HIIs   A<A>group_idc                    K   t        j                  || j                        }|st        dt        j
                  d       S t        j                  |      }t        dd|      S w)Nz-1)r   r   data0Success)r
   get_by_group_idr   r   r   NETWORK_NOT_FOUNDr   model_validate)r   r&   networknetwork_datas       r   get_networkz"NetworkPlanningService.get_network   sT     $44XtwwG!x7Q7QX\]].==gFS),OOs   A"A$c                    K   | j                   j                  t              j                  t        j                  |k(        j                         }|D cg c]  }t        j                  |d       c}S c c}w w)NT)from_attributes)r   queryr
   filterr&   allr   r-   )r   r&   resultsrows       r   get_network_by_groupz+NetworkPlanningService.get_network_by_group   sc     77==!34;;<N<W<W[c<cdhhj]de]dVY'66sDQ]deees   AA:A52A:c                   K   |j                   }t        j                  || j                        }|st	        dt
        j                        |j                  d      }t        ||      }|j                  |       t        di |}t        j                  ||| j                         t        dt
        j                        S w)Ni  )status_codedetailT)exclude_unsetr   r   r   )
network_idr
   	get_by_idr   r   r   r,   r   r   updater	   r   NETWORK_UPDATE)r   r   r=   existing_planupdate_datar#   updated_datas          r   update_network_planz*NetworkPlanningService.update_network_plan!   s     ''
*44ZIC8R8RSS((t(<:;V<(*9[9!!*lDGGDS(2I2IJJs   C CN)__name__
__module____qualname__r   r   r   r   r%   intr0   r8   r   rD   r   r   r   r   r   
   sP    7 +; J1F JP# Pf3 f
K1F 
Kr   r   N)fastapir   app.api.network.schemasr   r   r   app.dependency.authanticationr   app.locale.messagesr   app.models.main.network_planr	   r
   app.utils.common_utilsr   r   sqlalchemy.ormr   app.utils.schemas_utilsr   r   r   r   r   <module>rQ      s,    ! i i : ( P d " 2!K !Kr   