
    7h"                     t   d dl  d dlmZ 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  ed	e      Zej%                  d
dg      ed               Zej%                  ddg      ed               Zej%                  ddg      ed               Zej%                  ddg      ed               Zy)    )*)ObjectId)requestjsonify	Blueprint)jwt_required)evaluate_descriptive_answer)Course)UserCoursePurchase)datetime	mock_testz/get_mock_tests_listPOST)methodsc            	         	 t        t        dd       } | st        ddd      dfS t        j                  j	                  d      }|r| st        ddd      dfS t        j                  t        |      d	
      j                         }d}d}| rt        j                  t        |       |j                  d	      j                         }|rJd	}|j                  }|j                  r0t        j                         |j                  z
  j                  |kD  rd	}|st        ddd      dfS |rt        ddd      dfS t         j                  t        |      d	      }|D cg c]E  }t#        |j                        |j$                  |j                  |j&                  |j(                  dG }	}t        d|||	d      dfS c c}w # t*        $ r#}
t        dt#        |
      d      dfcY d }
~
S d }
~
ww xY w)Nuser_idFzInvalid user idstatusmessagei  	course_idz"course_id and user_id are required     )idr   r   )r   r   r   zCourse not purchasedi  zCourse access has expired)r   r   )mock_test_idtitledurationtotal_questionstotal_marksT)r   is_purchased
is_expireddata     )getattrr   r   jsongetr
   objectsr   firstr   r   r   purchase_dater   utcnowdaysMockTeststrr   r   r   	Exception)r   r   course_detailsr   r   purchaseexpiry_days
mock_teststestresultes              ,/var/www/html/eduruby.in/routes/mock_test.pyget_mock_tests_listr6      s   1B'9d3e8IJKSPPLL$$[1	e8\]^`ccc (9*=aHNNP
)11 )(++ eg	 
  ,55))x/@8CYCY/Y._._bm.m!"J e8NOPRUUUe8STUWZZZ%%0CA%N
 !"   LZZ#33++
 " " ($	
 
  	"  B%CF;<cAABsH   "F< 2F< C
F< #F< 5$F< A
F7#F< 7F< <	G(G#G(#G(z/get_instructionc                     	 t         j                  j                  d      } t        j                  |       st        ddd      dfS t        j                  t        |             j                         }|st        ddd      dfS |j                  j                  }|j                  }|st        dd	d      dfS t        j                  t        |            j                         }|st        dd
d      dfS t        d||j                  |j                  xs d|j                  xs d|j                   |j"                  |j$                  |j&                  dd      dfS # t(        $ r#}t        dt+        |      d      dfcY d }~S d }~ww xY w)Nr   FInvalid mock test IDr   r   )r   zMock test not foundi  z(No instructions found for this mock testzExam not foundT )instructions
exam_titleexam_description	exam_iconmock_test_titlemock_test_durationmock_test_total_questionsmock_test_total_marksr   r    r!   r"   )r   r$   r%   r   is_validr   r+   r&   r'   examr   r:   Examr;   r<   iconr   r   r   r   r-   r,   )r   r    exam_idinstructions_data	exam_datar4   s         r5   get_instructionrJ   B   s   "B||''7  .e8NOPRUUU(<"89??Ae8MNOQTTT)),, -- e8bcdfiii<<8G#4<5;;=	e8HIJCOO  1'22$-$>$>$D"&^^1r#'::&*mm-1-A-A)-)9)9	
   	  B%CF;<cAABs7   AE >E 3E 9>E 8A&E 	F(F FFz/get_mock_test_questionsc            	         	 t         j                  j                  d      } t        j                  |       st        ddd      dfS t        j                  t        |             }i }|D ]  }|j                  |vrRt        |j                        |j                  |j                  |j                  |j                  dg||j                  <   c||j                     j                  t        |j                        |j                  |j                  |j                  |j                  d        t        d|d	      d
fS # t         $ r#}t        dt        |      d      dfcY d }~S d }~ww xY w)Nr   Fr8   r   r   r   )question_idquestionoptionsanswermarksTrB   r!   r"   )r   r$   r%   r   rC   r   MockTestQuestionr&   question_typer,   r   rN   rO   rP   rQ   appendr-   )r   	questionsr3   qr4   s        r5   get_mock_test_questionsrW   i   s>    B||''7  .e8NOPRUUU$,,x7M,N	 	Af, (+144y$%JJ#$99"#((!")q' q'..#&qtt9 !

 yyhhWW0 	* $78#== B%CF;<cAABs%   AD= C6D= =	E)E$E)$E)z/submit_testc            	         	 t         j                  j                  d      } t        j                  |       st        ddd      dfS t         j                  j                  d      }t        j                  t        |             }|D ci c]  }t        |j                        | }}d}g }|D ]e  }|j                  d	      }t        j                  |      r||vrt        dd
| d      dfc S |j                  d      dv r|j                  dd      }	||   j                  }
t        |	|
      }|dk\  r7||   j                  z  }|j                  |||   j                  |	|
dd       |j                  |||   j                  |	|
dd       |j                  dd      }	||   j                  }
|	|
k(  r8|||   j                  z  }|j                  |||   j                  |	|
dd       B|j                  |||   j                  |	|
dd       h t        dd||d      dfS c c}w # t        $ r#}t        dt        |      d      dfcY d }~S d }~ww xY w)Nr   Fr8   r   r   r    rL   r   rM   zInvalid question ID: rS   )descriptiveEssayrP   r9   gffffff?correct)rM   rN   user_answercorrect_answerr   	incorrectTz'Test submitted and checked successfully)r   r   rQ   r3   r!   r"   )r   r$   r%   r   rC   r   rR   r&   r,   r   rP   r	   rQ   rT   rN   r-   )r   submitted_answersrU   rV   question_map
user_marksr3   rP   rM   r\   r]   similarity_scorerQ   r4   s                 r5   submit_testrc      s   FB||''7  .e8NOPRUUU#LL,,V4 %,,x7M,N	.78ADD	188
' ,	F **]3K$$[1[5T%>ST_S`<abcehhhzz/*.FF$jj26!-k!:!A!A#>{N#[ #s*L5;;;EMM'2$0$=$F$F'2*8"+#  MM'2$0$=$F$F'2*8"-#  %jj26!-k!:!A!A.0,{";"A"AAJMM'2$0$=$F$F'2*8"+#  MM'2$0$=$F$F'2*8"-# M,	b @	
 
  	m 9z  B%CF;<cAABs?   AH- AH- H(%A
H- 0D7H- (H- -	I6IIIN)models.mock_test_modelbsonr   flaskr   r   r   utils.jwt_servicer   utils.evaluaterr	   models.courser
   #models.user_course_purchase_historyr   r   __name__mock_test_bprouter6   rJ   rW   rc        r5   <module>rp      s    $  - - * 7   B h/*VH=2B  >2Bh &9#B  :#BJ .A!B  B!BF NVH5GB  6GBro   