o
    H``                    @   sf  d dl mZ 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 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y_   d d
lmZ Y nw d dlZd dlZd dlmZmZ d dlmZ d dlm Z  d dl!m"Z" d dl#Z$d dl%Z%d dl&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5m6Z6 d dl7m8Z8 d dl9m:Z:m;Z;m<Z< d dl=m>Z> d dl?m@Z@mAZAmBZBmCZCmDZD d dlEmFZF ddlGmHZHmIZImJZJmKZKmLZL d dlMmNZN d dlOmPZPmQZQmRZRmSZSmTZTmUZUmVZV d dlmWZW d dlXmYZY d dlZm[Z[ d dl\m]Z] e:dd ge;eAeDfeFd!d" Z^e:dd ge;eAeDfeFd#d$ Z_e:dd ge;eAeDfeFd%d& Z`e:dd ge;eAeDfeFd'd( Zae:dd ge;eAeDfeFd)d* Zbe:dd ge;eAeDfeFd+d, Zcd-d. Zde:dd ge;eAeDfeFd/d0 Zed1d2 Zfe:dd ge;eAeDfeFd3d4 Zge:dd ge;eAeDfeFd5d6 Zhe:dd ge;eAeDfeFd7d8 Zie:dd ge;eAeDfeFd9d: Zje:dd ge;eAeDfeFd;d< Zke:dd ge;eAeDfeFd=d> Zle:dd ge;eAeDfeFd?d@ Zme:dd ge;eAeDfeFdAdB Zne:dd ge;eAeDfeFdCdD Zoe:dd ge;eAeDfeFdEdF Zpe:dd ge;eAeDfeFdGdH Zqe:dd ge;eAeDfeFdIdJ Zre:dd ge;eAeDfeFdKdL Zse:dd ge;eAeDfeFdMdN Zte:dd geFdOdP Zue:dd geFdQdR Zve:dd geFdSdT Zwe:dd geFdUdV Zx	 e:dd ge;eAeDfeFdWdX Zye:dd ge;eAeDfeFdYdZ Zze:dd ge;eAeDfeFd[d\ Z{e:dd ge;eAeDfeFd]d^ Z|e:dd ge;eAeDfeFd_d` Z}e:dd ge;eAeDfeFdadb Z~dcdd Ze:dd ge;eAeDfeFdedf Ze:dd ge;eAeDfeFdgdh Ze:dd ge;eAeDfeFdidj Ze:dd ge;eAeDfeFdkdl Ze:dd ge;eAeDfeFdmdn Ze:dd ge;eAeDfeFdodp Ze:dd ge;eAeDfeFdqdr Zdsdt ZeFdudv Ze:dd ge;eAeDfeFdwdx Ze:dd ge;eAeDfeFdydz Ze:dd ge;eAeDfeFd{d| Ze:dd ge;eAeDfeFd}d~ Ze:dd ge;eAeDfeFdd Ze:dd ge;eAeDfeFdd ZdS )    )renderN)parse_qs)EmailMultiAlternatives)
connection)model_to_dict)JsonResponseHttpResponse)Context)render_to_stringget_template)logger)datetime	timedelta)Maxstatus)timezone)
PlanPlan_PeriodPlan_MesocyclePlan_MicrocyclesPlan_SessionsPlanProtocolSelectedAbilities	PlanGoals
PlanVideosPlan_Actions)settings)UserFitnessProfileUserPlateWeight)AuthResponseSerializer)api_viewauthentication_classespermission_classes)Response)StartFitAuthenticationSessionAuthenticationStartFitSessionUtilAuthResponseIsAuthenticated)never_cache   )UserPlanUserTestPlanUserPlanCycle	MealplansUserActions)TransactionHistory)ExerciseTypeNewExerciseVideosPriceMappingPriceConversionAdvExercises	FullMeals)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idr,   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userid	checkplanuserplansCountvalvalObjrI   e r_   yC:\Users\DELL\Desktop\soubhikg1894-stratfit-d75d91182fa3\soubhikg1894-stratfit-d75d91182fa3\services\UserProgram\views.pyionicuserplancheck.   s&   

