
    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 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!jE                  de        ee       ee      fde#dedefd       Z$e!jE                  d       ee       ee      fde#dedefd       Z%e!jE                  d       ee       ee      fde#dedefd       Z&y)    )	APIRouterDependsHTTPException)Session)BytesIO)StreamingResponse)A4)SimpleDocTemplateTable
TableStyle	ParagraphSpacerImage)getSampleStyleSheetParagraphStyle)colors)get_db)JWTPayloadSchemaget_current_student)Module9ReportService)Module9ReportPreviewz/preview9/{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 9 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_9_report/router.pyget_module9_report_previewr'      sN     <&r51//9999 <CF;;<s0   A + )+ A+ 	AA

AAz/{group_id}/preview-report-pdf9c                    K   	 t        ||      }|j                  |        d{   }| |dS 7 	# t        $ r}t        dt	        |            d}~ww xY ww)zGenerate and save PDF reportN)r   	file_pathr   r   )r   generate_and_save_pdfr"   r   r#   )r   r   r   r$   r)   r%   s         r&   preview_report_pdfr+       s[     <&r51!77AA	$9== B <CF;;<s0   A 0 .0 A0 	AAAAz/download9/{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      }|j                  t        d|
             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#|      t        |j$                  xs d#|      g        t'        |      d	k(  rH|j                  t        d#|      t        d#|      t        d#|      t        d#|      t        d#|      g       t)        |g d$%      }|j+                  t-        d&d'd(d	t.        j0                  fd)d*d+d,d-d.d/d0d1g
             |j                  |       |j                  t        d	d2             |j                  t        d3|
             |j                  rt'        |j                        nd4}|j                  rt3        d5 |j                  D              nd4}||z
  }t        d6|      t        t        |      |      gt        d7|      t        t        |      |      gt        d8|      t        t        |      |      gg}t)        |d9d:g%      }|j+                  t-        d&d'd(d	t.        j0                  fd;d<d,d=d>d?g             |j                  |       |j                  t        d	d2             |j                  t        d@|
             d#}d#}|j4                  r4|j4                  j6                  xs d#}|j4                  j8                  xs d#}t        dA|      t        ||      gt        dB|      t        ||      gg}t)        |dCdDg%      }|j+                  t-        d&d'd(d	t.        j0                  fd)d*dEd,d-d.d/dFg	             |j                  |       |j                  t        d	d             |j;                  |       |j=                  d4       t?        t        |jA                               dGdHdI|  dJiK      S 7 2#  Y xY w# tB        $ r}tE        dLt        |      M      d}~ww xY ww)NzDownload Module 9 report as PDFN   2   )pagesize
leftMarginrightMargin	topMarginbottomMarginCustomTitleHeading1         Helvetica-Bold)parentfontSize
spaceAfter	alignmentfontNameSectionHeaderHeading2   
   )r:   r;   r<   r>   zTS Logo.png   K   )widthheightLEFTz Module 9: Backend & Supply ChainFlexibleStyleNormal	      CJK)r:   r;   leadingwordWrapzSupply Chain Adaptation EntrieszEntry ID
CategoriesRemarkszAdaptation NeededzPoint & RationalezN/A)r.   x   rC   d   rC   )	colWidthsGRIDr   r   rW   )FONTNAMErU   )rW   r   r9   )rX   )r   r8   rV   	Helvetica)FONTSIZErU   rV      )ALIGNrU   rV   rG   )VALIGNrU   rV   TOP)
TOPPADDINGrU   rV   r[   )BOTTOMPADDINGrU   rV   r[   )LEFTPADDINGrU   rV      )RIGHTPADDINGrU   rV   rb      zSummary Statisticsr   c              3   r   K   | ]/  }|j                   r!|j                   j                         d k(  rd 1 yw)yesr8   N)do_you_think_you_needlower).0items     r&   	<genexpr>z*download_module9_report.<locals>.<genexpr>   s9      #p1O$($>$>4C]C]CcCcCeinCn $%1Os   57zTotal EntrieszCategories Requiring Adaptationz#Categories Not Requiring Adaptation   rR   )rX   rU   rV   rY   )rZ   rU   rV   rB   )r]   rU   rV   MIDDLE)r_   rU   rV      )r`   rU   rV   rn   zAnalysis SummaryzAdditional RemarkszKey TakeawaysrQ   ih  )rZ   rU   rV   rJ   )WORDWRAPrU   rV   Tzapplication/pdfzContent-Dispositionz+attachment; filename=module_9_report_group_z.pdf)
media_typeheadersr   r   )#r   _fetch_module9_datar   r
   r	   r   r   r   hAlignappendr   r   supply_chain_adaptationr#   adapting_idwhat_are_some_categoriesremarks_about_these_categoriesrg   at_which_point_and_whylenr   setStyler   r   blacksumsummarybackend_submissionsbackend_summarisebuildseekr   readr"   r   )r   r   r   r$   reportbufferdocstylesstorytitle_stylesection_stylelogoflexible_styleadaptation_datarj   adaptation_tabletotal_entriesrequiring_adaptationnot_requiring_adaptationsummary_datasummary_tableadditional_remarkskey_takeawaysanalysis_dataanalysis_tabler%   s                             r&   download_module9_reportr   /   s    [<&r51228<<+-2*,2? %& %&"4B"24 'F:$6B%'	c"=D DKLLLL2' 	YA;OPVAr]# (F8$4U
 	Y@-PQ j.1lN3i0)>:)>:
  22D""#d..7%8.I$77@5.Q$==FW$44=~N$55>O$  3 1$""%0%0%0%0%0$  !<TU!!*VXq&,,7;7-///201.
 # 	 	%&VAr]# 	Y3]CD?E?]?]F::;cdsy  tR  tR  # #p1O1O #p  p XY 	#03G#G  73}CUWe9fg8.I9UXYmUnp~K  A<nMyY\]uYv  yG  PH  I
 lsCjAzVXq&,,77./2/2+
   	 	]#VAr]# 	Y1=AB #>>!'!C!C!Lu"NN<<EM +^<iHZ\j>kl7=R`9ab

 }c
C
VXq&,,7;7-///20
,
 
! 
	 	^$VAr]# 			%A FKKM"(*.YZbYccg,hi
 	
e =6	x  <CF;;<sS   V U! UAU! <AU =RU! VU! UU! !	V*V  VVN)'fastapir   r   r   sqlalchemy.ormr   ior   fastapi.responsesr   reportlab.lib.pagesizesr	   reportlab.platypusr
   r   r   r   r   r   reportlab.lib.stylesr   r   reportlab.libr   app.database.main.mysqlr   app.dependency.authanticationr   r   app.api.module_9_report.servicer   app.api.module_9_report.schemar   module_9_report_routergetintr'   r+   r        r&   <module>r      s'   5 5 "  / & ] ] D   * O @ ?"  2CWX &/%&9:
<
<
< 
< Y
< => &/%&9:<<< < ?< 34 &/%&9:a<a<a< a< 5a<r   