o
    1=d:                    @   s  d dl Z d dlmZ d dl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 d dlmZ d d	lmZmZ zd d
lmZ W n eyS   d d
lmZ Y nw d dl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#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, d dl-m.Z. d dl/m0Z0m1Z1m2Z2 d dl3m4Z4 d dl5m6Z6m7Z7m8Z8 d dl9m:Z: d dl;m<Z<m=Z=m>Z>m?Z?m@Z@ d dlAmBZB d dlCmDZDmEZEmFZFmGZGmHZHmIZI d dlJmKZK d dlLmMZMmNZNmOZOmPZPmQZQmRZR d dlmSZS d dlTmUZU d dlVmWZW d dlXmYZY e6ddge7e=e@feBd d! ZZe6ddge7e=e@feBd"d# Z[e6ddge7e=e@feBd$d% Z\e6ddge7e=e@feBd&d' Z]e6ddge7e=e@feBd(d) Z^e6ddge7e=e@feBd*d+ Z_d,d- Z`e6ddge7e=e@feBd.d/ Zad0d1 Zbe6ddge7e=e@feBd2d3 Zce6ddge7e=e@feBd4d5 Zde6ddge7e=e@feBd6d7 Zee6ddge7e=e@feBd8d9 Zfe6ddge7e=e@feBd:d; Zge6ddge7e=e@feBd<d= Zhe6ddge7e=e@feBd>d? Zie6ddge7e=e@feBd@dA Zje6ddge7e=e@feBdBdC Zke6ddge7e=e@feBdDdE Zle6ddge7e=e@feBdFdG Zme6ddge7e=e@feBdHdI Zne6ddge7e=e@feBdJdK Zoe6ddgeBdLdM Zpe6ddgeBdNdO Zq	 e6ddge7e=e@feBdPdQ Zre6ddge7e=e@feBdRdS Zse6ddge7e=e@feBdTdU Zte6ddge7e=e@feBdVdW Zue6ddge7e=e@feBdXdY Zve6ddge7e=e@feBdZd[ Zwd\d] Zxe6ddge7e=e@feBd^d_ Zye6ddge7e=e@feBd`da Zze6ddge7e=e@feBdbdc Z{e6ddge7e=e@feBddde Z|e6ddge7e=e@feBdfdg Z}e6ddge7e=e@feBdhdi Z~djdk ZeBdldm Ze6ddge7e=e@feBdndo Ze6ddge7e=e@feBdpdq Ze6ddge7e=e@feBdrds Ze6ddge7e=e@feBdtdu Ze6ddge7e=e@feBdvdw Ze6ddge7e=e@feBdxdy ZdS )z    N)parse_qs)EmailMultiAlternatives)
connection)model_to_dict)JsonResponseHttpResponse)render)Context)render_to_stringget_template)logger)datetime	timedeltatime)Maxstatus)timezone)
PlanPlanExcercisePlanSetsPlanPeriodsPlanMesocycle
MicrocyclePlanSessionPlanProtocolSelectedAbilities	PlanGoals)settings)UserFitnessProfileUserPlateWeight)AuthResponseSerializer)api_viewauthentication_classespermission_classes)Response)StartFitAuthenticationSessionAuthenticationStartFitSessionUtilAuthResponseIsAuthenticated)never_cache)UserPlanUserTestPlanUserExerciseUserPlanCycleUserSets	Mealplans)TransactionHistory)ExerciseTypeExerciseVideosPriceMappingPriceConversionAdvExercises)date)relativedelta)exceptionMail)
officeMailGETPOSTc           
   
   C   s   t  }|| }|d }z>tjj|dd }tjj|d }| rB|D ]}t|}|d dkr5d}q&d}q&t	dd||d	W S t	dd
|dW S  t
yi }	 ztd t	dt|	iW  Y d }	~	S d }	~	ww )Nid   user_idr   rC   	freetrailTFUser Program Already Exists)successmessage	freeTrailcount
No Program)rG   rH   rJ   errormsg)r)   get_user_insessionr-   objectsfiltervaluesrJ   existsdictr   	Exceptionr   rL   str)
requeststratsessionutiluseruseridZ	checkplanZuserplansCountvalvalObjrI   e r]   vC:\Users\DELL\Desktop\soubhikg1894-stratfit-d75d91182fa3\soubhikg1894-stratfit-d75d91182fa3\services\Userplan\views.pyionicuserplancheck'   s&   

r_   c              
   C   s  t  }|| }|d }t| jd}t| z|d krt|d d}t| |t	dd }|
d}tjddd	d
dddj||d d}| r|D ]C}	t|	}
tjj|
d d}||_||_d|v rm|d |_d|v rv|d |_d|v r|d |_d|v r|d dkr|d |_|  qOtdd|||
d	 |
d ddW S tdddW S  ty } ztd tdt|iW  Y d }~S d }~ww )Nr@   utf-8	startdate%Y-%m-%d %H:%M:%S   days%Y-%m-%d	startDateplan_idnextRenewalDate
seasonDatedayOffmicrocyclecountplanidrC   rh   r@   dayoffmicrocycleid
deviceDate Tz!User Program updated successfully)rg   ri   planIdrq   rG   rH   dataFUser logged outrG   rH   rL   rM   )r)   rN   jsonloadsbodydecodeprintr   strptimer;   strftimer-   rO   rQ   rP   rR   rS   getrg   ri   rk   rj   rl   rr   saver   rT   r   rL   rU   )rV   rW   rX   rY   planInfora   
one_monthsri   plandtplaninfr\   r]   r]   r^   ionicupdatestartdate@   sD   

&




$
r   c           	   
   C   s   t  }|| }|d }zE|d krJtjdddddj|dd}g }|D ]}t|}|d d|d< |d d|d< || q$t	d	|d
W S t	dddW S  t
yp } ztd t	dt|iW  Y d }~S d }~ww )Nr@   rg   rh   ri   rk   rA   rB   rf   TrG   plandataFrw   rx   rL   rM   r)   rN   r-   rO   rQ   rP   rS   r   appendr   rT   r   rL   rU   )	rV   rW   rX   rY   r   planArrr   planObjr\   r]   r]   r^   ionicgetuserplandataf   s&   

r   c           	   
   C   s   t  }|| }|d }zI|d krNtjddddj|ddgd}g }|D ] }t|}|d dkr@|d d ur@|d d	|d< || q%t	d
|dW S t	dddW S  t
yt } ztd t	dt|iW  Y d }~S d }~ww )Nr@   rg   rh   r   rA      )rC   
status__inrs   rf   Tr   Frw   rx   rL   rM   r   )	rV   rW   rX   rY   r   ZpArrr   pObjr\   r]   r]   r^   ioniccheckstartdate~   s&   
 
r   c           *      C   s  t  }|| }|d }t| jd}z|d krd|v r|d dkrtd tjj	||d dd
dd	}t|d
 | r|D ]%}t|}tjj|d d}d|_d|v rh|d dkrh|d |_|  qGt d}	tt|	d }
t|
 |
dk rd}
t d}t tdd }|d}td tjj||d |d |d |d dd|
d}d|v r|d dkr|d |_|  d|v r|d d krtjj	|d d
 }|D ]
}t|}|d }qtjj|d}|j|_|  tjj	|dj	ddgd
 }g }g }|D ]M}t|}tjj	|d d  }tjj|d}tjd!d"d#j	|d d
dd$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:}|D ]}t|}|d4 d;kse|d4 d<krtjj|d3 d}t|d+ d= tt|jd> t|j   d? |d+< n#tjj|d5 d}t|d+ d= tt|jd> t|j   d? |d+< d@|dA< dB|dC< ||dD< t|d' dkrdE|d'< qQ|j!dFkr|dG dHkr|d9 |d'< |d9 |dI< |d8 |d6< n3|d' |d'< |d' |dI< n&|dG dHkr|d9 |d'< |d9 |dI< |d8 |d6< n|d' |d'< |d' |dI< t"|d' dkr'dE|d'< qQ||dJ< t#jdKj	|d dL
dMdNdOdP$ }g } |D ]}!t|!}"| %|" qE| |dQ< |%| qt&jj	|d
dRdSdTdUdddVdWdXdYdZd[d\d]}#|# r|#D ]}t|}$|%|$ q{t'dd^|||||d_d`W S W d S t()|da db}%|%tdd }|d}tj
ddcdddj	||d de}&|& r|&D ]}t|}'tjj|'d d}&||&_*|&  |&j}(qd|v r|d d krtjj	|d d
 }|D ]}t|}|d }qtjj|d}|(|_|  t'dd^dd|id`W S t'ddfdgW S  t+yE }) zt,-dh t'dit|)iW  Y d })~)S d })~)ww )jNr@   r`   plancompleteTzinside existsrm   rA   rC   rh   r   r   z->>ro      rr   rs   %wr      rf   rc   rd   	here i am	 00:00:00FrC   rh   renewalDaterg   ri   r   rE   rk   transactionIdtransation_idpkrX   r   r   rh   rh   	Goals__idProgramType__idUser__idplanNamecreatedBy__first_namecreatedBy__last_namepriceduration_weeksabilityplanGoal__goalNameplanDescriptionprogramType__programTypeName
planStatusnum_of_periodsnum_of_sessionsgoals	planPhotoprogramType_idcreatedBy_idlicencePolicyoriginalPlanner_idiosPrice	iosStatusindianIosPriceindianPricecreatedBy__avatar3White-Label<br><h6>Copyright &copy; 2017  . All rights reserved.</h6>ztxEOSIcMc4genWarmupVideo2esZzqjO5CccooldownVideo	planUsersFreeINRuserCountryX   	planPriceinfor5   )r   exercise_idZexercise_id__exerciseNameZexercise_id__exerciseDescZexercise_id__equipment	exercisescreatedDateexerciseId_idexerciseId_id__exerciseNameexerciseNametmax
updateTmax
updateTypeupdatedDaterC   userplan_id
workWeightworkoutTestDatezProgram renewed successfully)rg   plansr   ri   r   ru   ra   rb   rg   ri   rn   rw   rx   rL   rM   ).r)   rN   ry   rz   r{   r|   r}   r-   rO   rP   rQ   rR   rS   r   r   rr   r   r:   todayr   intrU   r;   creater3   r@   r   rJ   r   r   select_related
first_name	last_namecurrencyTypefloatr   distinctr   r.   r   r   r~   ri   rT   r   rL   )*rV   rW   rX   rY   r   Z	plancmpltr   Zplan1Z	uplaninfotodayDayoffDay	todayDater   ri   userplanDetailstransactionstratraobjtraidupdatetransactionsPlanDetailsr   tmaxArrr   downloadUsersuserCurrency	planInfosdtp	planInfo1partnerName	coachNameZexercisesObjZplanExsexexObjtmaxDetailsdataTmaxObjra   r   r   
userplanIdr\   r]   r]   r^   ionicUpdateRenewalDate   s   