ra   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 )NrA   utf-8	startdate%Y-%m-%d %H:%M:%S   days%Y-%m-%d	startDateplan_idnextRenewalDate
seasonDatedayOffmicrocyclecountplanidrC   rj   rA   dayoffmicrocycleid
deviceDate Tz!User Program updated successfully)ri   rk   planIdrs   rG   rH   dataFUser logged outrG   rH   rL   rM   )r(   rN   jsonloadsbodydecodeprintr   strptimer;   strftimer-   rO   rQ   rP   rR   rS   getri   rk   rm   rl   rn   rt   saver   rT   r   rL   rU   )rV   rW   rX   rY   planInforc   
one_monthsrk   plandtplaninfr^   r_   r_   r`   ionicupdatestartdateG   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 )NrA   ri   rj   rk   rm   r,   rB   rh   TrG   plandataFry   rz   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`   ionicgetuserplandatam   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 )NrA   ri   rj   r   r,      )rC   
status__inru   rh   Tr   Fry   rz   rL   rM   r   )	rV   rW   rX   rY   r   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 ]P}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 d 
dLdMdNdOdPdQdR$ }g } |D ]}!t|!}"| %|" qH| |dS< |%| qt&jj	|d
dTdUdVdWdXdYdZd[d\ddd]d^d_d`dadbdcdd}#|# r|#D ]}t|}$|%|$ qt'dde|||||dfdgW S W d S t()|dh di}%|%tdd }|d}tj
ddjddkj	||d dl}&|& r|&D ]}t|}'tjj|'d d}&||&_*|&  |&j}(qd|v r|d d krtjj	|d d
 }|D ]}t|}|d }qtjj|d}|(|_|  t'ddedk|idgW S t'ddmdnW S  t+yM }) zt,-do t'dpt|)iW  Y d })~)S d })~)ww )qNrA   rb   plancompleteTzinside existsro   r,   rC   rj   r   r   z->>rq      rt   ru   %wr      rh   re   rf   	here i am	 00:00:00FrC   rj   renewalDateri   rk   r   rE   rm   transactionIdtransation_idpkrX   r   r   rj   rj   	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infor4   exercise_idexercise_id__exerciseNameexercise_id__exerciseDescexercise_id__equipmentexercise_id__videoexercise_id__thumb_imageexercise_id__cover_image	exercisescreatedDateexerciseId_idexerciseId_id__exerciseNameexerciseNameZexerciseId_id__exerciseDescZexerciseId_id__equipmentZexerciseId_id__videoZexerciseId_id__thumb_imageZexerciseId_id__cover_imagetmax
updateTmax
updateTypeupdatedDaterC   userplan_id
workWeightworkoutTestDatezProgram renewed successfully)ri   plansr   rk   r   rw   rc   rd   ri   rk   rp   ry   rz   rL   rM   ).r(   rN   r{   r|   r}   r~   r   r-   rO   rP   rQ   rR   rS   r   r   rt   r   r:   todayr   intrU   r;   creater2   rA   r   rJ   r   r   select_related
first_name	last_namecurrencyTypefloatr   distinctr   r.   r   r   r   rk   rT   r   rL   )*rV   rW   rX   rY   r   	plancmpltr   plan1	uplaninfotodayDayoffDay	todayDater   rk   userplanDetailstransactionstratraobjtraidupdatetransactionsPlanDetailsr   tmaxArrr   downloadUsersuserCurrency	planInfosdtp	planInfo1partnerName	coachNameexercisesObjplanExsexexObjtmaxDetailsdataTmaxObjrc   r   r   
userplanIdr^   r_   r_   r`   ionicUpdateRenewalDate   s   










P64.8
_
 


r
  c                    s  t  }|| d }t| jdd }}d}zi  g | d< d krtjj|dt	jjdd}|j
}tjj|d ddgd	d}| rWtd
ddW S  fdd}	 fdd}
tj }||	|}| W d    n1 sw   Y  tj|
fd}|  tdd d  d  d  d d
 d  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 )NrA   rb   rj   zuserprogram/createuserplan/ro   rq   r,   r   rC   rj   r   FrF   rz   c           ?         s,  t jj| ddjdd t jj| ddd}| r d}d}nd}d}t d	}| d
< t	
 }t jj| d|d }| rm|D ]
}t|}|d }	qDt||	d }
|
tdd }t d	}|	 d< | d< n't d}tt|d }	t tdd }t d	}|	 d< | d< |d	}| d< t jj| 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|_|  g d}g d}tjj| d }| rtd n8d}d}|D ]}|d }tjj| |d d!|dd"}|  q|D ]}|d }tjj| |dd|dd"}|  q2t jd#jd d$d%}|D ]}|d% }q[tjj| d&} d'}!| j}"| j|d(}#td)|#}$|! d*< |$ d+< |" d,<   t jj| ddjdd t jj| d-jddgd. }%g }&|%D ]h}'t|'}(t jj|(d d/ })t jd0d1d2j|(d d&dd3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdI}*|*D ]}+t|+},dJv rdJ dKkrj!dLkrDt jjdddM" #t$dFdN }-dO dPkr*|,dH |,d6< |,dH |,dF< |,dH |,dQ< n|,dF |,d6< |,dF |,dQ< t|,d6 d!krCdR|,d6< nt jjdddM" #t$dFdN }.t%jj|.dS}/|/j&}-dO dPkrrt%j j|,dH dS}0nt%j j|,dF dS}0|0D ]}1t|1}2|2dT }3q|3|,d6< dO dPkr|,dH |,dF< t|,d6 d!krdR|,d6< n\t|,d6 d!krdR|,d6< nNj!dLkr߈dO dPkr|,dI |,d6< |,d6 |,dQ< n'|,d6 |,d6< |,d6 |,dQ< ndO dPkr|,dI |,d6< |,d6 |,dQ< n|,d6 |,d6< t'|,d6 d!krdR|,d6< t(jj|,d d/dU}4|4 r4|4D ]}'t|'}5|'dU |,dV< tdW|'dU  qt|4dX ndY|,dV< t)jdZj|,d d/d[}6d}7|6D ]}t|}8|7d\|8d[  7 }7qK|7dkrg|7dd  }9nd}9t*jd]j|,d d/d^}:d};|:D ]}t|}8|;d\|8d^  7 };q||;dkr|;dd  }<nd}<|9|,d8< |<|,d?< |,dD d_ks|,dD d`krtjj|,dC d&}=t|,d: da tt|=jdY t|=j+  db |,d:< n#tjj|,dE d&}>t|,d: da tt|>jdY t|>j+  db |,d:< dc|,dd< de|,df< |)|,dg< q|,|(dh< |&|( |& di< q S )jNr   rB   r   r   r,   rA   FTrh   renewal)rC   r   nextRenewalDate__gterm   re   rf   r   
nextMondayr   nextrenewalrj   r   )rC   rj   r   rk   ri   r   rE   rm   rt   ru   r   r   r   )	2            
   g      @   g      @r,   )r  r  r  rD   zvalue Already eXists   r   )rC   weightrJ   barbellindexr   Plan__id)plan__idplan_id__planNamerq   zPlan Subscription)r   plannamezsubscribeplan.htmlsubjectrH   to_emailr   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   iosPrice__maxr   r   r   r   )inrusdvideovideosfvgdhjggggggggggggggggr   PlanAbilitiesability_id__abilityz, PlanPurposesplanGoal_id__GoalNamer   r   r   r   r   r   r   r   r   r   r   ),r-   rO   rP   updaterQ   rR   r:   r   r   r   nowrS   next_weekdayr;   r   rU   r   rt   r   r2   r   rA   r   r    r   r   r   emailr   r
   r   rJ   r   r   all	aggregater   r6   r&  r   r   r   r   r   )?rX   
