
    H(i?                         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)func)Session)schema)JWTPayloadSchema)Messages)DisplayBoardBaseTblDisplayBoard)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)DisplayBoardServicedbtokenc                      || _         || _        y )N)r   r   )selfr   r   s      D/var/www/html/retail-simulation-api/app/api/display_board/service.py__init__zDisplayBoardService.__init__   s    
    requestc                   K   g }|D ]I  }| j                   j                  t        j                        j	                  t        j
                  |j
                  k(        j                         }|t        dd|j
                         |j                  }|j                  dk(  r|j                  |j                  z  }n9|j                  dk(  r||j                  z  }nt        dd|j                         |j                         }||d<   t        j                  |      }t        j                   || j                         }	|j#                  |	       L | j                   j%                          t'        dt(        j*                  	      S w)
Ni  z"store_size not found for group_id status_codedetailz
Unit PricezRate per SQFTzUnknown choice for item: total1statusmessage)r   queryr   
store_sizefiltergroup_idfirstr   choiceunitscost_per_unitrate_per_sq
model_dumpr
   model_validater   createappendcommitr   r	   DISPLAY_BOARD)
r   r   created_displayitemrowr"   r   request_datacreated_display_boardsales
             r   create_display_boardz(DisplayBoardService.create_display_board   sS    D n778//4==@A  {# #?O 
 J {{l*

T%7%77/"T%5%55 $ #6t{{mD 
  ??,L$)L!$4$C$CL$Q!"))*?ID""4(G J 	S(2H2HIIs   FF	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 Display Board ID not foundr   )r   get_by_display_board_datar   r   r   DisplayBoardResopnser+   )r   r$   new_get_display_board	get_groups       r   get_display_boardz%DisplayBoardService.get_display_boardg   s\      / I I(TXT[T[ \$C8XYYWlmWl)++::9EWlmmms   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_sumr8   zGet sum ID not foundr   )r   r!   r   r$   store_format_typer   sumr   labelr#   group_byallr   r   DisplayBoardSumr+   )r   r$   new_get_and_sum_display_boardget_and_sum_display_boards       r   rH   z-DisplayBoardService.get_and_sum_display_boardm   s     GGMM((11../55kB
 00H<=/22O4U4UV 	& -C8NOO sP  Q  sPUn&&556OP  sP  Q  	Q  Qs   CD&D?Dc                   K   |D ]  }|j                   |j                  z  }|j                         }||d<   t        j                  |      }|j
                  t        dt        j                        c S t        j                  |j
                  || j                          | j                  j                          t        dt        j                        S w)Nr   -1r   r   )sizer(   r*   r
   r+   display_board_idr   r	   DISPLAY_BOADR_UPDATE_NOTr   update_display_boardr   r.   !DISPLAY_BOADR_UPDATE_SUCCESSFULLY)r   r   reqr   r3   updated_display_boards         r   rN   z(DisplayBoardService.update_display_board|   s     CHHs000E>>+L$)L!$4$C$CL$Q!$55=%T8;\;\]]001F1W1WXmnrnunuv  	S(2\2\]]s   CCdisplay_board_delete_idc                    K   t        j                  || j                        }|st        dt        j
                        S t        dt        j                        S w)NrJ   r   r   )r   delete_display_boardr   r   r	   rM   DISPLAY_BOARD_DELETE)r   rR   deleted_display_boards      r   rT   z(DisplayBoardService.delete_display_board   sJ      / D DE\^b^e^e f$!x7X7XYYS(2O2OPPs   AAN)__name__
__module____qualname__r   r   r   r   r   DisplayBoardCreater6   intr=   rH   DisplayBoardUpdaterN   rT    r   r   r   r      s|    7 +; *J$v7P7P2Q *Jlns nQ Q?P Q
^$v7P7P2Q 
^Q# Qr   r   N)typingr   fastapir   
sqlalchemyr   sqlalchemy.ormr   app.api.display_boardr   app.dependency.authanticationr   app.locale.messagesr	   app.models.main.display_boardr
   r   app.models.main.store_formater   app.utils.schemas_utilsr   r   r]   r   r   <module>rh      s1     !  " ( : ( K 8 2@Q @Qr   