P64(.
_
 


r   c           I      C   s  t  }|| }|d }t| jd}|d }|}d}z|d kr"tjj|d}t	jjdd}	|	j
}
tjj||d ddgdd}| rQtd	d
dW S tjj|ddjdd tjj|ddd}| rqd}d	}nd}d}t d}t }tjj|d|d }| r|D ]
}t|}|d }qt||d }|tdd }t d}|}nt d}tt|d }t tdd }t d}|d}tjj||d |d |d |d |||d}d|v r|d dkr|d |_|  d|v r5|d d kr5tjj|d d }|D ]}t|}|d }qtjj|d}|j|_ |  g d} g d}!t!jj|d }"|" rPt"d  n8d!}#d!}$| D ]}%|#d }#t!jj||%d"d#|#dd$}&|&  qV|!D ]}'|$d }$t!jj||'dd|$dd$}&|&  qptj#d%j|d d&d'}(|(D ]})|)d' }*qtjj|d}+d(},|+j$}-|+j%|*d)}.t&d*|.}/t'|,|/|- tjj|ddjdd tjj|d+jddgd, }0g }1|0D ]2}2t|2}3tjj|3d d-( }4t)j#d.d/d0j|3d ddd1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdG}5|5D ]}6t|6}7dH|v r|dH dIkr|j*dJkrwt)jjdddK+ ,t-dDdL }8|dM dNkr]|7dF |7d4< |7dF |7dD< |7dF |7dO< n|7dD |7d4< |7dD |7dO< t|7d4 d#krvdP|7d4< nt)jjdddK+ ,t-dDdL }9t.jj|9dQ}:|:j/}8|dM dNkrt.j j|7dF dQ};nt.j j|7dD dQ};|;D ]}<t|<}=|=dR }>q|>|7d4< |dM dNkr|7dF |7dD< t|7d4 d#krdP|7d4< n\t|7d4 d#krdP|7d4< nN|j*dJkr|dM dNkr|7dG |7d4< |7d4 |7dO< n'|7d4 |7d4< |7d4 |7dO< n|dM dNkr&|7dG |7d4< |7d4 |7dO< n|7d4 |7d4< t0|7d4 d#kr9dP|7d4< t1j#dSj|7d d-dT}?d}@|?D ]}'t|'}A|@dU|AdT  7 }@qL|@dkrh|@dd  }Bnd}Bt2j#dVj|7d d-dW}Cd}D|CD ]}'t|'}A|DdU|AdW  7 }Dq}|Ddkr|Ddd  }End}E|B|7d6< |E|7d=< |7dB dXks|7dB dYkrtjj|7dA d}Ft|7d8 dZ tt|Fj%d[ t|Fj3  d\ |7d8< n#tjj|7dC d}Gt|7d8 dZ tt|Gj%d[ t|Gj3  d\ |7d8< d]|7d^< d_|7d`< |4|7da< q|7|3db< |14|3 qtddc||1||d	||dddeW S td	dfdW S  t5yR }H zt67dg t8|||t|H tdht|HiW  Y d }H~HS d }H~Hww )iNr@   r`   rh   zuserplan/createuserplan/ro   rA   r   rC   rh   r   FrF   rx   rB   r   r   Trf   )rC   r   ZnextRenewalDate__gterk   rc   rd   r   r   )rC   rh   r   ri   rg   r   rE   rk   rr   rs   r   r   r   )	2            
   g      @   g      @rA   )r  r  r   rD   zvalue Already eXists   r   )rC   weightrJ   barbellindexr   Plan__id)plan__idplan_id__planNamezPlan Subscription)r   plannamezsubscribeplan.htmlr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   
deviceTypeiosr   )activationStatusr   ZiosPrice__maxr   r   r   r   )inrusdPlanAbilitiesability_id__abilityz, PlanPurposesplanGoal_id__GoalNamer   r   r   r   r   r   r   r   r   r   r   zUser Program Saved Successfully)rg   r   r   ri   	freeTrialrt   rp   ru   rw   something wrongrM   )9r)   rN   ry   rz   r{   r|   r   rO   r   r8   inrValuer-   rP   rQ   rR   r   updater:   r   r   r   nowrS   next_weekdayr;   r   rU   r   rr   r   r3   r@   r   r!   r}   r   emailr   r
   r=   rJ   r   r   all	aggregater   r7   r  r   r   r   r   r   rT   r   	exceptionr<   )IrV   rW   usernamerX   r   planIDrequrlr   currencyValuesr  	planexistZ
planActiveZ
statusCoderE   r   dZcheckplanOffDayrdZrdObjr   Znext_mondayr   ZnextMondayStr
offDayCalcri   r   r   r   r   r   r   	platesArr
barbellArrextigwtsidxidx1wtwtinfrZ   r   rv   r  instanceSubsubjectto_emailctxrH   r   r   r   r   r   r   r   r   ZhighestPriceZhighestPriceValZ
highestValusdValuer  usdObj	dollarValplanAbilityVal	abilitiesr[   planAbilitiesplanPurposesValpurposes	planGoalsr   r   r\   r]   r]   r^   createUserPlan  sr  

 







P
""


64"
r=  c                 C   s*   ||    }|dk r|d7 }| t|d S )Nr      rd   )weekdayr   )r&  r?  Z
days_aheadr]   r]   r^   r    s   r  c              
   C   sj  t  }|| }|d }d}d}z||d krtjj|ddddd}|D ]]}t|}|d }	|d tdd	 }
|
d
}tj	dj|	|ddd}|D ]}|d }qMt
 d
}||krd}|d }|d |d}td|}t||| tddd  W S q$tdddW S W d S  ty } ztd t|||t| tdt|iW  Y d }~S d }~ww )Nr@   r>   zuserplan/subscriptionreminderrA   rB   rh   ri      rd   rf   r	  )r
  rC   r   r  Subscription reminderr  r   r   Z	plan_namesubscriptionreminder.htmlT-Subscription reminder email sent successfullyrx   zNothing happensr  rM   )r)   rN   r-   rO   rP   rQ   rS   r;   r   r   r:   r   r
   r=   r   rT   r   r  r<   rU   )rV   rW   r   rX   r"  r#  planobjr   dataObjrh   oneweekbeforeoneweekr   rv   r  	todaydater1  r2  r3  rH   r\   r]   r]   r^   subscriptionreminder  sF   




rJ  c                 C   s  t  tdd }tjjt |ddddddd	d
dddd	}|D ]}t	|}|d }|d tdd }|
d}|d }t 
d}|d dkrfd}	|d }
|d |d}td|}t|	||
 q$t }g }||d
  g }|D ]2}||d |d d tjj|d
 ddddd}|D ]}|d }|d }|||d qqv|D ]}dt| }	|d }
|d |d}td|}t|	||
 qq$tdddS )Nr@  rd   )ri   r   r	  r@   rh   ri   user_id__idZuser_id__organizationr  user_id__emailuser_id__first_nameZuser_id__userTyperf   rA  rB  rC  )namer  r   )organizationuserTyper   r  )r  	firstNamez#Subscription reminder for Gym UsersTrD  rx   )r   r   r;   r-   rO   rP   r:   r   rQ   rS   r   r
   r=   setaddr   r   rU   r   )rV   rI  rE  r   rF  rh   rG  rH  r  r1  r2  r3  rH   ZorganizationsuserArrZorgAdminArrorgZorgAdminValuesZorgsZorgAdminZorgfirstnameZorgValr]   r]   r^   reminder  sN   2


	rV  c           "   
   C   s  t  }|| }|d }t| jd}|}d}z|d krd}d}tjj||d dd	 }	|	
 r|	D ]}
t|
}|d	 }ttj}|| }|j}t|d
 }q8tjddj|d d	  }||krmd}|dkrtjj||d dd}t d}t| t tdd }|d |_|dd |_|  d|v r|d d krtjj|d d	 }|D ]
}t|}|d }qtjj|d}|j|_ |  ntjj||d dd}d|_!|  t d}t d}t"t#|d }t| |dk rd}t d}t tdd }|d}td tjj$||d |d |d |d dd|d}d|v rF|d dkrF|d |_%|  d|v r~|d d kr~tjj|d d	 }|D ]}t|}|d }qctjj|d}|j|_ |  tjj|djddgd	 }g }|D ]} t| }|&| qt'dd ||||d|d d!d"W S t'd#d$iW S t'dd%d&W S  t(y }! zt)*d' t+|||t#|! t'd(t#|!iW  Y d }!~!S d }!~!ww ))Nr@   r`   zuserplan/renewuserplan/r   Frh   rA   r   rg   r@  r   r   )Z mesocycle_id__period_id__plan_idTrf   rc   rd   r   r   r   r   r   r   r   r   r   rr   rs   r   r   r   z!User Program renewed Successfully)rg   r   r   ri   r  rt   ru   rH   zPlease provide Programrw   rx   r  rM   ),r)   rN   ry   rz   r{   r|   r-   rO   rP   rQ   rR   rS   r   r  r   utcre   absr   r   rJ   r   r:   r   r   r}   r;   r   ri   r   r3   r@   r   r   r   rU   r   rr   r   r   rT   r   r  r<   )"rV   rW   r   rX   r   r"  r#  num_of_microcyclesr   r%  rZ   r[   rg   r   ZdiffDatediffDaysZmicrocyclesr   r   r   r   r   r   r   r   r   r   r   ri   r   r   r   r   r\   r]   r]   r^   renewUserPlanK  s   


"





$
r[  c           
   
   C   s   t  }|| }|d }d}z5|d kr<tjj|djddgd }g }|D ]}t|}|| q&tdd|id	W S td
ddW S  t	yk }	 zt
d t|d|t|	 tdt|	iW  Y d }	~	S d }	~	ww )Nr@   zuserplan/userplans/r   rA   r   r   Tr   rG   rv   Frw   rx   r  rs   rM   )r)   rN   r-   rO   rP   rQ   rS   r   r   rT   r   r  r<   rU   )
rV   rW   r   rX   r#  r   r   r   r   r\   r]   r]   r^   	userPlans  s&   

r]  c              
   C   s6  t  }|| }|d }t| jd}|}d}zY|d krktjj||d dd	d}|
 rctjj||d dd}t d}	t|	 t tdd }