planActive
statusCoderE   r   dcheckplanOffDayrdrdObjr   next_mondayr   nextMondayStr
offDayCalcrk   r   r   r   r   r   r   	platesArr
barbellArrextigwtsidxidx1wtwtinfr\   r   rx   r  instanceSubr  r   ctxrH   r   r   r   r   r   r   r   r   highestPricehighestPriceVal
highestValusdValuer&  usdObj	dollarVal
planVideosr(  planAbilityVal	abilitiesr]   planAbilitiesplanPurposesValpurposes	planGoalsr  r  
activeuserobjr   r   usernamer_   r`   
activeplan=  sh  









P
""



64
z"createUserPlan.<locals>.activeplanc                    s(   | d }| d }| d }t |||  S )Nr  rH   r   r=   )rV  r  rH   r   )rU  r_   r`   mail  s
   zcreateUserPlan.<locals>.mail)targetargsTzUser Program Saved Successfullyr  r   r  r  r   )ri   r   r   rk   rI   rv   rr   rw   something wrongrM   )r(   rN   r{   r|   r}   r~   r   rO   r   r7   inrValuer-   rP   rQ   rR   r   
concurrentfuturesThreadPoolExecutorsubmitresult	threadingThreadstartrT   r   	exceptionr<   rU   )rV   rW   rX   planIDrequrlcurrencyValuesr]  	planexistrX  rY  executorfuturet2r^   r_   rT  r`   createUserPlan$  sJ   
  S
:  k
ro  c                 C   s*   ||    }|dk r|d7 }| t|d S )Nr      rf   )weekdayr   )r7  rq  
days_aheadr_   r_   r`   r1  $  s   r1  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 )NrA   r?   zuserplan/subscriptionreminderr,   rB   rj   rk      rf   rh   r  )r  rC   r   r  Subscription reminderr2  r   r   	plan_namesubscriptionreminder.htmlT-Subscription reminder email sent successfullyrz   zNothing happensr\  rM   )r(   rN   r-   rO   rP   rQ   rS   r;   r   r   r:   r   r
   r>   r   rT   r   rf  r<   rU   )rV   rW   rW  rX   rh  ri  planobjr   dataObjrj   oneweekbeforeoneweekr   rx   r  	todaydater  r   rF  rH   r^   r_   r_   r`   subscriptionreminder*  sF   




r~  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 )Nrs  rf   )rk   r   r  rA   rj   rk   user_id__iduser_id__organizationr  user_id__emailuser_id__first_nameuser_id__userTyperh   rt  ru  rw  )namer2  r   )organizationuserTyper   r2  )r2  	firstNamez#Subscription reminder for Gym UsersTrx  rz   )r   r   r;   r-   rO   rP   r:   r   rQ   rS   r   r
   r>   setaddr   r   rU   r   )rV   r}  ry  r   rz  rj   r{  r|  r  r  r   rF  rH   organizationsuserArrorgAdminArrorgorgAdminValuesorgsorgAdminorgfirstnameorgValr_   r_   r`   reminderT  sN   2


	r  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 ))NrA   rb   zuserplan/renewuserplan/r   Frj   r,   r   ri   rs  r   r   ) mesocycle_id__period_id__plan_idTrh   re   rf   r   r   r   r   r   r   r   r   r   rt   ru   r   r   r   z!User Program renewed Successfully)ri   r   r   rk   	freeTrialrv   rw   rH   zPlease provide Programry   rz   r\  rM   ),r(   rN   r{   r|   r}   r~   r-   rO   rP   rQ   rR   rS   r   r0  r   utcrg   absr   r   rJ   r   r:   r   r   r   r;   r   rk   r   r2   rA   r   r   r   rU   r   rt   r   r   rT   r   rf  r<   )"rV   rW   rW  rX   r   rh  ri  num_of_microcyclesr   rk  r\   r]   ri   r   diffDatediffDaysmicrocyclesr   r   r   r   r   r   r   r   r   r   r   rk   r   r   r   r   r^   r_   r_   r`   renewUserPlan  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 )NrA   userplan/userplans/r   r,   r   r   Tr   rG   rx   Fry   rz   r\  ru   rM   )r(   rN   r-   rO   rP   rQ   rS   r   r   rT   r   rf  r<   rU   )
