
    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mZmZmZmZmZ d dl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 d dl m!Z!  e       Z"e"jG                  de!       ee       ee      fde$dedefd       Z%e"jG                  d       ee       ee      fde$dedefd       Z&e"jG                  d       ee       ee      fde$dedefd       Z'y)    )	APIRouterDependsHTTPException)StreamingResponse)Session)BytesIO)A4)SimpleDocTemplate	ParagraphSpacerTable
TableStyleImage	PageBreak)getSampleStyleSheetParagraphStyle)colors)get_db)JWTPayloadSchemaget_current_student)Module5ReportService)Module5ReportPreviewz/preview5/{group_id})response_modelgroup_iddbtokenc                    K   	 t        ||      }|j                  |        d{   S 7 # t        $ r}t        dt	        |            d}~ww xY ww)zPreview Module 5 report dataN  status_codedetail)r   get_report_preview	Exceptionr   str)r   r   r   servicees        E/var/www/html/retail-simulation-api/app/api/module_5_report/router.pyget_module5_report_previewr(      sN     <&r51//9999 <CF;;<s0   A + )+ A+ 	AA

AAz/download5/{group_id}c                   K   	 t        ||      }|j                  |        d{   }t               }t        |t        dddd      }t               }g }t        d|d   dddd	
      }	t        d|d   ddd	      }
	 t        ddd      }d|_        |j                  |       |j                  t        dd             |j                  t        d|	             |j                  t        dd             t        d|d   dddd      }|j                  t        d|
             t        d|      t        d|      t        d|      t        d |      gg}|j                  D ]  }|j                  t        t        |j                  xs d!      |      t        |j                  xs d!|      t        |j                   xs d!|      t        |j"                  xs d!|      g        t%        |      dk(  r=|j                  t        d!|      t        d!|      t        d!|      t        d!|      g       t'        |g d"#      }|j)                  t+        d$d%d&dt,        j.                  fd'd(d)d*d+d,d-d.d/g
             |j                  |       |j                  t        dd0             |j                  t        d1|
             t        d2|d   dd	ddd3      }t        d4|      t        d5|      t        d6|      t        d7|      gg}g d8g d9g d:g d;g d<g d=g d>g d?g}|j0                  r|j0                  D ]  }|j2                  r|j2                   d@ndA}|j                  t        |j4                  xs d!|      t        |xs d!|      t        |j6                  xs d!|      t        |j8                  xs d!|      g        nX|D ]S  }|j                  t        |dB   |      t        |d   xs d!|      t        |dC   xs d!|      t        |dD   |      g       U t'        |g dE#      }|j)                  t+        d$d%d&dt,        j.                  fd'd(d)d*d+d,d-d.d/g
             |j                  |       |j                  t        dd0             |j                  t;                      |j                  t        dF|
             t        dG|      t        dH|      t        dI|      gg}|j<                  D ]^  }|j                  t        |j>                  xs d!|      t        |j@                  xs d!|      t        |jB                  xs d!|      g       ` t%        |      dk(  r2|j                  t        d!|      t        d!|      t        d!|      g       t'        |g dJ#      }|j)                  t+        d$d%d&dt,        j.                  fd'd(d)d*d+d,d-d.d/g
             |j                  |       |j                  t        dd0             |j                  t        dK|
             t        dG|      t        dK|      t        dI|      gg}|jD                  D ]^  }|j                  t        |j>                  xs d!|      t        |jF                  xs d!|      t        |jB                  xs d!|      g       ` t%        |      dk(  r2|j                  t        d!|      t        d!|      t        d!|      g       t'        |g dL#      }|j)                  t+        d$d%d&dt,        j.                  fd'd(d)d*d+d,d-d.d/g
             |j                  |       |j                  t        dd0             |jI                  |       |jK                  dB       tM        t        |jO                               dMdNdO|  dPiQ      S 7 #  Y xY w# tP        $ r}tS        dRt        |      S      d}~ww xY ww)TzDownload Module 5 report as PDFN2   )pagesize
leftMarginrightMargin	topMarginbottomMarginCustomTitleHeading1         Helvetica-Bold)parentfontSize
spaceAfter	alignmentfontNameSectionHeaderHeading2   
   )r6   r7   r8   r:   zTS Logo.png   K   )widthheightLEFTzModule 5: Vendor Management FlexibleStyleNormal	      CJK)r6   r7   leadingwordWrapr9   z!Vendor Management Priority MatrixPriorityAreaMetricsRemarkszN/A)<   x   r?   r?   )	colWidthsGRIDr   r   rU   )FONTNAMErS   )rU   r   r5   )rV   )r   r4   rT   	Helvetica)FONTSIZErS   rT   rF   )ALIGNrS   rT   CENTER)VALIGNrS   rT   MIDDLE)
