
    J)i                        d dl 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 d dlmZmZ d dl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HTTPException)Session)BytesIO)A4)colors)getSampleStyleSheetParagraphStyle)SimpleDocTemplate	ParagraphSpacerTable
TableStyleImage)Module3ReportPreview)Module3ReportService)get_db)JWTPayloadSchemaget_current_studentz/{group_id}/preview3)response_modelgroup_iddbtokenc                 X   K   t        ||      }|j                  |        d{   S 7 w)z-Preview Module 3 Network Planning report dataN)r   _fetch_module3_data)r   r   r   services       >/var/www/html/retail-simulation-api/app/api/module_3/router.pypreview_reportr       s+      #2u-G,,X6666s   !*(*z/{group_id}/download3c                   K   t        ||      }|j                  |        d{   }t               }t        |t        dddd      }g }t               }t        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d             |j                  rt        d |j                  D              rg dg}|j                  D ]v  }|j                  s|j                  dk7  s d|j                  v rdnd}|j                  |j                  xs d|j                  xs ddd|j                   xs dd|g       x t#        |g d      }|j%                  t'        dd d!dt(        j*                  fd"d#d$d%d&g             |j                  |       n|j                  t        d'|             |j                  t        dd(             |j                  t        d)|
             |j                  t        dd             d* }g d+d, ||j,                  j.                         ||j,                  j0                        d-gd. ||j,                  j2                         ||j,                  j4                        d-gd/ ||j,                  j6                         ||j,                  j8                        d0gd1 ||j,                  j:                         ||j,                  j<                        d2gd3 ||j,                  j>                         ||j,                  j@                        d4gg}t#        |g d5      }|j%                  t'        dd d!dt(        j*                  fd"d#d$d6d&d7g             |j                  |       |j                  t        dd(             |jC                  |       |jE                  d       d8|  d9}tG        |jI                         d:d;d<| i=      S 7 H#  Y xY ww)>z0Download Module 3 Network Planning report as PDFN(   )pagesize
leftMarginrightMargin	topMarginbottomMarginCustomTitleHeading2   )parent	alignmentHeading4NormalzTS Logo.png   K   )widthheightLEFT
   zModule 3: Network Planning   z<i>Location Selection</i>c              3   V   K   | ]!  }|j                   xr |j                   d k7   # yw)N/AN)location).0ns     r   	<genexpr>z"download_report.<locals>.<genexpr>C   s(     &kSjaqzz'IajjE6I'ISjs   '))LocationArea
Population	Rationaler7   Mumbaiz2Major metropolitan city with high retail potentialz+Growing market with expansion opportunitiesr   z.1fz sq km,)d   P   rB      )	colWidthsGRIDr   r   rI   )FONTNAMErG   rH   	Helvetica)FONTSIZErG   rH   	   )ALIGNrG   rH   r3   )VALIGNrG   rH   TOP)rJ   rG   )rI   r   Helvetica-BoldzNo location data available   z<i>Store Investment Summary</i>c                     | xs d}d|dS )Nr   zRs. z,.0f )amountvalues     r   format_currencyz(download_report.<locals>.format_currencya   s    !eD\""    )zInvestment ComponentzFormat AzFormat BSourcezCapital Expenses (Excl. IT)zModule 1zIT Capital ExpenseszRental AdvancezModule 2zPre-operating ExpenseszModule 3zTotal Store InvestmentsTotal)   rB   rB   rC   )rO   rG   rH   MIDDLE)rJ   )r   rI   rH   rQ   module3_network_planning_z.pdfzapplication/pdfzContent-Dispositionzattachment; filename=)content
media_typeheaders)%r   r   r   r   r	   r   r   r   hAlignappendr   r   network_planninganyr8   areatotal_hhr   setStyler   r
   blackstore_investment_summarycapital_expenses_acapital_expenses_bit_capital_expenses_ait_capital_expenses_brental_advance_arental_advance_b#calculated_pre_operating_expenses_a#calculated_pre_operating_expenses_b#calculated_total_store_investment_a#calculated_total_store_investment_bbuildseekr   getvalue)r   r   r   r   reportbufferpdfelementsstylestitle_stylesection_stylenormallogolocation_datanetwork	rationalelocation_tablerW   investment_datainvestment_tablefilenames                        r   download_reportr      sF     #2u-G..x88FYF
FRBBZ\km
nCH "F j!K
 :&MHF]#b9q"&
 OOI:KHIOOF1bM" OOI9=IJOOF1bM"3&kSYSjSj&k#kHI..GG$4$4$=U]ahaqaqUqP  ze	$$$$-||(q-V4'',1Q/	&  / }8KL
VXq&,,77-//;,
 ! 	 	'	">GHOOF1bM" OOI?OPOOF1bM"#
 	C	&	88KK	L	88KK	L		 
	88NN	O	88NN	O		 
	88II	J	88II	J		 
"	88\\	]	88\\	]		 
#	88\\	]	88\\	]		%O0 _8KLj	1fll33)+.79*   OO$%OOF1bM"IIh
KKN*8*D9H!$&*?z(JK U 9(s7   !Q6Q+A
Q6/AQ. 0B4Q6%Q65K7Q6.Q30Q6z/{group_id}/preview-report-pdf3c                    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_pathi  zError generating PDF: )status_codedetail)r   generate_and_save_pdfr   	Exceptionstr)r   r   r   r   r   es         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   r   sqlalchemy.ormr   ior   reportlab.lib.pagesizesr	   reportlab.libr
   reportlab.lib.stylesr   r   reportlab.platypusr   r   r   r   r   r   app.api.module_3.schemar   app.api.module_3.servicer   app.database.main.mysqlr   app.dependency.authanticationr   r   module_3_report_routergetintr    r   r   rT   rX   r   <module>r      s*   ? ? "  &   D ] ] 8 9 * O"  2CWX &/%&9:777 7 Y7 34 &/%&9:uuu u 5up => &/%&9:WWW W ?WrX   