rV   rW   rW  rX   ri  r   r   r   r   r^   r_   r_   r`   	userPlans  s&   

r  c           
   
   C   s
  t  }|| }|d }d}zN|d krUtjj|djddd}| rLtjj|djdd}t 	d}t
t|d }|dk rEd}||_|  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 )NrA   r  r   r,   r   r   r   r   TzOffday changed successfully)rG   rH   rm   Fry   rz   r\  ru   rM   )r(   rN   r-   rO   rP   rQ   rR   r:   r   r   r   rU   rm   r   r   rT   r   rf  r<   )
rV   rW   rW  rX   ri  r   r   r=  r   r^   r_   r_   r`   updateDayOff  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 )NrA   rb   zuserplan/canceluserplan/rj   r,   r   rh   monthsr   Tz#User Program Cancelled Successfullyrz   FzNo Program has been Subscribedry   r\  rM   )r(   rN   r{   r|   r}   r~   r-   rO   rP   rQ   rR   r   r:   r   r   r   r;   r   r   r   rT   r   rf  r<   rU   )rV   rW   rW  rX   r   rh  ri  rk  r   r   r   rk   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}d|v rdd kr|d }n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}d|v rb|d d krb|d }nt d}tt|d }|dk rxd}||_d|_d|v r|d dkr|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 )"NrA   rb   zuserplan/activateuserplan/rj   r   r  r,   rB   	zfsdfsdfsrq   r   rh   	firstPlanre   rf   r  r   r   r   r   rt   ru   Tz#User Program Activated Successfully)rG   rH   ri   rk   rm   r   zUser Program Already ActivatedzNo Active Planrz   Fry   r\  rM   )r(   rN   r{   r|   r}   r~   r-   rO   rP   rQ   rR   r   rS   r   r   r   r:   r   r   ri   r;   rk   r   rU   rm   rt   r   rT   r   rf  r<   )rV   rW   rW  rX   r   rh  ri  rk  
PrePlanObjplplObjplIdupdateplanObjr   r   	renewDays	renewDater   rk   r   r=  planValr\   r]   r	  userplanValr^   r_   r_   r`   activateUserPlan3  s   
















r  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 )NrA   rb   zuserplan/userplanseasondate/rj   r,   r   season_dateru   r   rn   TzSeason Date Set Successfully	   )rG   rH   seasonMicroCycleIDFry   rz   r\  rM   )r(   rN   r{   r|   r}   r~   r-   rO   rP   rQ   rR   r   rl   rn   r   r   rT   r   rf  r<   rU   )
rV   rW   rW  rX   r   rh  ri  rk  r   r^   r_   r_   r`   UserPlanSeasonDate  s2   

	
r  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 )NrA   rb   zuserplan/createtest/r   r   exerciseCoder,   rB   rj   rh   r   rC   rj   r   r   r   r   r   r   T$User Test Program Saved Successfullyrz   Fry   r\  rM   )r(   rN   r{   r|   r}   r~   r4   rO   rQ   rS   r   r-   rP   r   r0  r:   r   r.   r   r   r   rT   r   rf  r<   rU   )rV   rW   rW  rX   testInforh  ri  exIdexerciseDetailsr\   rV  userplanpager   r   rz  userTestPlanDetailsr^   r_   r_   r`   createUserTest  sP   

 


r  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 )NrA   rb   zuserplan/createtestnewr  r   r   r  r,   rB   rj   rh   r   rC   rC   r   r   r  Tr  rz   ry   rG   meaasger\  rM   )#r(   rN   r{   r|   r}   r~   r   r4   rO   rQ   rS   r-   rP   r   r0  r:   r   r.   rR   r   rj   r   r   r   r   r   r   r   r   r   rT   r   rf  r<   rU   )rV   rW   rW  rX   	testInfosrh  ri  r  r  r  r\   rV  r  r   r   rz  	tmaxExisttmaxObjr  r^   r_   r_   r`   createUserTestNew  sj   

 










