
    $i6                         d dl Z d dlmZ d dlZd dl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 d dlmZ  G d d      Zy)    N)List)HTTPException)schema)GrossMarginContributionCreate)JWTPayloadSchema)Messages)GrossMarginContributionBaseTblGrossMarginContribution)TblGroup)CustomResponse)Sessionc                       e Zd ZdedefdZde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ded	ee   fdZy)GrossMarginContributionServicedbtokenc                      || _         || _        y )N)r   r   )selfr   r   s      P/var/www/html/retail-simulation-api/app/api/gross_margin_contribution/service.py__init__z'GrossMarginContributionService.__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_gross_margin_contributionr   commitr   r   GROSS_MARGIN_CONTRIPUTION)r   r   created_gross_margins      r   create_gross_marginz2GrossMarginContributionService.create_gross_margin   sY     :II'J\J\J^_"CCDXZ^ZaZabS(2T2TUUs   A9A;gross_margin_get_idc                    K   t        j                  || j                        }|st        dd      t        j
                  j                  |      S w)N  zGet Gross ID not foundstatus_codedetail)r
   get_gross_margin_contributionr   r   r   GrossMarginContributionResponser   )r   r$   !new_get_gross_margin_contributions      r   r*   z<GrossMarginContributionService.get_gross_margin_contribution   sU     ,F,d,dexz~  {B  {B  -C)0C8PQQ55DDEfggs   AAgroup_idreturnr
   c                 &  K   | j                   j                  t              j                  t        j                  |k(        j                         }|st        dd      |D cg c]!  }t        j                  j                  |      # c}S c c}w w)Nr&   zGet Group ID not foundr'   )
r   queryr
   filterr-   allr   r   r+   r   )r   r-   r,   get_group_datas       r   #get_group_gross_margin_contributionzBGrossMarginContributionService.get_group_gross_margin_contribution    s     ,0GGMM:T,U,\,\]w  ^A  ^A  EM  ^M  -N  -R  -R  -T)0C8PQQ mN  O  mNZh66EEnU  mN  O  	O  Os   A!B#&B	B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	   r   r   gross_idr   r   GROSS_MARGIN_CONTRIPUTION_NOTr
    update_gross_margin_contributionr   r     GROSS_MARGIN_CONTRIPUTION_UPDATE)r   r   req!updated_gross_margin_contributions       r   #update_gross_margin_contribution_idzBGrossMarginContributionService.update_gross_margin_contribution_id&   s     C0K0Z0Z[^[i[i[k0l-099A%T8;a;abb&GGHiHrHr  uV  X\  X_  X_  `	 
 	S(2[2[\\s   B4B6r7   c                    K   t        j                  || j                        }|st        dt        j
                        S t        dt        j                        S wr6   )r
    delete_gross_margin_contributionr   r   r   r8    GROSS_MARGIN_CONTRIPUTION_DELETE)r   r7   !deleted_gross_margin_contributions      r   #delete_gross_margin_contribution_idzBGrossMarginContributionService.delete_gross_margin_contribution_id/   sJ     ,F,g,ghprvryry,z)0!x7]7]^^S(2[2[\\s   AAc                 ~  K   | j                   j                  t              j                  t        j                  |k(        j                         }|st        dd      |j                  }|rt        j                  j                  |      st        dd      t        j                  |      }|j                  t        j                  d t        j                   d t        j                    d i      }d}||j"                  vrt        dd| d      ||   j%                         j'                         }|sd	g d
S d|iS w)Nr&   zGroup not foundr'   z1Excel file path is invalid or file does not existzCategory Name i  'z)' column not found in uploaded Excel filezNo categories found in Excel)r   
categoriesrE   )r   r0   r   r1   r-   firstr   excel_pre_selectospathexistspd
read_excelreplacenpnaninfcolumnsdropnatolist)r   r-   get_excel_data
excel_filedfcolumn_namecategory_lists          r   	get_excelz(GrossMarginContributionService.get_excel5   s    GGMM(#VH%%12UW 	 C8IJJ#44

!;C8kll]]:&ZZrvvtbffWdCD 'bjj(;-'PQ  ;..0779=RPPm,,s   D;D=N)__name__
__module____qualname__r   r   r   r   r#   intr*   r4   r   r   GrossMarginContributionUpdater=   rB   listdictrY    r   r   r   r      s    ' )9 V0M Vhc hO OHd O]VEiEi@j ]] ]- -T
 -r   r   )rH   typingr   pandasrK   numpyrN   fastapir   !app.api.gross_margin_contributionr   (app.api.gross_margin_contribution.schemar   app.dependency.authanticationr   app.locale.messagesr   *app.models.main.gross_margin_contributionsr	   r
   app.models.main.groupr   app.utils.schemas_utilsr   sqlalchemy.ormr   r   ra   r   r   <module>rn      s8    	    ! 4 R : ( n * 2 "E- E-r   