TOPPADDINGrS   rT      )BOTTOMPADDINGrS   rT   r^   )LEFTPADDINGrS   rT      )RIGHTPADDINGrS   rT   ra      zVendor Management ScorecardHeaderStyle)r6   r7   r:   r9   rI   rJ   Metric	Weightage
Importancez2Best Alternative To A Negotiated Agreement (BATNA))zMargin % rh   z(Percentage) [num])zCredit Periodrh   rh   (Days) [num])zExpected Stock Holdingrh   rh   ri   )zPromo Supportrh   rh   z(Percentage per Year) [num])zNew SKU Introduction Chargesrh   rh   z(Rupees per Store) [num])zDisplay Incomerh   rh   uJ   (___ unit in ___ stores)
(Also define the units – text) [num, num, text])zFrequency Of Supplyrh   rh   z(per Week) [num])z	Lead Timerh   rh   ri   %rh   r         )rP   P   rm      zPrivate LabellingzCategory NamezPrivate Label	Rationale)rP   rm   i  zCategory Captainship)d         zapplication/pdfzContent-Dispositionz+attachment; filename=module_5_report_group_z.pdf)
media_typeheadersr   r   )*r   _fetch_module5_datar   r
   r	   r   r   r   hAlignappendr   r   vendor_priority_matrixr$   priorityareametricsremarkslenr   setStyler   r   blackvendor_scorecard	weightagemetric
importancebatnar   private_labellingcategory_nameprivate_labelrationalcategory_captainshipcategory_captinshipbuildseekr   readr#   r   )r   r   r   r%   reportbufferdocstylesstorytitle_stylesection_stylelogoflexible_stylepriority_dataitempriority_tableheader_stylescorecard_datadefault_metricsweightage_str
metric_rowscorecard_tableprivate_dataprivate_tablecaptainship_datacaptainship_tabler&   s                              r'   download_module5_reportr       s    l<&r51228<<+-2*,2? %& %&"4B"24 'F:$6B%'	c"=D DKLLLL2' 	Y={KLVAr]# (F8$4U
 	YBMRS j.1fn-i0i0	
  11D  #dmm4u5~F$)),un=$,,/%@$,,/%@	"  2 }"  %0%0%0%0	"  }8KL
VXq&,,7;7-12/201,
 ! 	 	^$VAr]# 	Y<mLM &&"2!1e
 h-k<0lL1JLY	
  75>DPu?1	
 ""//8<4>>"2! 4B%%dkk2UNCm4unEdoo6Gdjj1E>B	'  0 .
%%jm^<jm4unEjm4unEjm^<	'  .  :LM  VXq&,,7;7-12/201-
 " 	 	_%VAr]#
 	Y[!Y2MBC o~6o~6k>2
 
 ,,D$,,5~F$,,5~F$--05.A!  - |!%0%0%0!  lnEzVXq&,,7;7-12/201+
   	 	]#VAr]# 	Y5}EF o~6,n=k>2
 
 //D##$,,5~F$22;e^L$--05.A%  0  A%##%0%0%0%  ""2oN"":VXq&,,7;7-12/201/
 $ 	 	&'VAr]#		%A FKKM"(*.YZbYccg,hi
 	
G =6	Z  <CF;;<sS   _ ^3 ^(A^3 <A^+ =[*^3 '_(^3 +^0-^3 3	_<___z/{group_id}/preview-report-pdf5c                    K   	 t        ||      }|j                  |        d{   }| |dS 7 	# t        $ r  t        $ r}t        ddt	        |             d}~ww xY ww)z4Generate PDF report and return file path informationN)r   	file_pathr   zError generating PDF: r   )r   generate_and_save_pdfr   r#   r$   )r   r   r   r%   r   r&   s         r'   generate_and_serve_pdfr     s{     W&r51!77AA	 !"
 	
 B   W6LSQRVH4UVVWs1   A# 0 .0 A#0 A AA  A#N)(fastapir   r   r   fastapi.responsesr   sqlalchemy.ormr   ior   reportlab.lib.pagesizesr	   reportlab.platypusr
   r   r   r   r   r   r   reportlab.lib.stylesr   r   reportlab.libr   app.database.main.mysqlr   app.dependency.authanticationr   r   app.api.module_5_report.servicer   app.api.module_5_report.schemar   module_5_report_routergetintr(   r   r        r'   <module>r      s0   5 5 / "  & h h h D   * O @ ?"  2CWX &/%&9:
<
<
< 
< Y
< 34 &/%&9:r<r<r< r< 5r<h => &/%&9:WWW W ?Wr   