r  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 )%NrA   r?   userplan/userTestExercise/r,   rB   rj   rD   r   r   r   r   	tmaxValuerq   Exercise__idPlanSession
MicrocyclePlanMesocyclePlanPeriodsr   8session_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	mainExArrFry   rz   r\  rM   )r(   rN   r-   rO   rP   rQ   rS   r.   lenr   r   r   PlanExcerciser   rA   order_byr4   r   r   rT   r   rf  r<   rU   )rV   rW   rW  rX   rh  ri  r  r   rz  rg  r  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 )kNrA   r?   r  rD   r   rj   TrC   	BP_missedSQAT_missed	OP_missed	DL_missedr   r  r  r  r  hererq   r   z in here in updating the userplan#here In the Completion Of ExcersiceF"Your Starter Program Got CompletedrG   rH   CompletedStatusrh   rC   rj   r   testDaterf   r   rC   rj   r   createdDate__ltr   r,   userSessionuserSession__max
0987654321rC   rj   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   rj   r   r   createdDate__gtr   ExistsBENCH PRESSin Here1OLYMPIC PRESS)rC   rj   r   r   -idin Here2SQUATIN HEre3	DEAD LIFTIN HEre4
differencer  r  r  exerciseTypeNameexerciseTypeCodeexcercisetypevideosexerciseTypeDescr  )	r  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   rj   r   r$  TODAYS EXERCISESbpsqopdlcompletedSetscompletedReps Your next workout will start on r  rG   rH   r   main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 Planry   rz   r\  rM   )*r(   rN   r-   rO   rP   rQ   rR   rS   r   r/   r   r   r   r   r   r0  r:   r   r   r.   r  r   r   r  rg   UserExerciseUserSessionr4  r   r  rU   r   r3   r   roundr{   dumpsr|   rT   r   rf  r<   )QrV   rW   rW  rX   rh  ri  r	  va1rV  plancyclecompletedcompleteuserplanup	updetailsupIdupdateuserplanr  r   time_thresholdr   rz  usertestpageTestPObjd1d2d4difDaysuserexcersisepagesessDetailssessessValsessd1sessd2sessd3sessdifDayssessionInforv   userpIduserexcersisesr#  d3	nextCheck
nextScheckcycleDetailsr\   valuecycvalue	todayDoneexcersiceworkweight2ww2workW2excersiceworkweightwwworkWexcersiceworkweight4ww4workW4excersiceworkweight1ww1workW1r  
workweightr  r  
repsPerSetexTypeDetailsdataObj1rH   r   todaySessionObjcompletedArrtodaysexersisesuxuxecompletedExNamer,  r-  completeJsonsession1excersicArrr4  r^   r_   r_   r`   checktoTestPlanD  s  




(


 
 
 0F

$
$
B
BB
B

*...*....
>
$.
>
$


rw  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 )GNrA   rb   r  rh   r,   rB   rj   exercise
currentSetr  r  r   r  createdDate__maxr  completedSetsRepsr   r  )rC   rj   r   r   r  r  r  	period_idmesocycle_idmicrocycle_id
session_idr  r   )r   rC   rj   r   r  r  r   r   reps_sets_donerq   )rC   rj   r|  r}  r~  r  r   userexercise_idsetExercise	setNumberr  PlanSession__idMicrocycle__idPlanMesocycle__idPlanPeriods__idr  ,session__microcycle__mesocycle__period__plantransitExerciser   dataBaseIdsr   r  r  r  r  r  	regressedT)r  z-exerciseDaterD   z"here Iam In the Previous Excersicezhere I Comezmissed ValuesprevWWzCHECKING THE CONDITIONSzin HERE TO RECOVERzIN HEREzin HERE TO Updater  r   ru   r  r  r  r  r  Fr  rz   zrecords Inserted Sucessfullyry   r\  rM   )?r(   rN   r{   r|   r}   r~   r   r0  r:   r   r-   rO   rP   rQ   rS   r:  r4  r   r   r   r   rA   r   r   r  r  lastr   r   UserSetsr  r   r  r   r  r/   rR   rC   rj   r   r  r  r  r  excluder  BP_recoveredSQAT_recoveredOP_recoveredDL_recoveredr  r  nextExerciseName_idr  r   r  r  r   rT   r   rf  r<   rU   ):rV   rW   rW  rX   excersiseInforh  ri  r   r  r   r   exsessionInforH  rI  sessIdExersiceDetailslastExIdr  exNameexSetr  ExerciseInfor  exerciseObj
SetDetails	exDetailsex1	exercise1	exercise3ex2	exercise2	exercise4exerciseMissedplanCyclevaluespdr   plancycleId	planCycleplancycleDetailsExercisePreviousInfoObjpcdataExercisePreviousInfo
missedFlagrecoveredFlagprogressedFlagpreWorkWeightexerciseRecoveredplancycleRecoveryexerciseUpdateexerciseProgressed
cyclevaluecvcycplancycleProgressr?  cyclce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 )NrA   rb   zuserplan/testforTest/strengthrD   r,   r   r  r   r  T)rG   rb  r  Fry   rz   r\  rM   )r(   rN   r{   r|   r}   r~   r   r   rO   r   genderr   r   rT   r   rf  r<   rU   )
rV   rW   rW  rX   r  rh  ri  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 )&NrA   r?   zuserplan/exercisedetails/ru   rD   rj   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 foundrz   )rG   benchsquatolympicdeadliftFry   r\  rM   )r(   rN   r-   rO   rP   rQ   rS   r:  r   r   r   r   r   r   rT   r   rf  r<   rU   )rV   rW   rW  rX   rh  ri  r  r   r   
uservaluesr  benchpressArrsquatArrolympicpressArrdeadliftArrdt1rz  r  r  avgwtr  r  r  r^   r_   r_   r`   completedExcerciseDetails  s   


.
$ $ $ $ 
r  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  rq   accessLevelr   r  r   r  r  rA   r  r  r  r  exVideos	videoLinkolympicLiftpreExInstructionspostExInstructionsweightExistsdistanceExists
timeExists
repsExistsexAbilitiessetInstructionsSkillskillTru   r   r   , Weight, Reps, Time
, Distance, Speed, Heightr   r  r  timedistancespeedheightdependenciesspeedExistsheightExistsr  r  r   rG   defaultExArrr  skillArrr\  rM   )r(   rN   r   cursorexecutedictfetchallrS   r5   rO   rP   rQ   r   r8   r   	maxWeightmaxRepsmaxTimemaxDistancemaxSpeed	maxHeightr   rT   r   rf  rU   )rV   rW   rW  xrl  resultQueryr  r  skilArrr   rz  videoIdr(  r\   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 )-Nr  r  rq   r  r   r  r   r  r  rA   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  Tru   r   r  r  r  r  r  r  r  r   r  r  r  r  r  r  )r   r  r   r  rS   r5   rO   rP   rQ   r   r8   r   r  r  r  r  r  r  r   )rV   r  rl  r	  r  r  r
  r   rz  r  r(  r\   r]   r  r  r_   r_   r`   excersiceTypeDetailsPDC5  sL   


"r  c           	   
   C   s  t  }d}|| t|}g }g }g }|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 d|d |d |d |d |d d q|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 |d dd qtd|||dS )Nz:SELECT * FROM utility_newexercise WHERE exerciseStatus = 1r  r   r  r   rA   r  r  r  r  r  r  r  r  r  r  r  stressFactorexCoeffiecientexGroupexMainGroupflowTypedistanceFactorcover_imagethumb_imager'  )r  ExerciseCoverImageExerciseThumbImageExerciseVideoT)r  r  r  r  r  r  )r   r  r   r  rS   r   r   )	rV   r  rl  r	  r  r  r
  r   rz  r_   r_   r`   newexcersiceTypeDetailsPDC_  s   