|
d}d	|_|  td
ddW S tdddW S tdddW S  ty } ztd t|||t| tdt|iW  Y d }~S d }~ww )Nr@   r`   zuserplan/canceluserplan/rh   rA   r   rf   monthsr   Tz#User Program Cancelled Successfullyrx   FzNo Program has been Subscribedrw   r  rM   )r)   rN   ry   rz   r{   r|   r-   rO   rP   rQ   rR   r   r:   r   r   r}   r;   r   r   r   rT   r   r  r<   rU   )rV   rW   r   rX   r   r"  r#  r%  r   r   r   ri   r\   r]   r]   r^   cancelUserPlan  s4   


r`  c              
   C   s  t  }|| }|d }t| jd}|}d}z||d krtjj||d dgd	d}|
 rtjj|dd	 }t|d	 |
 ra|D ]}	t|	}
|
d }tjj|d
}d|_|  qHtjj||d ddgd}t d}d|v rt d|_t tdd }|d}||_t| t tdd }|d}t d}tt|d }|dk rd}||_d|_d|v r|d dkr|d |_|  tdd|||dW S tjj||d dd	 }|
 r|D ]
}t|}|d }qtjj||d ddgd}t d}d|v r/t d|_t tdd }|d}||_n|j}t| t tdd }|d}t d}tt|d }|dk rZd}||_d|_d|v rq|d dkrq|d |_|  tjj|d
}tdd|||dW S tdddW S tdddW S  ty } ztd t|||t| td t|iW  Y d }~S d }~ww )!Nr@   r`   zuserplan/activateuserplan/rh   r   r   rA   rB   Z	zfsdfsdfsro   r   rf   Z	firstPlanrc   rd   r^  r   r   r   rr   rs   Tz#User Program Activated Successfully)rG   rH   rg   ri   rk   r   zUser Program Already ActivatedzNo Active Planrx   Frw   r  rM   )r)   rN   ry   rz   r{   r|   r-   rO   rP   rQ   rR   r}   rS   r   r   r   r:   r   r   rg   r;   ri   r   rU   rk   rr   r   rT   r   r  r<   )rV   rW   r   rX   r   r"  r#  r%  Z
PrePlanObjplZplObjZplIdZupdateplanObjr   r   Z	renewDaysZ	renewDater   ri   r(  r   planValrZ   r[   r   ZuserplanValr\   r]   r]   r^   activateUserPlan  s   














rc  c           
   
   C   s"  t  }|| }|d }t| jd}|}d}zO|d kratjj||d dd	d}|
 r^tjj||d dd}d|v rL|d dkrL|d d	 |_|d
 |_|  tddddW S W d S tdddW S  ty }	 ztd t|||t|	 tdt|	iW  Y d }	~	S d }	~	ww )Nr@   r`   zuserplan/userplanseasondate/rh   rA   r   Zseason_daters   r   rl   TzSeason Date Set Successfully	   )rG   rH   ZseasonMicroCycleIDFrw   rx   r  rM   )r)   rN   ry   rz   r{   r|   r-   rO   rP   rQ   rR   r   rj   rl   r   r   rT   r   r  r<   rU   )
rV   rW   r   rX   r   r"  r#  r%  r   r\   r]   r]   r^   UserPlanSeasonDate3  s2   

	
re  c              
   C   s  t  }|| }|d }t| jd}|}d}z|d krd|v r'|d }n)tjddd}|D ]}	t	|	}
t
|
 |d |
d ksK|d |
d krO|
d }q1tjj|ddd	d}t  d
}|D ]}t	|}qgtjj||d	 |d |d |d |d ||d}|  tdddW S tdddW S  ty } ztd t|||t| tdt|iW  Y d }~S d }~ww )Nr@   r`   zuserplan/createtest/r   r   exerciseCoderA   rB   rh   rf   r   rC   rh   r   r   r   r   r   r   T$User Test Program Saved Successfullyrx   Frw   r  rM   )r)   rN   ry   rz   r{   r|   r5   rO   rQ   rS   r}   r-   rP   r   r  r:   r   r.   r   r   r   rT   r   r  r<   rU   )rV   rW   r   rX   testInfor"  r#  exIdexerciseDetailsrZ   objuserplanpager   r   rF  userTestPlanDetailsr\   r]   r]   r^   createUserTestP  sP   

 


ro  c                 C   s  t  }|| }|d }t| jd}|}d}zt|d  |d kr|d D ]}d|v r3|d }n)tj	ddd}	|	D ]}
t
|
}t| |d |d ksW|d |d kr[|d }q=tjj|dd		d
d}t  d}t| |D ]}t
|}qwtjj||d	 }| rtjj||d}|d
 |_|d |_|d |_|d |_|d |_t |_|  q(tjj||d
 |d |d |d |d t |d}|  q(tdddW S tdddW S  ty } zt d t!|||t"| tdt"|iW  Y d }~S d }~ww )Nr@   r`   zuserplan/createtestnewr   r   r   rf  rA   rB   rh   rf   r   rC   rC   r   r   rg  Trh  rx   rw   rG   meaasger  rM   )#r)   rN   ry   rz   r{   r|   r}   r5   rO   rQ   rS   r-   rP   r   r  r:   r   r.   rR   r   rh   r   r   r   r   r   r   r   r   r   rT   r   r  r<   rU   )rV   rW   r   rX   	testInfosr"  r#  ri  rj  rk  rZ   rl  rm  r   r   rF  	tmaxExisttmaxObjrn  r\   r]   r]   r^   createUserTestNew~  sj   

 










rw  c              
   C   s  t  }|| }|d }d}d}z|d krtjj|dddd}|D ]}t|}q#|d }	tjj|dddd	d
d}
g }t|
}|
D ]}t|}|d
 |d< |	| qDg }t
jj|	d}tjddddddj|jdddddd d }|D ]}t|}|d dkr|	| q|d dkr|	| qtjdjddgdddddd}g }|D ]}t|}|	| qtd|j|d|||dW S td d!d"W S  ty } ztd# t|||t| td$t|iW  Y d }~S d }~ww )%Nr@   r>   userplan/userTestExercise/rA   rB   rh   rD   r   r   r   r   	tmaxValuero   Exercise__idr   r   r   r   r   Z8session_id__microcycle_id__mesocycle_id__period_id__planexerciseName__idexerciseName__exerciseNamer   
Videos__idid__inexerciseDesc	equipmentvideo_idvideo__videoLinkTrG   programTyperJ   	isTmaxSetr   exArr	mainExArrFrw   rx   r  rM   )r)   rN   r-   rO   rP   rQ   rS   r.   lenr   r   r   r   r   r@   order_byr5   r   r   rT   r   r  r<   rU   )rV   rW   r   rX   r"  r#  rm  r   rF  r!  rn  dataArrrJ   r  r   r   r   r   mainExr  mexmexObjr\   r]   r]   r^   userTestExercise  sR   

