
    J)i$                        d dl mZ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mZ d dlmZmZmZmZmZmZmZ d dlmZ d d	lmZ d d
lmZ d dlmZmZ  e       Z e jC                  de       ee       ee      fde"dedefd       Z#e jC                  d       ee       ee      fde"dedefd       Z$e jC                  d       ee       ee      fde"dedefd       Z%y)    )	APIRouterDependsResponse)Session)BytesIO)A4)colors)getSampleStyleSheetParagraphStyle)SimpleDocTemplate	ParagraphSpacerTable
TableStyleImage	PageBreak)Module7ReportPreview)Module7ReportService)get_db)JWTPayloadSchemaget_current_studentz/{group_id}/preview7)response_modelgroup_iddbtokenc                 X   K   t        ||      }|j                  |        d {   S 7 w)N)r   _fetch_module7_data)r   r   r   services       E/var/www/html/retail-simulation-api/app/api/module_7_report/router.pypreview_reportr       s+      #2u-G,,X6666s   !*(*z/{group_id}/download7c                 @  K   t        ||      }|j                  |        d {   }t               }t        |t        dddd      }g }t               }t        d|d   d      }	|d   }
|d   }d	 }	 t        d
dd      }d|_        |j                  |       |j                  t        dd             |j                  t        d|	             |j                  t        dd             |j                  t        d|
             |j                  t        d|j                  j                   |             |j                  t        d|j                  j                   |             |j                  t        d|j                  j                   |             |j                  t        dd             |j                  t        d|
             t        dddd      }t        d|      t        d|      t        d|      t        d|      gg}|j                  t        t!        |j"                  j$                  xs d       |      t        t!        |j"                  j&                  xs d       |      t        t!        |j"                  j(                  xs d       |      t        t!        |j"                  j*                  xs d       |      g       t-        |      }|j/                  t1        d!d"d#dt2        j4                  fd$d%d&d'g             |j                  |       |j                  t        dd(             |j                  t        d)|j"                  j6                  xs d  |             |j                  t        dd             |j                  t        d*|
             |j                  t        d+ ||j8                  j:                         |             |j                  t        d,|j8                  j<                   |             |j                  t        dd(             |j                  t        d-|d.                t        d/|      t        d0|      t        d1|      t        d2|      t        d3|      gg}|j>                  D ]  }|j                  t        t!        |j@                  xs d       |      t        |jB                  r ||jB                        nd |      t        t!        |jD                  xs d       |      t        t!        |jF                  xs d       |      t        t!        |jH                  xs d       |      g        t-        |      }|j/                  t1        d!d"d#dt2        j4                  fd$d%d&d4g             |j                  |       |j                  t        dd(             |j                  t        d5|d.                t        d6|      t        t!        |jJ                  jL                  xs d       |      gt        d7|      t        t!        |jJ                  jN                  xs d       |      gt        d8|      t        t!        |jJ                  jP                  xs d       |      gg}t-        |      }|j/                  t1        d!d"d#dt2        j4                  fd$d%d&d'g             |j                  |       |j                  t        dd             |j                  tS                      |j                  t        d9|
             tU        |jV                  d      D ]s  \  }}|j                  t        d:| d;|d.                t        d<|      t        t!        |jX                  xs d       |      gt        d=|      t        t!        |jZ                  xs d       |      gt        d>|      t        |j\                  xs d? d@|      gt        dA|      t        t!        |j^                  xs d       |      gt        dB|      t        t!        |j`                  xs d       |      gg}t-        |      }|j/                  t1        d!d"d#dt2        j4                  fd$d%d&d'g             |j                  |       |j                  t        dd(             v |j                  t        dd             |jc                  |       |je                  d?       dC|  dD}tg        |ji                         dEdFdG| iH      S 7 #  Y hxY ww)IN(   )pagesize
leftMarginrightMargin	topMarginbottomMarginCustomTitleHeading1   )parent	alignmentHeading2Normalc                     | | dk(  ryd| dS )zFormat currency with Rs. prefixr   zRs. 0zRs. z,.0f )amounts    r   format_currencyz(download_report.<locals>.format_currency0   s    >Vq[fT]##    zTS Logo.png   K   )widthheightLEFT
   z"Module 7: Marketing Communications   z!<b>Brand Attribute Assessment</b>zResearch Methodology: zTop 10 Attributes: z	Remarks: z<b>Branding & USP</b>	CellStyle	      CJK)fontSizeleadingwordWrapz<b>Attributes</b>z<b>Reference Retailer 1</b>z<b>Reference Retailer 2</b>z<b>Own Brand</b>zN/AGRIDr   r   rE   )FONTNAMErC   rD   	Helvetica)ALIGNrC   rD   r8   )VALIGNrC   rD   TOP)FONTSIZErC   rD   r<      z$<b>Brand Positioning Statement:</b> z<b>Marketing Plan</b>zMarketing Budget: zRationale: z&<b>Integrated Marketing Activities</b>Heading3z<b>Activity Name</b>z<b>Budget Allocated</b>z<b>Objective</b>z<b>Measurement</b>z<b>Target Journey</b>)rK   rC   rD   rL   z<b>Competitor Analysis</b>z<b>Reference Retailer</b>z<b>Marketing Communication</b>z<b>Plan Activities</b>z<b>Brand Journey</b>z<b>Asset Optimization Record z</b>z<b>Space Resources</b>z<b>Non-Space Resources</b>z<b>Percentage of Sales</b>r   %z<b>Predictions</b>z<b>Marketing Changes</b>module7_report_z.pdfzapplication/pdfzContent-Dispositionzattachment; filename=)content
media_typeheaders)5r   r   r   r   r   r
   r   r   hAlignappendr   r   brand_attribute_assessmentdefine_research_methodologyname_top_10_attributesremarksstrbranding_attributes
attributesreference_retailer_1reference_retailer_2	own_brandr   setStyler   r	   blackbrand_positioning_statementmarketing_and_communicationmarketing_budgetrationalintegrated_marketingactivity_namebudget_allocated	objective
measurmenttarget_shopper_journeymarketing_competitorname_of_the_reference_retailermarketing_communicationplan_activitiesr   	enumerateoptimising_assetsspace_resources_for_incomenon_space_resources_for_incomepercentage_of_salespredictions_around_changes"changes_in_marketing_communicationbuildseekr   getvalue)r   r   r   r   reportbufferpdfelementsstylestitle_stylesection_stylenormalr2   logo
cell_style
brand_databrand_tablemarketing_dataactivitymarketing_tablecompetitor_datacompetitor_tableiasset
asset_dataasset_tablefilenames                              r   download_reportr      s     #2u-G..x88FYF
FRBBZ\km
nCH "F j!K
 :&MHF$]#b9q"&
 OOIBKPQOOF1bM" OOIA=QROOI 6v7X7X7t7t6uvx~  AOOI 3F4U4U4l4l3mnpvwxOOI	&*K*K*S*S)TUW]^_OOF1bM" OOI5}EF  aeTJ%z2/</<$j1	 J #f00;;DuEzR#f00EENOQ[\#f00EENOQ[\#f00::CeDjQ	  
#K	1fll33++)%   OOK OOF1aL!OOI DVE_E_E{E{  FE  @E  EF  G  IO  P  QOOF1bM" OOI5}EFOOI 2?6CeCeCvCv3w2xy  |B  C  DOOIF,N,N,W,W+XY[abcOOF1aL! OOIFzHZ[\(*5+Z8$j1&
3):6 N //c(009E:JGHD]D]oh&?&?@chjtuc(,,56
Cc(--67Dc(99BUCZP
 	 0 N+OZ	1fll33++))   OOO$OOF1aL! OOI:F:<NOP	.
	;Ys6KfKf  LF  LF  LO  JO  HP  R\  >]  	^	3Z	@)CPVPkPk  QD  QD  QM  HM  MN  PZ  C[  	\	+Z	8)CHcHcHsHsH|w|D}  @J  ;K  	LO
 _-j	1fll33++)*   OO$%OOF1bM" OOIK OOI4mDEf66:5	$A!D"I6R\K]^_/<iELlLlLupuHv  yC  ?D  E3Z@)CPUPtPtP}x}L~  AK  CL  M3Z@)uOhOhOmlmNnnoLpr|B}~+Z8)CHhHhHqlqDrt~:  A1:>	#eNvNvNz  KA  CM  AN  O

 J'ZVXq&,,77//-)
  	 	$q!%% ;& OOF1bM" IIh
KKN 
$/H!$&*?z(JK } 96s*   !ddAd2Ad 3a!dddz/{group_id}/preview-report-pdf7c                    K   	 t        ||      }|j                  |        d{   }| |dS 7 	# t        $ r!}ddlm}  |ddt        |             d}~ww xY ww)z4Generate PDF report and return file path informationN)r   	file_pathr   )HTTPExceptioni  zError generating PDF: )status_codedetail)r   generate_and_save_pdf	Exceptionfastapir   rY   )r   r   r   r   r   er   s          r   generate_and_serve_pdfr      ss     W&r51!77AA	 !"
 	
 B  W)6LSQRVH4UVVWs0   A 0 .0 A0 	AAAAN)&r   r   r   r   sqlalchemy.ormr   ior   reportlab.lib.pagesizesr   reportlab.libr	   reportlab.lib.stylesr
   r   reportlab.platypusr   r   r   r   r   r   r   app.api.module_7_report.schemar   app.api.module_7_report.servicer   app.database.main.mysqlr   app.dependency.authanticationr   r   module_7_report_routergetintr    r   r   r0   r3   r   <module>r      s-   0 0 "  &   D h h h ? @ * O"  2CWX &/%&9:777 7 Y7 34 &/%&9:hhh h 5hR => &/%&9:WWW W ?Wr3   