r  c                 C   s4   t | jd}t| tjj|d}tddiS )Nrb   )r9   rG   T)	r{   r|   r}   r~   r   r9   rO   r   r   )rV   foodZ	Fullmealsr_   r_   r`   	Fooditemsr  s   r  c                 C   s  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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+d,d-d.d/d
	d0d1d2d3d4d5dd6d'd
	d7d8d9d:d;d<d=d>d?d
	d@dAdBdCdDdEd	dFdGd
	d?dHdIdJdKdLdMdNd0d
	d/dOdPdQdRdSd(dFdTd
	dUdVdWdXdYdZd	dd7d
	d'd[d\d]d^d_d`d^dad
	dbdcddded^dfdgd^dhd
	didjdkdldmdnd?dodGd
	dpdqdrd+dsdtdud	dvd
	dwdxdydzd{d|dPd}dwd
	d~ddddddwdd@d
	dddddddGddd
	d`dddddd'dgdbd
	gddS )Nr,   ZAppleH   gq=
ףp?g(\3@g
ףp=
?r   _   r   )	rA   r  caloriesfatZcarbsZprotienZ
fatPercentZcarbPercentZproteinPercentZBananaY   gQ?gףp=
6@gq=
ףp?]   r  ZMango   gQ?gQA@g(\?^   zPapaya - One Cup MashedZ   g{Gz?g(\6@gffffff?[   r   r  ZCarrotr  ZCucumber-   g\(%@g\(\?P      rs  zTea - with milk and sugarg=
ףp=?gzG@g(\?   @      rp  ZRotij   gp=
ף?gRQ6@gQ@R   r  ZNaan   gffffff@g2@gQ@"   7      r  ZRajmaiM  g(\?gzGN@gGz7@F   re   ZParathai  g{G!@gQxC@gp=
ף@   =   zLadys Finger - 100gms   g?g      @g      ?      zRice - 1 cup   g)\(?g
ףp=
F@g@zChicken Breasti  g\(\@r   g(\>@   O   r  zMutton/Lamb chop 200gmsiV  g(\:@g(\8@G         zChicken Shawarmai  g=
ףp=@g33333#S@g
ףp=A@<      ZEggJ   gRQ?g)\(@?   #      zChicken Biryanii\  gp=
ף#@g)\H@g/@8      zVegitable Biryanii>  g(\@g(\L@g      @I   r  zDal - 1 cup   gHzG@gGz.:@gQ$@4   zWhole Wheat Bread - 1 sliceE   gzG?gR)@g(\@T)ZmealDatarG   )r   )rV   r_   r_   r`   getFoodItems|  s0   rL  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 )NrA   r?   userplan/getPlanDates/r  r,   rB   ri   endDater   r  rj   r   T)rG   ActivePlanDetailsPreviousPlanDetailsFry   rz   rM   )r(   rN   r   r-   rO   r   rP   rQ   rS   r   rT   r<   rU   )rV   rW   rW  rX   rh  ri  rX  previousplanr   rz  datrm  r^   r_   r_   r`   getPlanDatesStatus  s,   
&&

rS  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 )NrA   r?   rM  rD   r   rj   r   rx  rQ   protocolprotoId'"r  r   Tr  r  r  r  r  Fr  r  r,   rB   rh   r  r  r  r  r  r  r   r  transitExercise__exerciseNamer  r   r  r   r  rf   r   r  r  r  r  exerciseId__idr  r  r  r  r  r  r   rX   r  r  r  exerciseId__exerciseCodeexerciseId__excercisevideosexerciseId__exerciseDescexerciseId__equipment
exerciseIdr  r  r  )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   rj   r   r^  r	  r
  r  r  r  zin here for testingtmaxpercent	tmaxvalued   minRepsr  )
r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  hjsjsr   r!  r"  r%  r&  r'  r(  r)  r*  r+  r.  r  r/  r2  r   r  r3  )rG   r  r   r4  r5  r6  r7  )rG   r  r   r8  r9  ry   r  r\  rM   )*r(   rN   r-   rO   rP   rQ   rR   rS   r   r   replacer{   r|   r/   r   r   r0  r:   r   r  r   r  r.   r   r  r   r   r  rg   r:  r  r4  r   r   r   r<  rU   r=  rT   r   rf  r<   )drV   rW   rW  rX   rh  ri  r	  r>  rV  protocolDetailsprogressionvaluesregressionvaluesptprotoObj
rulevaluesrulesrQ   r?  r  r   r   rz  rv   rU  r  r  r  ex1Nameex3Namer  r  r  ex2Nameex4Namer  rF  rE  rG  rH  rI  rW  rK  rL  rM  rP  rQ  rR  rS  rT  rV  r#  planExDetailssesetValra  reps_per_setrd  rX  rY  rZ  r\   r[  r\  r]  r^  r_  r`  ra  rb  rc  rd  re  rf  rg  rh  ri  regregtmaxValuer  rj  r  r  rk  protmaxValueprorH   r   ro  rp  rq  rr  rs  r,  r-  rt  ru  re  rv  r4  r^   r_   r_   r`   checkToPlanBuilder  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 )/Nrb   rA   Fru   rD   rj   r  r   r  r  r^  r  r  r  rc  exerciseId__workFormular  r   0)r   Trv   r   	from_date)exerciseDate__gteto_date)exerciseDate__lter  r  皙#@r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rc  rj  r  	sessionIdsessionDetailsrG   r  No Exercise detailrG   rH   comboNo Planrz   r\  rM   )r(   rN   r{   r|   r}   r~   r-   rO   rP   rQ   rR   r:  r   r  collectionsdefaultdictlistrS   r   r   r   r   rT   r   rf  rU   )rV   rW   rW  userInforX   r  r  r  r  actualExDatabpArrsqArropArrdlArrr  rz  r  r  r  r  r  r  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 )*Nrb   rC   ru   r,   rB   rj   rA   r  r   rD   r   r  r  r^  r  r  r  rc  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  T)rG   r  rW  Fr  rz   rK   r\  rM   )r(   rN   r{   r|   r}   r~   r-   rO   rP   rQ   rR   rS   r:  r   r  r  r  r  r   r   r   r   rT   r   rf  rU   )rV   rW   rW  r  rX   r  r   r   r  r  r  r  r  r  r  r  rz  r  r  r  r  r  r  r^   r_   r_   r`   customerEexcerciseDetailsJsont	  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 )1NrA   ru   rh   r,   rB   rj   r  r   z	 23:59:59)rC   rj   r   r  r  r   r  r  r^  r  r  r  rc  
todaysDater  r  r  r  r  r  r  r  r  r  r  r  r  )r  r  r  r  r  r  r  r  r  Tr  Fr  rz   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   rf  rU   )rV   rW   rW  rX   r   r  r   r   r  r  r  r  r  r  r  r  rz  r  r  r  r  r  r  r^   r_   r_   r`   todyasexcerciseDetailsJson	  s   



J


$ $
$ $
$ $
$ X
r  c                 C   s  t  }|| }|d }t| jd}|}d}z|dkrg }|d }|D ]r}	tjj|	d |dd}
|
j	}|
j
}t| tjj||||	d	 |	d
 |	d |	d |	d |	d d	}d|	v rs|	d d krs|	d dkrs|	d dkrs|	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 )NrA   rb   zuserprogram/createsetdetails/ru   set_detailsrj   r,   )rj   rC   r   setIdsetCompletedDater  r  rj  r   )	rC   rj   r   planaction_id
actionDater   r  actionWorkWeight
actionTmaxr   nullrc  TzSet data entered successfully)rG   rH   r  Fry   rz   r\  rM   )r(   rN   r{   r|   r}   r~   r-   rO   r   rA   rj   r   r1   r   	setStatusactionIntensityr   r   r   rT   r   rf  r<   rU   )rV   rW   rW  rX   
setInfoObjrh  ri  setArrsetInfossetInfouserPlanObj
userPlanIDrg  r  r^   r_   r_   r`   createUserSetData/
  sP   