<
&
r  c           Q      C   s  t  }|| }|d }d}d}	z|| }|d }|d k	rtjj|dddd}| 	r	|D ]
}t|}t| q3t	jj|dddd|d dd	d
dd}	t|	d |	 rtjj|dd}
|
D ]}t|}|d }tjj
|d}d|_td |  qgtd tddddW S tjj|d}t  d}t }| 	r |ddd}|D ]}t|}t| |d d|d< qt|d  ||d krtjj||d |d dd}| rt|dkr|D ]+}t|}|d d|d< t|d}t|d d}|tdd }t|| j}qtjj||d |d |d d}| rtjj||d |d dd}|D ]}t|}qE|d d|d< t|d}t|d d}|tdd } t|| j}!|!dks||!dkrtjj||d |d |tdd dtd}"t|"d d |d }#|d }$tjj||#|$|tdd |"d d d!d"d#d$d%d&d'd(d)dd*d+d}%t|%d, g }&|%D ]}t|}|d d|d< t|d}t|d d}|tdd }'t|d!  d}(d})t	jj||#|$dd-d.d/d0ddd1}*|* r|*D ]}+t|+},q|,d1 d}-t  d}tjj||#|$|d! |d d2d3 }.|. rPt|d! d4  n|d! d5kr|,d- dkrtd6 td7|d!< tjj||#|$|d! d8d!d"d#d$d%d&d'd(d)dd*d+d9d d }/|/ r|/D ]}0t|0}1q|1d) |d)< |1d% |d%< |1d" |d"< |1d# |d#< |1d* |d*< |1d+ |d+< d}(|d! d7kr#|(dkr#td: td5|d!< tjj||#|$|d! d8d!d"d#d$d%d&d'd(d)dd*d+d9d d }2|2D ]}3t|3}4q|4d) |d)< |4d% |d%< |4d" |d"< |4d# |d#< |4d* |d*< |4d+ |d+< |d! d;kr|,d. dkrtd< td=|d!< tjj||#|$|d! d8d!d"d#d$d%d&d'd(d)dd*d+d9d d }5|5 r|5D ]}6t|6}7qc|7d) |d)< |7d% |d%< |7d" |d"< |7d# |d#< |7d* |d*< |7d+ |d+< d})|d! d=kr|)dkrtd> td;|d!< tjj||#|$|d! d8d!d"d#d$d%d&d'd(d)dd*d+d9d d }8|8D ]}9t|9}:q|:d) |d)< |:d% |d%< |:d" |d"< |:d# |d#< |:d* |d*< |:d+ |d+< t|d!  t|| j}t|d? |dkr|d% dks"|d" d@k s"|d# d2k r|d" dAkr~|d" d@k r~|d! };t|d) }<d2}=d@}>dB}?t jdCdDdEdFdG}@t| |@D ]+}t|}A|d! |AdC krz|&!|;|<|=|>|?|AdD |AdE |AdF |AdG dH	 tdI qPq|d" dAk r|d# d2kr|d! };t|d) dB }<d2}=d@}>dB}?t jdCdDdEdFdG}@|@D ]'}t|}A|d! |AdC kr|&!|;|<|=|>|?|AdD |AdE |AdF |AdG dH	 qtdJ q|d" dAk r,|d# d2k r,|d! };t|d) }<d2}=d@}>dB}?t jdCdDdEdFdG}@|@D ]'}t|}A|d! |AdC kr(|&!|;|<|=|>|?|AdD |AdE |AdF |AdG dH	 qq|d% dkr|d* dkr|d+ dkrtdK |d$ d7kr[|d$ };t"t|d) dL }<n"|d$ d=krq|d$ };t"t|d) dM }<n|d! };t|d) dB }<d2}=d@}>dB}?t jdCdDdEdFdG}@|@D ]'}t|}A|d! |AdC kr|&!|;|<|=|>|?|AdD |AdE |AdF |AdG dH	 qq|d% dkr|d" d@krt|d% dN |d! };t|d) dB }<d2}=d@}>dB}?t jdCdDdEdFdG}@|@D ]'}t|}A|d! |AdC kr|&!|;|<|=|>|?|AdD |AdE |AdF |AdG dH	 qq|d# d2k rc|d! };t|d) }<d2}=d@}>dB}?t jdCdDdEdFdG}@|@D ]'}t|}A|d! |AdC kr_|&!|;|<|=|>|?|AdD |AdE |AdF |AdG dH	 q9q|d! };t|d) dB }<d2}=d@}>dB}?t jdCdDdEdFdG}@|@D ]'}t|}A|d! |AdC kr|&!|;|<|=|>|?|AdD |AdE |AdF |AdG dH	 qqt|| jdkrdOt|'d }Bn	dPt|'d }Btd|Bd|&dQ  W S t  }Ctjj|CdR}Di }Et|D |D rtjj||d |d |CdSd!d"d#d$d%d&d'd(d)dd*d+d}Ft|FdT |FD ]m}Gt|G}H|Hd# d2k s&t|Fdkr|t|Hd!  |Hd! d5kr:dU }I|Hd!< n)|Hd! d;krHdV }I|Hd!< n|Hd! d7krVdW }I|Hd!< n|Hd! d=krcdX }I|Hd!< |Hd# }J|Hd" }Kt#$|J|KdY}Lt#%|L|E|I< qg }&qtddZt| d d[|&|Ed\W S t|| jdkrdOt| d }Bn	dPt| d }Btd|Bdd]W S tjd!d^j|d}Mg }&|MD ]M}t|}A|Ad! };t|Ad^ dB }<d2}=d@}>dB}?t jdCdDdEdFdG}@|@D ]'}t|}|Ad! |dC kr|&!|;|<|=|>|?|dD |dE |dF |dG dH	 qqt  }Ctjj|CdR}Di }Et|D |D rtjj||d |d |CdSd!d"d#d$d%d&d'd(d)dd*d+d}Ft|FdT |FD ]m}Gt|G}H|Hd# d2k sgt|Fdkrt|Hd!  |Hd! d5kr{dU }I|Hd!< n)|Hd! d;krdV }I|Hd!< n|Hd! d7krdW }I|Hd!< n|Hd! d=krdX }I|Hd!< |Hd# }J|Hd" }Kt#$|J|KdY}Lt#%|L|E|I< qSg }&qStddZt|d d[|&|Ed\W S tdd_d2d]W S g }Nd`dadbidadcigi}O|N!|O tdd_d2|NddW S tddedd]W S tddfdd]W S tddfdd]W S tddgdhW S  t&	yB }P zt'(di t)|||t|P tdjt|PiW  Y d }P~PS d }P~Pww )kNr@   r>   rx  rD   r   rh   TrC   	BP_missedSQAT_missed	OP_missed	DL_missedr   r  r  r  r  herero   r   z in here in updating the userplan#here In the Completion Of ExcersiceF"Your Starter Program Got CompletedrG   rH   ZCompletedStatusrf   rC   rh   r   testDaterd   r   rC   rh   r   createdDate__ltr   rA   userSessionuserSession__max
0987654321rC   rh   r   r  r  r   	totalReps	totalSetsnextExerciseNamemissedexerciseDater   rX   exerciseWorkWeight	recovered
progressedPREVIOUS EXERCISESBP_progressedSQAT_progressedOP_progressedDL_progressedr   r   rC   rh   r   r   createdDate__gtr   ExistsBENCH PRESSin Here1OLYMPIC PRESS)rC   rh   r   r   -idin Here2SQUATIN HEre3	DEAD LIFTIN HEre4
differencer  rd  r  exerciseTypeNameexerciseTypeCodeZexcercisetypevideosexerciseTypeDescr  )	rN  r   setsreps	reps_setsexCodeexVideoexDescexEquipJUST MISSED CASEzBADLY MISSED CASECheck where I am{Gz?皙?IN here TO test7Your session is over. <br/> Next workout will start on 1Break day. <br/> Your next workout will start on rG   rH   r   mainArr)createdDate__gterC   rh   r   r  TODAYS EXERCISESbpsqopdlcompletedSetscompletedReps Your next workout will start on r  rG   rH   r   mainZcompletedJsonrG   rH   r   r   User Is ready for the testPlanworkoutexercisenameBPSquat)rG   rH   r   WorkOutz Please Check Excersise StartDatePlease Subscribe for a Planrw   rx   r  rM   )*r)   rN   r-   rO   rP   rQ   rR   rS   r}   r0   r   r   r   r   r   r  r:   r   r   r.   r  r~   r   rX  re   r/   ZUserSessionr  r   r  rU   r   r4   r   roundry   dumpsrz   rT   r   r  r<   )QrV   rW   r   rX   r"  r#  r   va1rl  plancyclecompletedZcompleteuserplanupZ	updetailsZupIdZupdateuserplanrm  r   time_thresholdr   rF  usertestpageTestPObjd1d2Zd4difDaysuserexcersisepagesessDetailsZsesZsessValsessd1sessd2sessd3sessdifDayssessionInfort   userpIduserexcersisesr  d3	nextCheck
nextScheckcycleDetailsrZ   valuecycvalue	todayDoneexcersiceworkweight2ww2workW2excersiceworkweightwwworkWexcersiceworkweight4ww4workW4excersiceworkweight1ww1workW1rN  
workweightrR  r  
repsPerSetexTypeDetailsdataObj1rH   r   ZtodaySessionObjcompletedArrtodaysexersisesuxuxecompletedExNamer  r  completeJsonsession1excersicArrr  r\   r]   r]   r^   checktoTestPlan  s  




(


 
 
 0F

$
$
B
BB
B

*...*....
>
$.
>
$


r  c           :      C   s  t  }|| }|d }t| jd}|}d}z|d kr&t  	d}t
jj|dddd}|D ]}	t|	}
q7|d d	 dkrtjj||
d |
d d
tdtd}|d d kr|d 	d|d< t|d}t|d d}||kr|d d }n|d }nd}tjj||
d |
d |d d |d d |d d	 |d d dddd||d d d}|  |j}|j}|j}|j}|j}nNtjj|d d ||
d |
d dddddd }|d }|d }|d }|d }|d t|d d  }|d d }tjj|d}||_||_|  tjj||
d ddddd|||d d	 |d d d}|  tjddddd j|
d d!dd" d}|d# }t!||d d$ |d }|d" }|d }|d }|d" }|d d	 d%kr|d&k r$tjj|d} d| _"|   t#jj||
d |
d d
d}!|!$ r|!D ]}"t|"}#|#d }$qt#jj|$d}%||%_%|
d |%_&|
d |%_'| j|krd|%_(n| j|krd|%_)n| j|krd|%_*n	| j|krd|%_+|%  n8t#jj||
d |
d d
}&| j|krd|&_(n| j|krd|&_)n| j|krd|&_*n	| j|kr d|&_+|&  tjj|d d ||
d |
d ddd'd(d)d*dd+j,d,d- d.}'t#jj|d/d}!|!D ]}(t|(}#|#d }$qRt!d0|' |'rt!|'d d1 |'d })|)d' }*t!|*d2 |)d( }+|)d) },|)d* }-t!|-d3 t!|t|d d |*d4 |d&kr|*d,krt|d d t|-krt!d5 tjj|d}.t!|.d6 d|._"d|._-|.  t#jj|$d}/|.j|krd|/_.n|.j|krd|/_/n|.j|krd|/_0n	|.j|krd|/_1|/  n|d&kr.|*d,kr.t|d d t|-k r.t!d7 tjj|d}0t!|0d6 d|0_"d|0_2|0  n|d&kr|*d,kr|+d,krt|d d t|-krtjj|d}1d|1_3d|1_-d|1_"t#jj||
d |
d d
d8d9}2|2D ]}3t|3}4qm|d d |kr|4d8 d,krd:|1_4n||1_4n|d d |kr|4d9 d,krd:|1_4n||1_4|1  t#jj|$d}5|1j|krd|5_5n|1j|krd|5_6n|1j|krd|5_7n	|1j|krd|5_8|5  t#jj|d/d;d<d=d>}6|6$ r|6D ]}7t|7}8q|8d; d,kr|8d< d,kr|8d= d,kr|8d> d,krt!d? t9d@dAdBW S t9d,dCdBW S t9d@dDdBW S  t:yV }9 zt;<dE t=|||t>|9 t9dFt>|9iW  Y d }9~9S d }9~9ww )GNr@   r`   rx  rf   rA   rB   rh   exerciseZ
currentSetr  r  r   r  ZcreatedDate__maxrN  ZcompletedSetsRepsr   rj  )rC   rh   r   r   r  r  r  	period_idmesocycle_idmicrocycle_id
session_idr  r   )r   rC   rh   r   r  r  r   r   Zreps_sets_donero   )rC   rh   r  r  r  r  r   userexercise_idsetExercise	setNumberr  PlanSession__idMicrocycle__idPlanMesocycle__idPlanPeriods__idr	  ,session__microcycle__mesocycle__period__plantransitExerciser   ZdataBaseIdsr   r  r  r  r  r  	regressedT)r'  z-exerciseDaterD   z"here Iam In the Previous Excersicezhere I Comezmissed ValuesZprevWWzCHECKING THE CONDITIONSzin HERE TO RECOVERzIN HEREzin HERE TO Updater  r  rs   r  r  r  r  r  Fr  rx   zrecords Inserted Sucessfullyrw   r  rM   )?r)   rN   ry   rz   r{   r|   r   r  r:   r   r-   rO   rP   rQ   rS   r/   r  r   r~   r   r   r@   r   r   r  r  lastr   r   r1   r   r   r  r}   r  r0   rR   rC   rh   r   r  r  r  r  excluder  BP_recoveredSQAT_recoveredOP_recoveredDL_recoveredr'  r  nextExerciseName_idr  r  r  r  r   rT   r   r  r<   rU   ):rV   rW   r   rX   excersiseInfor"  r#  r   rm  r   r   ZexsessionInfor  r  ZsessIdZExersiceDetailsZlastExIdrj  exNameZexSetr  ZExerciseInfor  ZexerciseObj
SetDetails	exDetailsex1	exercise1	exercise3ex2	exercise2	exercise4ZexerciseMissedZplanCyclevaluespdr   ZplancycleIdZ	planCycleZplancycleDetailsZExercisePreviousInfoObjZpcdataZExercisePreviousInfoZ
missedFlagZrecoveredFlagZprogressedFlagZpreWorkWeightZexerciseRecoveredZplancycleRecoveryZexerciseUpdateZexerciseProgressedZ
cyclevalueZcvZcycZplancycleProgressr  ZcyclceZcyclesr\   r]   r]   r^   createExcersiseSession\  s  