,
,

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)r  r_   r  r`   r  [
  s   
r  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 )NrA   r?   zuserplan/userLastSession/ru   r,   rB   rj   )rC   r   
planset_idr  FzNo Program datarz   T)rj   r  set_idr  zNo Active Programry   r\  rM   )r(   rN   r-   rO   rP   rQ   rR   rS   r  r  r   rT   r   rf  r<   rU   )rV   rW   rW  rX   rh  ri  r  r   r   
lastSetObjr^   r_   r_   r`   userLastSessionIDc
  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 )NrA   r?   zuserplan/deleteUserData/ru   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 deletedrz   Fry   r\  rM   )r(   rN   r   r  r   rU   r   rT   r   rf  r<   )rV   rW   rW  rX   rh  ri  r  foreignKeyChecksusersetdata
userexDatasetforeignkeychecksr^   r_   r_   r`   deleteUserData
  s0   





r  c                 C   s  t  }|| }|d }t| jd}|}d}z)|dkr<tjj|dd	dd}|
 r|D ]}t|}	q2t|	d  tjj||d d		 }
t|
d
 |

 rht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jj||d d		 }
t|
d
 |

 rtjj||d d	}
|d |
_|
  n-td 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 < q%tdd|dW S tdddW S  tyl } ztd t|||t| tdt|iW  Y d }~S d }~ww )NrA   rb   zuserplan/updateTmaxData/ru   r,   rB   rj   r   r  lllllr   rq   	rC   rj   r   r   r   r   r   r   r   r   TTmax Updatedrw   ZhereeeeeeeeZ99999Fry   rz   r\  rM   )r(   rN   r{   r|   r}   r~   r-   rO   rP   rQ   rR   rS   r   r.   r   r   r   r   r   r4   r   r   r   rT   r   rf  r<   rU   )rV   rW   rW  rX   r   rh  ri  r  r   r   testplanDatar   exerciseDatacreateTplantestplanDataUtestPlanObjdtar^   r_   r_   r`   updateTmaxData
  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 )NrA   rb   userplan/updateBulkTmaxData/ru   r,   rB   rj   r   r   tmaxDatar  r  r   
updatetmaxr   r  123445Tr  rz   FrK   ry   r\  rM   r(   rN   r{   r|   r}   r~   r-   rO   rP   rQ   r  rR   rS   r   r   r   r.   r   r   r   r   r   rT   r   rf  r<   rU   rV   rW   rW  rX   r   rh  ri  r  r   r   r   r   r  r\   r]   
testPlanIDupdateTplanr  r^   r_   r_   r`   updateBulkTmaxDataOld
  sb   





r  c                 C   s  t  }|| }|d }t| jd}|}d}z|dkr.tjj|dd	dd}t
|dkr>tjj|d	d	dd}| r|D ]}t|}	qDt|	d  t }
|d
 D ]]}tjj||d d	 }t|d | r|D ]}t|}|d }tjj|d}|d |_|  qrqYtjj||	d |	d |d |d |d |d |d |
d	}|  t|d d qYtdddW S t }
td |d
 D ]Z}tjj||d d	 }t|d | r|D ]}t|}|d }tjj|d}|d |_|  qqtjj|dd|d |d |d |d |d |
d	}|  t|d d qt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 )NrA   rb   r  ru   r,   rB   rj   r   r   r  r  r  r   r  r   r  r  Tr  rz   ZghegegegZ9999Fry   r\  rM   r  r  r_   r_   r`   updateBulkTmaxData,  s   










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 )NrA   r?   zuserplan/getUpdatedTmaxData/ru   r,   rB   rj   )r   rC   r   r   r   Tr  FrK   rz   ry   r\  rM   )r(   rN   r-   rO   rP   rQ   rR   rS   r.   r   rT   r   rf  r<   rU   )rV   rW   rW  rX   rh  ri  r  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 )NrA   r?   zuserplan/getNextSessionDataru   r,   rB   rj   )r   z5SELECT * FROM Plan_plansession WHERE microcycle_id = restTimer   Tr  FrK   rz   ry   r\  rM   )r(   rN   r-   rO   rP   rQ   rR   rS   r  r  r   r0  r:   setDater   rg   num_mondays_betweenr   rq  r~  r   r  rU   r   r  r   rT   r   rf  r<   )rV   rW   rW  userIDrX   rh  ri  r  r   r   userSetDatar  r   lastSetDatedeltar  
numMondaystodayNumberuserSetMicroCyclenextMicroCycler  
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 )Nrs  r   r,   )divmodrg   rq  )re  end	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 )NrA   date_joinedrW  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  usersr   rx   	userplansr   r   userTmaxr   r  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 ),NrA   zuserplan/createUserTestingDatar  r   r,   rB   rj   plan_id__programTyperD   r   r   r   r   r  rq   r  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 Planrz   ry   r  r\  r?   rM   )r(   rN   r-   rO   r   rP   rQ   rR   rS   r.   r  r   r   r   r  rA   r  r4   r   r   r   rT   r   rf  r<   rU   )rV   rW   rW  rX   ri  r  r   rz  rg  r  r  r  rJ   r  r   r   r  r  r  r  r  r  r^   r_   r_   r`   createUserTestingData  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 )NrA   rb   zuserplan/creatingTmaxr,   rB   rj   rh   r  r  r  r  r   Exercise)?session_id__microcycle_id__mesocycle_id__period_id__plan_id__idexerciseName_id__idr`  exerciseName_id__workFormular  r  r   r  Tr  rz   ry   r  r\  rM   )&r(   rN   r{   r|   r}   r~   r-   rO   rP   rQ   r   r0  r:   r   r   rS   r  r   r.   rR   r   rj   r   r   r   r   r   r   r   r   r   r<  r   rT   r   rf  r<   rU   )rV   rW   rW  rX   r  rh  ri  r  r   r   rz  rv   planExerciseDetailsr  r  r  r  	exFormular  r  r  r^   r_   r_   r`   creatingTmax)  sd   

(








r  c           
   
   C   s   t  }|| }|d }d}z<|d krCg }tjj|dddd}| r;|D ]}t|}|| q't	d|dW S t	d	d
dW S t	dddW S  t
yr }	 ztd t|d|t|	 t	dt|	iW  Y d }	~	S d }	~	ww )NrA   zuserplan/getUpdatedTmaxrD   r   r   r   Tr  Fz"you do not have any updated valuesrz   ry   r  r\  r?   rM   )r(   rN   r.   rO   rP   rQ   rR   rS   r   r   rT   r   rf  r<   rU   )
rV   rW   rW  rX   ri  r   r  r   r  r^   r_   r_   r`   getUpdatedTmaxc  s*   

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 ),Nrb   rA   Fru   r,   rB   rj   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  r  workFormular  r  r  r  r  r  r  r  r   r   r  rc  r  r~  )r  r  r  r  r  r  r  r  r  rc  rj  r  r  micro_idr  Tr  r  r  r  rz   r\  rM   )r(   rN   r{   r|   r}   r~   r   r  r-   rO   rP   rQ   r  rU   r   r  r  r  r  rS   r   r   r   r   rT   r   rf  )rV   rW   rW  r  rX   r  r  r  r  r	  r  r  r  r  r  r  r  rz  r  r  r  r  r  r  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 )Nrb   rA   ru   z	id existsrq   mealJsonTzMeal updated successfullyrz   )r  rC   zMeal Saved Successfullyr\  rM   )r(   rN   r{   r|   r}   r~   r   r0   rO   rP   rR   r   r=  r  r   r   r   rT   r   rf  rU   )	rV   rW   rW  mealInforX   mealDetails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 )Nrb   rA   ru   mealDate)rC   r   T)rG   mealsFzUser not found)rG   rM   r\  rM   )r(   rN   r{   r|   r}   r~   r   r0   rO   rP   rQ   rR   rS   r   r   rT   r   rf  rU   )
rV   rW   rW  r  rX   r  r   r  mobjr^   r_   r_   r`   getMealHistory  s,   

r  )django.shortcutsr   urlliburllib.parser   r  django.core.mailr   	django.dbr   Zdjango.formsr   django.forms.modelsdjango.httpr   r   django.templater	   django.template.loaderr
   r   Zpip._internal.req.req_installr   ImportErrorZpip.req.req_installr  r{   r   r   django.db.modelsr   rest_frameworkr   django.utilsr   concurrent.futuresr^  rc  Program.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+   modelsr-   r.   r/   r0   r1   Zpayment.modelsr2   Zutility.modelsr3   r4   r5   r6   r7   r8   r9   r:   dateutil.relativedeltar;   ZSubscriber.viewsr<   utility.viewsr>   ra   r   r   r   r
  ro  r1  r~  r  r  r  r  r  r  r  r  r  r  rw  r  r  r  r  r  r  r  rL  rS  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`   <module>   s   0$




#




 

 ~

'
-

[







W



+

:

,
  
q
 
K

!

X

0
(

#



  
l

H

@

u
)


!



P

3

N


/



5

7



?