*





6

.
 



D


.

.

8"
8
r:  c           
   
   C   sl  t  }|| }|d }t| jd}|}d}ztt|d  |d krtjj	|d}|j
dkrWt|d dkrAt|d d }n|d d	krOt|d d
 }td|dW S |j
d	krt|d dkrmt|d d
 }n|d d	kr{t|d d }td|dW S W d S tdddW S  ty }	 ztd t|||t|	 tdt|	iW  Y d }	~	S d }	~	ww )Nr@   r`   zuserplan/testforTest/strengthrD   rA   r   r   r   r  T)rG   r  r  Frw   rx   r  rM   )r)   rN   ry   rz   r{   r|   r}   r    rO   r   genderr   r   rT   r   r  r<   rU   )
rV   rW   r   rX   r/  r"  r#  r<  r   r\   r]   r]   r^   testForTestProgram)  s<   



r=  c              
   C   s  t  }|| }|d }d}d}z|dkrtjj|ddd}|D ]}t|}q$tjdj||d |d dd	d
ddd}	g }
g }g }g }g }|	D ]}t|}|d
 dkrt	t	t
|d d t
|d  }t	t	|d t
|d  d }t	|d t
|d  }|| }dt
|d  t
|d  }|d }||d< ||d< ||d< ||d< ||d< ||d< || qN|d
 dkr&t	t	t
|d d t
|d  }t	t	|d t
|d  d }t	|d t
|d  }|| }dt
|d  t
|d  }|d }||d< ||d< ||d< ||d< ||d< ||d< || qN|d
 dkrt	t	t
|d d t
|d  }t	t	|d t
|d  d }t	|d t
|d  }|| }dt
|d  t
|d  }|d }||d< ||d< ||d< ||d< ||d< ||d< || qN|d
 dkrt	t	t
|d d t
|d  }t	t	|d t
|d  d }t	|d t
|d  }|| }dt
|d  t
|d  }|d }||d< ||d< ||d< ||d< ||d< ||d< || qNtddd   W S t|
 td||||d!W S td"d#d W S  tyA } ztd$ t|||t| td%t|iW  Y d }~S d }~ww )&Nr@   r>   zuserplan/exercisedetails/rs   rD   rh   utility_exercise__idr  r   exerciseId__exerciseNamer  r  r  镲?  ʡE@nB_?ormtotalTonnageavgWtrelavgwt	totalworkcalr  sh|?@r  #~j@r  M@TzExercise does not foundrx   )rG   ZbenchZsquatZolympicZdeadliftFrw   r  rM   )r)   rN   r-   rO   rP   rQ   rS   r/   r   r   r   r   r   r}   rT   r   r  r<   rU   )rV   rW   r   rX   r"  r#  rm  r   r   
uservaluesr  ZbenchpressArrZsquatArrZolympicpressArrZdeadliftArrdt1rF  rD  rE  avgwtrG  rH  rI  r\   r]   r]   r^   completedExcerciseDetailsM  s   


.
$ $ $ $ 
rP  c              
   C   s  t  }z|| }|d krt }d}|| t|}g }g }g }|D ]}	t|	}
|
d }tjj	|d
 }|D ]}t|}|
d dkr|i d|
d d|
d	 d
|
d
 d|
d d|
d d|d d|
d d|
d d|
d d|
d d|
d d|
d d|
d d|
d d|
d d|
d  q<|
d dkr|i d|
d d|
d	 d
|
d
 d|
d d|
d d|d d|
d d|
d d|
d d|
d d|
d d|
d d|
d d|
d d|
d d|
d dd q<d}i |
d< tjj|
d
 d}|rc|jdkr|d 7 }|jdkr$|d!7 }|jdkr.|d"7 }|jdkr8|d#7 }|jdkrB|d$7 }|jdkrL|d%7 }|d&d  }|j|j|j|j|j|jd'|
d< |i d|
d d|
d	 d
|
d
 d|
d d|
d d|d d|
d d|
d d|
d d|
d d|
d d|
d d|
d d|
d d|
d d|
d d(||
d) |
d* |
d d+ q<q&td|||d,W S W d S  ty } ztd- td.t|iW  Y d }~S d }~ww )/N7SELECT * FROM utility_exercise WHERE exerciseStatus = 1r  ro   accessLevelr   r0  r   r  rf  r@   r  r  r  r  exVideos	videoLinkolympicLiftpreExInstructionspostExInstructionsweightExistsdistanceExists
timeExists
repsExistsexAbilitiessetInstructionsSkillskillTrs   r   r   , Weight, Reps, Time
, Distance, Speed, Heightr   r  r  r   distancespeedheightdependenciesspeedExistsheightExistsrl  rm  r   rG   defaultExArrr  ZskillArrr  rM   )r)   rN   r   cursorexecutedictfetchallrS   r6   rO   rP   rQ   r   r9   r   	maxWeightmaxRepsmaxTimemaxDistancemaxSpeed	maxHeightr   rT   r   r  rU   )rV   rW   r   xr  resultQueryr  rp  skilArrr   rF  videoIdvideosrZ   r[   stringadvExDetailsr\   r]   r]   r^   excersiceTypeDetails  s`   




"'
r  c              	   C   s  t  }d}|| t|}g }g }g }|D ]}t|}|d }	tjj|	d }
|
D ]}t|}|d dkr|	i d|d d|d	 d
|d
 d|d d|d d|d d|d d|d d|d d|d d|d d|d d|d d|d d|d d|d  q-|d dkr|	i d|d d|d	 d
|d
 d|d d|d d|d d|d d|d d|d d|d d|d d|d d|d d|d d|d d|d dd q-d}i |d< t
jj|d
 d}|rT|jdkr|d 7 }|jdkr|d!7 }|jdkr|d"7 }|jdkr)|d#7 }|jdkr3|d$7 }|jdkr=|d%7 }|d&d  }|j|j|j|j|j|jd'|d< |	i d|d d|d	 d
|d
 d|d d|d d|d d|d d|d d|d d|d d|d d|d d|d d|d d|d d|d d(||d) |d* |d d+ q-qtd|||d,S )-NrQ  r  ro   rR  r   r0  r   r  rf  r@   r  r  r  r  rS  rT  rU  rV  rW  rX  rY  rZ  r[  r\  r]  r^  r_  Trs   r   r`  ra  rb  rc  rd  re  rf  r   rg  rk  rl  rm  rn  ro  )r   rq  rr  rs  rS   r6   rO   rP   rQ   r   r9   r   rt  ru  rv  rw  rx  ry  r   )rV   rz  r  r{  r  rp  r|  r   rF  r}  r~  rZ   r[   r  r  r]   r]   r^   excersiceTypeDetailsPDC  sL   


"r  c           
      C   s  t  }d}|| t|}g }g }g }|D ]}t|}|d }	|d dkr|i d|d d|d d|d	 d
|d d|d d|d d|d d|d d|d d|d d|d d|d d|d d|d d|d d|d d|d  q|d dkr|i d|d d|d d|d	 d
|d d|d d|d d|d d|d d|d d|d d|d d|d d|d d|d d|d d|d d|d |d dd qtd|||dS )Nz:SELECT * FROM utility_newexercise WHERE exerciseStatus = 1r  rR  r   r0  r   r@   r  r  r  r  rV  rW  rX  rY  rZ  r[  r]  stressFactorexCoeffiecientexGroupexMainGroupflowTyper\  r^  T)r  r_  ro  )r   rq  rr  rs  rS   r   r   )
rV   rz  r  r{  r  rp  r|  r   rF  r}  r]   r]   r^   newexcersiceTypeDetailsPDC  s    
r  c              
   C   s  t  }|| }t| |d }d}d}t| zM|d kr^tjdj|dddddd	d
d}tjdj|dddddd	d
d}|D ]}t|}	qE|D ]}
t|
}qNt	d|	|dW S t	dddW S  t
y } zt|||t| t	dt|iW  Y d }~S d }~ww )Nr@   r>   userplan/getPlanDates/r	  rA   rB   rg   endDater   r  rh   r   T)rG   ZActivePlanDetailsZPreviousPlanDetailsFrw   rx   rM   )r)   rN   r}   r-   rO   r   rP   rQ   rS   r   rT   r<   rU   )rV   rW   r   rX   r"  r#  Z
activeplanZpreviousplanr   rF  Zdatr  r\   r]   r]   r^   getPlanDatesStatus  s,   
&&

r  c           d      C   s  t  }|| }|d }d}d}z|d krtjj|dddd}| r|D ]}t|}q*tjj|d ddd	d
}	g }
g }|	D ]A}t|}t	|d
 d |d	 
dd}t|}|d
 dkrs|d	 
dd}t|}qE|d
 dkr|d	 
dd}t|}
qEtjj|dddd|d ddddd}| rtddddW S tjj|dd}t  d}| r|ddd}|D ]}t|}|d d|d< q|d }|d }tjddddd j|d!d"d#d$d%d}|d& }|d" }|d% }|d$ }|d# }|d }|d" }|d% } |d$ }!|d# }"tjj||d |d d'd}#t }$|# rt|#d(kr|#D ],}t|}%|%d d|%d)< t|d}&t|%d) d}'|'td(d* }(t|'|& j})q@tjj||||d+ d,}*|* rtjj|||d'd }+|+d d|+d)< t|d},t|+d) d}-|-td(d* }.t|-|, j}/|/d(ks|/d&krmtjj||d |d |$tdd* d,t d-}0t	|0d. d/ tjd0j||||$tdd* |0d. d1d"d2d3d4d5d6d7d8d9dd:d;d<d=d>d?d@dAd}1t	|1dB g }2|1D ]}t|}tjdCj||d@ dDdEdFdGdHdIdJddKdL	}3|3D ]}4t|4}5|5dH }6|5dK }7|6|7 }8q0|d d|d)< t|d}&t|d) d}'|'td(d* }(d}9d}:tjj|||d'dMdNdOdPdddQ};|; r|;D ]}<t|<}=q|=dQ d}>t  d}tjj||||d" |d+ dRdS }?|? rt	|d" dT  n|d@ |kr-|=dM dkr-t	dU tjj||||dVd"d2d3d4d5d6d7d8d9dd:d;d@dWd d }@|@ r+||d@< ||d"< |@D ]}At|A}Bq|Bd9 |d9< |Bd5 |d5< |Bd2 |d2< |Bd3 |d3< |Bd: |d:< |Bd; |d;< |Bd@ |d@< d}9|d@ |kr|9dkrt	dX tjj||||dVd"d2d3d4d5d6d7d8d9dd:d;d@dWd d }C|C r||d@< ||d"< |CD ]}Dt|D}Eql|Ed9 |d9< |Ed5 |d5< |Ed2 |d2< |Ed3 |d3< |Ed: |d:< |Ed; |d;< |Ed@ |d@< |d@ |kr|=dN dkrt	dY tjj||||"dVd"d2d3d4d5d6d7d8d9dd:d;d@dWd d }F|F r|"|d@< |!|d"< |FD ]}Gt|G}Hq|Hd9 |d9< |Hd5 |d5< |Hd2 |d2< |Hd3 |d3< |Hd: |d:< |Hd; |d;< |Hd@ |d@< d}:|d@ |"kr|:dkrt	dZ tjj||||dVd"d2d3d4d5d6d7d8d9dd:d;d@dWd d }I|I r||d@< | |d"< |ID ]}Jt|J}KqR|Kd9 |d9< |Kd5 |d5< |Kd2 |d2< |Kd3 |d3< |Kd: |d:< |Kd; |d;< |Kd@ |d@< t	|d"  t|'|& j})t	|)d[ |)d(kr|d5 dks|d2 t!|8k s|d3 t!|6k rt	|d\ |D ]?}Lt!|Ld] d&krt!|Ld^ }Mnt!|Ld] dkrt!|d9 t!|Ld^ d_  }M|d2 |Ld` kr+|d2 |Lda kr+|d" }Nt!|d9 |M }O|6}P|8}Q|7}R|2"|Nt#|O|P|Q|R|d< |d= |d> |d? |d@ db
 t	dc q|d5 dkr|d: dkr|d; dkr|d4 d krt	dd t	|d4  |d@ |krp|d4 |krp|}N||d@< t#t!|d9 de }On|d@ |kr|d4 |"kr|!}N|"|d@< t#t!|d9 df }O|6}P|8}Q|7}R|2"|Nt#|O|P|Q|R|d< |d= |d> |d? |d@ db
 q|d5 dkr|d2 dgkrt	|d5 dh |d" }Nt!|d9 |S }O|6}P|8}Q|7}R|2"|Nt#|O|P|Q|R|d< |d= |d> |d? |d@ db
 t	|2di qq|d3 dRk r3|d" }Nt!|d9 }O|6}P|8}Q|7}R|2"|Nt#|O|P|Q|R|d< |d= |d> |d? |d@ db
 q|
D ]X}Tt!|Ld] d&krGt!|Ld^ }Snt!|Ld] dkr^t!|d9 t!|Ld^ d_  }S|d" }Nt!|d9 |S }O|6}P|8}Q|7}R|2"|Nt#|O|P|Q|R|d< |d= |d> |d? |d@ db
 q5qt|'|& jd&krdjt$|(d }Un	dkt$|(d }Utd|Ud(|2dl  W S t  }Vi }Wtjj||d |d |Vdmd"d2d3d4d5d6d7d8d9dd:d;d@d}Xt	|Xdn |X r[|XD ]m}Yt|Y}Z|Zd3 dRk st|Xd(krWt	|Zd"  |Zd@ |krdo }[|Zd"< n)|Zd@ |kr#dp }[|Zd"< n|Zd@ |kr1dq }[|Zd"< n|Zd@ |"kr>dr }[|Zd"< |Zd3 }\|Zd2 }]t%|\|]ds}^t|^|W|[< qg }2qtddtt$|.d du|2|WdvW S t|-|, jd&krdjt$|.d }Un	dkt$|.d }Utd|Ud(dwW S tjdCd"dxd@dAd<d=d>d?j|d}_g }2|_D ]s}t|}tjdCj||d@ dDdEdFdGdHdIdJddKdL	}3|3D ]%}4t|4}5|5dL d&kr|5dH d }6n|5dH }6|5dK }7|6|7 }8|5dL }`q|dA }Nt!|dx dy }O|6}P|8}Q|7}R|2"|N|O|P|Q|R|d< |d= |d> |d? |d@ db
 qt  }Vg }Wtjj||d |d |Vdmd"d2d3d4d5d6d7d8d9dd:d;d@d}Xt	|Xdn |X r|XD ]/}Yt|Y}Z|Zd3 dRk sgt|Xd(kr	 |Zd3 }\|Zd2 }]t%|\|]ds}^|W"|^ qSg }2qStddtt$|(d du|2|WdvW S tddzdRd{W S g }ad|d}d~id}digi}b|a"|b tddzdR|adW S tdddd{W S tdddd{W S tdddW S  t&y }c zt'(d t)|||t$|c tdt$|ciW  Y d }c~cS d }c~cww )Nr@   r>   r  rD   r   rh   r   r  rQ   protocolZprotoId'"rd  r   Tr  r  r  r  r  Fr  r  rA   rB   rf   r   r!  r"  r#  r	  r$  r   r&  ZtransitExercise__exerciseNamer}  r   r  r   r  rd   r   r  r  r  r  ZexerciseId__idr  r  r  r  r  r  r   rX   r  r  r  ZexerciseId__exerciseCodeZexerciseId__excercisevideosZexerciseId__exerciseDescZexerciseId__equipment
exerciseIdr?  r  rz  )r%  exerciseName_idexerciseName_id__exerciseNamer  r   num_of_sets	totalInol	intensitynum_of_reps	extra_setr  r  r  r  r   r   r  r  r  )rC   rh   r   r  r  r  r  r  r  zin here for testingZtmaxpercentZ	tmaxvalued   ZminRepsru  )
rN  r   r  r  r  r  r  r  r  rj  r  r  r  r  r  r  Zhjsjsr  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  )rG   rs  r   r  r  r  r  )rG   rs  r   r  r  rw   rr  r  rM   )*r)   rN   r-   rO   rP   rQ   rR   rS   r   r}   replacery   rz   r0   r   r   r  r:   r   r   r   r  r.   r   r  r~   r   rX  re   r/   r(  r  r   r   r   r  rU   r  rT   r   r  r<   )drV   rW   r   rX   r"  r#  r   r  rl  ZprotocolDetailsZprogressionvaluesZregressionvaluesptZprotoObjZ
rulevaluesrulesrQ   r  rm  r   r   rF  rt   r  r2  r3  r4  Zex1NameZex3Namer5  r6  r7  Zex2NameZex4Namer8  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ZplanExDetailsseZsetValr  Zreps_per_setr  r  r  r  rZ   r  r  r  r  r   r  r  r  r  r  r  r  r  r	  r
  regZregtmaxValuerN  r  rR  r  r  ZprotmaxValueprorH   r   r  r  r  r  r  r  r  r  r  r  r  r  r\   r]   r]   r^   checkToPlanBuilder3  s`  





(
. 

0X

0$
$
@
@
@
@


2

$88<8
+<<@

$(08@

	$


r  c                 C   st  t  }z|| }t| jd}|d }d}|dkrtjj|d	dd}|
 rtjdj|d	dd	d
ddddddd
dd}d|v rb|d dkrb|d dkrb|j|d d}d}d|v r||d dkr||d dkr||j|d d}d}d|v r|d dkr|d d kr|j|d d}d}d|v r|d dkr|d d kr|j|d d}d}|
 rtt}g }	g }
g }g }g }|D ]}t|}ttt|d	 d t|d	  }tt|d	 t|d
  d }|d
 dkrt|d t|d
  }nd}|dkr|| }nd}|d d t|d	  t|d
  }|d }||d < ||d!< ||d"< ||d#< ||d$< ||d%< |d  |d! |d" |d# |d$ |d% |d |d |d |d |d	 |d
 |d d&|d'< |
|d'  ||d  |d'  q	 td|d(W S tdd)|d*W S tdd+d,W S W d S  ty } ztd- td.t|iW  Y d }~S d }~ww )/Nr`   r@   Frs   rD   rh   r>  r   r  r  r  r?  r  r  r  exerciseId__workFormularj  r   0)r   Trt   r   	from_date)ZexerciseDate__gteto_date)ZexerciseDate__lter@  rA  皙#@rC  rD  rE  rF  rG  rH  rI  rD  rE  rF  rG  rH  rI  rj  r0  r  r  r  r  	sessionIdsessionDetailsrG   rk  No Exercise detailrG   rH   comboNo Planrx   r  rM   )r)   rN   ry   rz   r{   r|   r-   rO   rP   rQ   rR   r/   r   r  collectionsdefaultdictlistrS   r   r   r   r   rT   r   r  rU   )rV   rW   r   userInforX   r  rm  rM  rk  actualExDatabpArrsqArropArrdlArrrN  rF  rD  rE  rO  rG  rH  rI  r\   r]   r]   r^   excerciseDetailsJson  s   


4    

$ 

$$
<
r  c                 C   s  t  }z;|| }t| jd}|d }|dkr=tjj|dd	dd}|
 r5|D ]}t|}q/tjdd	j|d
	ddddddddddddd}d}|
 r-tt}	g }
g }g }g }g }|D ]}t|}|d }ttt|d d t|d  }tt|d t|d  d }|d dkrt|d t|d  }nd}|dkr|| }nd}|d d t|d  t|d  }|d }||d< ||d< ||d< ||d< ||d< ||d< |d |d |d |d |d |d |d |d |d |d |d |d |d d |d!< ||d!  |	|d  |d!  qj	 td"|	|d#W S td$d%d&W S td$d'd&W S W d S  ty_ } ztd( td)t|iW  Y d }~S d }~ww )*Nr`   rC   rs   rA   rB   rh   r@   r>  r   rD   r   r  r  r  r?  r  r  r  r  rM  r@  rA  r   r  rC  rD  rE  rF  rG  rH  rI  r  r  T)rG   rk  r   Fr  rx   rK   r  rM   )r)   rN   ry   rz   r{   r|   r-   rO   rP   rQ   rR   rS   r/   r   r  r  r  r  r   r   r   r   rT   r   r  rU   )rV   rW   r   r  rX   rm  r   r   rM  rk  r  r  r  r  r  rN  rF  rD  rE  rO  rG  rH  rI  r\   r]   r]   r^   customerEexcerciseDetailsJson  sp   



8

$ 
$$
4
r  c                 C   s  t  }z8|| }|d }|dkr5t d}tjj|dddd}|	 r-|D ]}t
|}q-tjdj||d |d |d |d	 d
ddddddddd	dd}|	 r%t| t|d i }	g }
g }g }g }g }|D ]}t
|}|d dkr!ttt|d d t|d  }tt|d t|d  d }t|d t|d  }|| }dt|d  t|d  }|d }||d< ||d< ||d< ||d< ||d< ||d< |d |d |d |d |d |d |d |d |d |d |d |d |d d|d < ||d   |d |d |d!|	|d < qu|d d"krttt|d d t|d  }tt|d t|d  d }t|d t|d  }|| }d#t|d  t|d  }|d }||d< ||d< ||d< ||d< ||d< ||d< |d |d |d |d |d |d |d |d |d |d |d |d |d d|d < ||d   |d |d |d!|	|d < qu|d d$krkttt|d d t|d  }tt|d t|d  d }t|d t|d  }|| }d%t|d  t|d  }|d }||d< ||d< ||d< ||d< ||d< ||d< |d |d |d |d |d |d |d |d |d |d |d |d |d d|d < ||d   |d |d |d!|	|d < qu|d d&krttt|d d t|d  }tt|d t|d  d }t|d t|d  }|| }d't|d  t|d  }|d }||d< ||d< ||d< ||d< ||d< ||d< |d |d |d |d |d |d |d |d |d |d |d |d |d d|d < ||d   |d |d |d!|	|d < qu|	D ]
}|
|	|  qtd(|
d)W S td*d+d,W S td*d-d,W S td*d.d,W S  ty\ } ztd/ td0t|iW  Y d }~S d }~ww )1Nr@   rs   rf   rA   rB   rh   r>  r   z	 23:59:59)rC   rh   r   r  r  r   r  r  r  r?  r  r  r  Z
todaysDater  r@  rA  rB  rC  rD  rE  rF  rG  rH  rI  r  r  )rj  r0  r  r  rJ  r  rK  r  rL  Tr  Fr  rx   rK   zUser Logged outr  rM   )r)   rN   r:   r   r   r-   rO   rP   rQ   rR   rS   r/   r   r  r}   r   r   r   r   rT   r   r  rU   )rV   rW   r   rX   r   rm  r   r   rM  rk  r  r  r  r  r  rN  rF  rD  rE  rO  rG  rH  rI  r\   r]   r]   r^   todyasexcerciseDetailsJson.	  s   



J


$ $
$ $
$ $
$ X
r  c                 C   s  t  }|| }|d }t| jd}|}d}z|dkr-g }|d }|D ]}	t }
dt|	d  }t	| |

| t|
}|D ]"}t|}|d }|d }|d	 }|d
 }|d }|d }|d }qFtjj|	d |dd}|j}|j}t	| tjj|||||||||d	\}}d|	v r|	d d kr|	d dkr|	d dkr|	d |_d|	v r|	d d kr|	d dkr|	d dkr|	d |_d|	v r|	d d kr|	d dkr|	d dkr|	d |_d|	v r|	d d kr|	d dkr|	d dkr|	d |_d|	v r|	d d kr|	d dkr|	d dkr|	d |_|	d |_|	d |_|jd u r-d}n|j}|t|	d  |_|  |j}tjj||||||||	d ||||	d |	d |	d |	d d}d|	v r~|	d d kr~|	d dkr~|	d dkr~|	d |_ d|	v r|	d d kr|	d dkr|	d dkr|	d |_d|	v r|	d d kr|	d dkr|	d dkr|	d |_d|	v r|	d d kr|	d dkr|	d dkr|	d |_d|	v r|	d d kr|	d dkr|	d dkr|	d |_d|	v r|	d d kr|	d dkr|	d dkr|	d |_|  |!|j q(t"dd |d!W S t"d"d#d$W S  t#y] } zt$%d% t&|||t| t"d&t|iW  Y d }~S d }~ww )'Nr@   r`   zuserplan/createsetdetails/rs   Zset_detailsa  SELECT ps.*, pe.id as planExerciseId, pe.exerciseName_id, pses.id as planSessionId, pmc.id as planMicroId, pm.id as planMesoId, pp.id as planPeriodId FROM `Plan_plansets` ps left join Plan_planexcercise pe on ps.excercise_id = pe.id left join Plan_plansession pses on pe.session_id = pses.id left join Plan_microcycle pmc on pses.microcycle_id = pmc.id left join Plan_planmesocycle pm on pmc.mesocycle_id = pm.id left join Plan_planperiods pp on pm.period_id = pp.id WHERE ps.id = setIdZplanExerciseIdZplanSessionIdZplanMicroIdZ
planMesoIdZplanPeriodIdr  rh   rA   )rh   rC   r   )	rC   rh   r  r  r  r  planexercise_idr   r   r  nullZexerciseDistanceZexerciseTimeZexerciseSpeedZexerciseHeightr  Z	setSerialr   r  ZsetCompletedDate)rC   rh   r  r  r  r  r  
planset_idr   r   r  r  r  setDatesetWorkWeightr   TzSet data entered successfully)rG   rH   r  Frw   rx   r  rM   )'r)   rN   ry   rz   r{   r|   r   rq  rU   r}   rr  rs  rS   r-   rO   r   r@   rh   r/   get_or_createsetIntensityadvDistanceadvTimeri  rj  r  r  r  r   r   r1   r   	setStatusr   r   rT   r   r  r<   )rV   rW   r   rX   Z
setInfoObjr"  r#  ZsetArrZsetInfosZsetInforz  usersr{  r   rF  ZsetIDZplanexerciseIDZ	sessionIDZmicrocycleIDZmesocycleIDZperiodIDZ
exerciseIDZuserPlanObjZ
userPlanIDr!  ZexerciseCreateObjcreatedZperNumberRepsZuserExerciseIDr1  r\   r]   r]   r^   createUserSetData	  s   





,
,
,
,
4


4
4
4
4
4
4

r  c                    s&   dd | j D   fdd|  D S )z'Return all rows from a cursor as a dictc                 S   s   g | ]}|d  qS )r   r]   ).0colr]   r]   r^   
<listcomp>
  s    z dictfetchall.<locals>.<listcomp>c                    s   g | ]	}t t |qS r]   )rS   zip)r  rowcolumnsr]   r^   r  
  s    )descriptionfetchall)rq  r]   r  r^   rs  
  s   
rs  c              
   C   s,  t  }|| }|d }d}d}z]|dkrftjj|dddd}| r^|D ]}t|}q'tjj||d dd	d
d	 }		 |	d u rLt
dddW S t
d|	d |	d
 |	d	 ddW S t
dddW S t
dddW S  ty }
 ztd t|||t|
 t
dt|
iW  Y d }
~
S d }
~
ww )Nr@   r>   zuserplan/userLastSession/rs   rA   rB   rh   )rC   r   r  r  FzNo Program datarx   T)rh   r  set_idr\  zNo Active Programrw   r  rM   )r)   rN   r-   rO   rP   rQ   rR   rS   r1   r(  r   rT   r   r  r<   rU   )rV   rW   r   rX   r"  r#  rm  r   r   Z
lastSetObjr\   r]   r]   r^   userLastSessionID
  s0   

"$
r  c              
   C   s   t  }|| }|d }d}d}z<|dkrEt }d}|| dt| }|| dt| }	||	 d}
||
 td	d
dW S tdddW S  tyt } zt	d t
|||t| tdt|iW  Y d }~S d }~ww )Nr@   r>   zuserplan/deleteUserData/rs   zset foreign_key_checks = 0z-delete from Userplan_usersets where user_id =z1delete from Userplan_userexercise where user_id =zset foreign_key_checks = 1TzData deletedrx   Frw   r  rM   )r)   rN   r   rq  rr  rU   r   rT   r   r  r<   )rV   rW   r   rX   r"  r#  rz  ZforeignKeyChecksZusersetdataZ
userexDataZsetforeignkeychecksr\   r]   r]   r^   deleteUserData:
  s0   





r  c                 C   s  t  }|| }|d }t| jd}|}d}z|dkrtjj|dd	dd}|
 r|D ]}t|}	q0t|	d  tjj||d d		 }
t|
d
 |

 rftjj||d d	}
|d |
_|
  n-t }tjj|d d}tjj||	d |	d |d |j|d |d |d |d	}|  tjj||d d		dd}i }|D ]}t|}|||d < qtdd|dW S tdddW S tdddW S  ty } ztd t|||t| tdt|iW  Y d }~S d }~ww )Nr@   r`   zuserplan/updateTmaxData/rs   rA   rB   rh   r   rq  lllllr   ro   	rC   rh   r   r   r   r   r   r   r   r   TTmax Updatedru   FrK   rx   rw   r  rM   )r)   rN   ry   rz   r{   r|   r-   rO   rP   rQ   rR   rS   r}   r.   r   r   r   r   r   r5   r   r   r   rT   r   r  r<   rU   )rV   rW   r   rX   r   r"  r#  rm  r   r   testplanDatar   ZexerciseDatacreateTplanZtestplanDataUtestPlanObjdtar\   r]   r]   r^   updateTmaxDataV
  s^   





r  c                 C   s  t  }|| }|d }t| jd}|}d}z|dkrtjj|dd	dd}t
|dkr<tjj|d	d	dd}| r|D ]}t|}	qBt|	d  t }
|d
 D ]]}tjj||d d	 }t|d | r|D ]}t|}|d }tjj|d}|d |_|  qpqWtjj||	d |	d |d |d |d |d |d |
d	}|  t|d d qWtdddW S tdddW S tdddW S  ty } ztd t|||t| tdt|iW  Y d }~S d }~ww )Nr@   r`   zuserplan/updateBulkTmaxData/rs   rA   rB   rh   r   r   ZtmaxDatarq  r  r   Z
updatetmaxr   r  Z123445Tr  rx   FrK   rw   r  rM   )r)   rN   ry   rz   r{   r|   r-   rO   rP   rQ   r  rR   rS   r}   r   r   r.   r   r   r   r   r   rT   r   r  r<   rU   )rV   rW   r   rX   r   r"  r#  rm  r   r   r   r   r  rZ   r[   Z
testPlanIDZupdateTplanr  r\   r]   r]   r^   updateBulkTmaxData
  sb   





r  c              
   C   s  t  }|| }|d }d}d}zU|dkr^tjj|dddd}| rV|D ]}t|}q'tjj|d |dd	d
d}	i }
|	D ]}t|}||
|d	 < qAt	d|
dW S t	dddW S t	dddW S  t
y } ztd t|||t| t	dt|iW  Y d }~S d }~ww )Nr@   r>   zuserplan/getUpdatedTmaxData/rs   rA   rB   rh   )r   rC   r   r   r   Tr\  FrK   rx   rw   r  rM   )r)   rN   r-   rO   rP   rQ   rR   rS   r.   r   rT   r   r  r<   rU   )rV   rW   r   rX   r"  r#  rm  r   r   r  r  r  r\   r]   r]   r^   getUpdatedTmaxData
  s2   


r  c              
   C   s  t  }|| }|d }|}d}d}z|dkrtjj|dddd}| r|D ]}t|}	q)tjj|	d d	 }
i }t
  }|
j }t| t| || }|j}t| t||}t| t  d }t| |
j}|| }t }d	t| }|| t|}|D ]}t|}||d
  }|dkr nqtd|dW S tdddW S tdddW S  ty } ztd t|||t| tdt|iW  Y d }~S d }~ww )Nr@   r>   zuserplan/getNextSessionDatars   rA   rB   rh   )r   z5SELECT * FROM Plan_plansession WHERE microcycle_id = restTimer   Tr\  FrK   rx   rw   r  rM   )r)   rN   r-   rO   rP   rQ   rR   rS   r1   r(  r   r  r:   r  r}   re   num_mondays_betweenr   r?  r  r   rq  rU   rr  rs  r   rT   r   r  r<   )rV   rW   r   ZuserIDrX   r"  r#  rm  r   r   ZuserSetDatar  r   ZlastSetDatedeltarZ  Z
numMondaysZtodayNumberZuserSetMicroCycleZnextMicroCyclerz  Z
sessionSqlr{  sessObjr\   r]   r]   r^   getNextSessionData
  s\   





r  c                 C   sD   t ||  jd\}}|  dkr|d S d|   |kr |d S |S )Nr@  r   rA   )divmodre   r?  )startendZ	num_weeks	remainderr]   r]   r^   r    s   r  c                 C   s   g }t jddd}|D ]}t|}t||d< qtjdd}|D ]}t|}t||d< q"tjdd}|D ]}	t|	}
t||
d< q8||d |d |
d d	 td
|dS )Nr@   date_joinedr   num_of_registrationsr   num_of_plansubscriptionsrX   num_of_tmaxtests)r  r  r  TrG   details)	r   rO   rQ   rS   r  r-   r.   r   r   )rV   r  r  r   rv   	userplansr   r   userTmaxr   rv  r]   r]   r^   plansubscriptions  s   r  c              
   C   sD  t  }|| }|d }d}z|d krtjddj|ddddd}| r|D ]}t|}q*|d }|d }	|	dkrt	jj|d	dd
ddd}
g }t
|
}|
D ]}t|}|d |d< || qSg }tjj|d}tjddddddj|jdddddd d }|D ]}t|}|d dkr|| q|d dkr|| qtjdjddgdd
dddd}g }|D ]}t|}|| qtd |j|d |||d!W S td" td#dd$W S td d%d&W S td d'd(W S  ty! } ztd) t|d*|t| td+t|iW  Y d }~S d }~ww ),Nr@   zuserplan/createUserTestingDatar	  r   rA   rB   rh   plan_id__programTyperD   r   r   r   r   ry  ro   rz  r   r   r   r   r   r{  r|  r}  r   r~  r  r  r  r  r  Tr  zTesting Advanced Plan DetailsF)rG   r   zPlease Subscribe to a Planrx   rw   rr  r  r>   rM   )r)   rN   r-   rO   r   rP   rQ   rR   rS   r.   r  r   r   r   r   r@   r  r5   r   r   r}   rT   r   r  r<   rU   )rV   rW   r   rX   r#  rm  r   rF  r!  r  rn  r  rJ   r  r   r   r   r   r  r  r  r  r\   r]   r]   r^   createUserTestingData6  s`   
"
<
&
r  c                 C   s  t  }|| }|d }t| jd}|}d}z|d krtjj|dd	dd}t
  d}t| |D ]
}	t|	}
|
d }q9tjdd	d
dddj|d	ddd}|D ]s}t|}|d }|d }|d }t|d  tjj||d	 }| rtjj||d}||_|
d |_||_|d |_|d |_t |_|  qZtjj||
d |
d |t|d tt|d t| t |d}|  qZt dddW S t dddW S  t!y } zt"#d t$|||t%| t dt%|iW  Y d }~S d }~ww )Nr@   r`   zuserplan/creatingTmaxrA   rB   rh   rf   r   r   r   r   r   r5   )Z?session_id__microcycle_id__mesocycle_id__period_id__plan_id__idZexerciseName_id__idr  ZexerciseName_id__workFormularp  rq  r   rg  Trh  rx   rw   rr  r  rM   )&r)   rN   ry   rz   r{   r|   r-   rO   rP   rQ   r   r  r:   r   r}   rS   r   r   r.   rR   r   rh   r   r   r   r   r   r   r   r   r   r  r   rT   r   r  r<   rU   )rV   rW   r   rX   rt  r"  r#  rm  r   r   rF  rt   ZplanExerciseDetailsr   r   r0  rj  Z	exFormularu  rv  rn  r\   r]   r]   r^   creatingTmaxn  sd   

(








r  c              
   C   s<  t  }|| }|d }d}zg|d krntjj|dddd}t  	d}t
| |D ]<}t|}|d }	g }
tjj|ddd	}| ra|D ]}t|}|
| qKtd
|
d  W S tddd  W S W d S td
ddW S  ty } ztd t|d|t| tdt|iW  Y d }~S d }~ww )Nr@   zuserplan/getUpdatedTmaxrA   rB   rh   rf   rD   r   r   Tr  Fz"you do not have any updated valuesrx   rw   rr  r  r>   rM   )r)   rN   r-   rO   rP   rQ   r   r  r:   r   r}   rS   r.   rR   r   r   rT   r   r  r<   rU   )rV   rW   r   rX   r#  rm  r   r   rF  rt   r   ru  r   rv  r\   r]   r]   r^   getUpdatedTmax  s8   

r  c                 C   s  t  }zV|| }t| jd}|d }d}t }|dkrXtj	j
|dddd }|rPdt|d  d	 t| d
 }d|v ri|d dkri|d dkri|d d kridt|d  d	 t| d }|| t|}	|	rGtt}
g }g }g }g }g }|	D ]}t|}ttt|d d t|d  }tt|d t|d  d }|d dkrt|d t|d  }nd}|dkr|| }nd}|d d t|d  t|d  }|d }||d< ||d< ||d< ||d< ||d< ||d< |d |d |d |d |d |d |d |d |d |d |d |d |d  |d! d"|d#< ||d#  |
|d  |d#  q	 td$|
d%W S tdd&|d'W S tdd(d)W S W d S  tyz } ztd* td+t|iW  Y d }~S d }~ww ),Nr`   r@   Frs   rA   rB   rh   aT  SELECT `Userplan_userexercise`.`exerciseName`, `Userplan_userexercise`.`exerciseWorkWeight`, `Userplan_userexercise`.`totalReps`, `Userplan_userexercise`.`id`, `Userplan_userexercise`.`exerciseId_id`, `utility_exercise`.`exerciseName`, `Userplan_userexercise`.`session_id`, `Userplan_userexercise`.`totalSets`, `Userplan_userexercise`.`intensity`, `utility_exercise`.`workFormula`, `Userplan_userexercise`.`microcycle_id` FROM `Userplan_userexercise`  INNER JOIN `utility_exercise` ON (`Userplan_userexercise`.`exerciseId_id` = `utility_exercise`.`id`) WHERE (`Userplan_userexercise`.`plan_id` = z) AND `Userplan_userexercise`.`user_id` = z ) ORDER BY id DESCmicror   r  z`) GROUP BY `Userplan_userexercise`.`microcycle_id`,`Userplan_userexercise`.`exerciseId_id`  DESCr  r@  r  rA  workFormular  rC  rD  rE  rF  rG  rH  rI  r   r   r  r  r  r  )rD  rE  rF  rG  rH  rI  rj  r0  r  r  r  r  r  micro_idr  Tr  r  r  r  rx   r  rM   )r)   rN   ry   rz   r{   r|   r   rq  r-   rO   rP   rQ   r(  rU   rr  rs  r  r  r  rS   r   r   r   r   rT   r   r  )rV   rW   r   r  rX   r  rz  rm  rM  r{  rk  r  r  r  r  r  rN  rF  rD  rE  rO  rG  rH  rI  r\   r]   r]   r^   appAnalytics  sr   

 , 

 
^2
r  c           	   
   C   s  t  }zk|| }t| jd}|d }t| |dkrld|v rStd tjj	|d d}|
 rPtjj|d d}t|d |_|  tddd	W S W d S tjjt|d |d
}|  tddd	W S W d S  ty } ztd tdt|iW  Y d }~S d }~ww )Nr`   r@   rs   z	id existsro   mealJsonTzMeal updated successfullyrx   )r  rC   zMeal Saved Successfullyr  rM   )r)   rN   ry   rz   r{   r|   r}   r2   rO   rP   rR   r   r  r  r   r   r   rT   r   r  rU   )	rV   rW   r   mealInforX   mealDetailsZmealDetailsObjmealr\   r]   r]   r^   addMealHistory  s8   

r  c           
   
   C   s   t  }zV|| }t| jd}|d }g }t| |dkrRtjj	||d d
 }| rJt| |D ]}t|}|| q6td|dW S td|dW S tdd	d
W S  tyx }	 ztd tdt|	iW  Y d }	~	S d }	~	ww )Nr`   r@   rs   ZmealDate)rC   r   T)rG   mealsFzUser not found)rG   rM   r  rM   )r)   rN   ry   rz   r{   r|   r}   r2   rO   rP   rQ   rR   rS   r   r   rT   r   r  rU   )
rV   rW   r   r  rX   r  r  r  Zmobjr\   r]   r]   r^   getMealHistory+  s,   

r  )urlliburllib.parser   r  django.core.mailr   	django.dbr   Zdjango.formsr   django.httpr   r   django.shortcutsr   django.templater	   django.template.loaderr
   r   Zpip._internal.req.req_installr   ImportErrorZpip.req.req_installry   r   r   r   django.db.modelsr   rest_frameworkr   django.utilsr   ZPlan.modelsr   r   r   r   r   r   r   r   r   r   StratFitr   Subscriber.modelsr   r    r!   Subscriber.serializersr"   rest_framework.decoratorsr#   r$   r%   rest_framework.responser&   Subscriber.Authenticationr'   r(   r)   r*   r+   django.views.decorators.cacher,   ZUserplan.modelsr-   r.   r/   r0   r1   r2   Zpayment.modelsr3   Zutility.modelsr4   r5   r6   r7   r8   r9   r:   dateutil.relativedeltar;   ZSubscriber.viewsr<   utility.viewsr=   r_   r   r   r   r   r=  r  rJ  rV  r[  r]  r`  rc  re  ro  rw  r  r  r:  r=  rP  r  r  r  r  r  r  r  r  r  rs  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r]   r]   r]   r^   <module>   s   0  




#




 

 O

'
-

[





O



+

:

,
  
q
 
K

!

X

0
(



  
l

H

@

u
e


!



3

3


/



5

7



?


