U
    ```                    @   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k
r   d d
lmZ Y nX 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 Zxe: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 }ztjj|dd }tjj|d }| r|D ]"}t|}|d dkrjd}qLd}qLt	dd||d	W S t	dd
|dW S W n@ t
k
r }	 z"td t	dt|	i W Y S d }	~	X Y nX d S )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_   +/var/www/html/services/UserProgram/views.pyionicuserplancheck.   s"    

ra   c              
   C   s  t  }|| }|d }t| jd}t| z4|d krVt|d d}t| |t	dd }|
d}tjddd	d
dddj||d d}| r2|D ]}	t|	}
tjj|
d d}||_||_d|kr|d |_d|kr|d |_d|kr|d |_d|kr(|d dkr(|d |_|  qtdd|||
d	 |
d ddW S tdddW S W nB tk
r } z"td tdt|i W Y S d }~X Y nX d S )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   s@    


&






$
r   c           	   
   C   s   t  }|| }|d }z|d krtjdddddj|dd}g }|D ]:}t|}|d d|d< |d d|d< || qHt	d	|d
W S t	dddW S W n@ t
k
r } z"td t	dt|i W Y S d }~X Y nX d S )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 }z|d krtjddddj|ddgd}g }|D ]@}t|}|d dkr|d d k	r|d d	|d< || qJt	d
|dW S t	dddW S W n@ t
k
r } z"td t	dt|i W Y S d }~X Y nX d S )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rXd|krN|d dkrNtd tjj	||d dd
dd	}t|d
 | rV|D ]J}t|}tjj|d d}d|_d|kr|d dkr|d |_|  qt 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|kr|d dkr|d |_|  d|k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 ]}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s|d4 d<kr tjj|d3 d}t|d+ d= tt|jd> t|j   d? |d+< nFt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'< n|j!dFkr|dG dHkr|d9 |d'< |d9 |dI< |d8 |d6< n|d' |d'< |d' |dI< nL|dG dHkr(|d9 |d'< |d9 |dI< |d8 |d6< n|d' |d'< |d' |dI< t"|d' dkrdE|d'< q||dJ< t#jdKj	|d d 
dLdMdNdOdPdQdR$ }g } |D ]}!t|!}"| %|" q| |dS< |%| q(t&jj	|d
dTdUdVdWdXdYdZd[d\ddd]d^d_d`dadbdcdd}#|# r,|#D ]}t|}$|%|$ qt'dde|||||dfdgW S qht()|dh di}%|%tdd }|d}tj
ddjddkj	||d dl}&|& r@|&D ]4}t|}'tjj|'d d}&||&_*|&  |&j}(qd|k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 nt'ddmdnW S W nB t+k
r }) z"t,-do t'dpt|)i W Y S d })~)X Y nX d S )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}zi  g | d< d krNtjj|dt	jjdd}|j
}tjj|d ddgd	d}| rtd
ddW S  fdd}	 fdd}
tj }||	|}| W 5 Q R X tj|
fd}|  tdd d  d  d  d d
 d  d ddW S W nT tk
r } z4td t|||t| tdt|i W Y S d }~X Y nX d S )NrA   rb   rj   zuserprogram/createuserplan/ro   rq   r,   r   rC   rj   r   FrF   rz   c           ?         sF  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 }| r|D ]}t|}|d }	qt||	d }
|
tdd }t d	}|	 d< | d< nNt d}tt|d }	t tdd }t d	}|	 d< | d< |d	}| d< t jj| d |d |d |d |||	d}dkrd dkrd |_|  dkrd d krtjjd d }|D ]}t|}|d }qtjj|d}|j|_|  dddddd d!d"dg	}dddg}tjj| d# }| r>td$ npd%}d%}|D ].}|d }tjj| |d&d'|dd(}|  qJ|D ].}|d }tjj| |dd|dd(}|  q~t jd)jd d*d+}|D ]}|d+ }qtjj| d,} d-}!| j}"| j|d.}#td/|#}$|! d0< |$ d1< |" d2<   t jj| ddjdd t jj| d3jddgd4 }%g }&|%D ]}'t|'}(t jj|(d d5 })t jd6d7d8j|(d d,dd9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdO}*|*D ]:}+t|+},dPkrndP dQkrnj!dRkrt jjdddS" #t$dLdT }-dU dVkrn|,dN |,d<< |,dN |,dL< |,dN |,dW< n|,dL |,d<< |,dL |,dW< t|,d< d'krldX|,d<< nt jjdddS" #t$dLdT }.t%jj|.dY}/|/j&}-dU dVkrt%j j|,dN dY}0nt%j j|,dL dY}0|0D ]}1t|1}2|2dZ }3q|3|,d<< dU dVkrR|,dN |,dL< t|,d< d'kr&dX|,d<< nt|,d< d'krdX|,d<< nj!dRkr؈dU dVkr|,dO |,d<< |,d< |,dW< n|,d< |,d<< |,d< |,dW< n4dU dVkr |,dO |,d<< |,d< |,dW< n|,d< |,d<< t'|,d< d'kr&dX|,d<< t(jj|,d d5d[}4|4 r|4D ](}'t|'}5|'d[ |,d\< td]|'d[  qLt|4d^ nd_|,d\< t)jd`j|,d d5da}6d}7|6D ]}t|}8|7db|8da  7 }7q|7dkr|7dd  }9nd}9t*jdcj|,d d5dd}:d};|:D ]}t|}8|;db|8dd  7 };q|;dkrJ|;dd  }<nd}<|9|,d>< |<|,dE< |,dJ deksz|,dJ dfkrtjj|,dI d,}=t|,d@ dg tt|=jd_ t|=j+  dh |,d@< nFtjj|,dK d,}>t|,d@ dg tt|>jd_ t|>j+  dh |,d@< di|,dj< dk|,dl< |)|,dm< q|,|(dn< |&|( |& do< qn S )pNr   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      @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=  sd   









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$  s>    

  S>
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   sr  t  }|| }|d }d}d}z|d krtjj|ddddd}|D ]}t|}|d }	|d tdd	 }
|
d
}tj	dj|	|ddd}|D ]}|d }qt
 d
}||krJd}|d }|d |d}td|}t||| tddd  W S qJtdddW S W nT tk
rl } z4td t|||t| tdt|i W Y S d }~X Y nX d S )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*  s>    





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 ]P}t	|}|d }|d tdd }|
d}|d }t 
d}|d dkrd}	|d }
|d |d}td|}t|	||
 qHt }g }||d
  g }|D ]f}||d |d d tjj|d
 ddddd}|D ]&}|d }|d }|||d q,q|D ]>}dt| }	|d }
|d |d}td|}t|	||
 qZqHt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  sJ    2



r  c           "   
   C   s  t  }|| }|d }t| jd}|}d}zX|d krzd}d}tjj||d dd	 }	|	
 rj|	D ]:}
t|
}|d	 }ttj}|| }|j}t|d
 }qptjddj|d d	  }||krd}|dkrtjj||d dd}t d}t| t tdd }|d |_|dd |_|  d|kr|d d krtjj|d d	 }|D ]}t|}|d }qvtjj|d}|j|_ |  nVt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|kr|d dkr|d |_%|  d|kr|d d krtjj|d d	 }|D ]}t|}|d }qtjj|d}|j|_ |  tjj|djddgd	 }g }|D ]} t| }|&| q,t'dd ||||d|d d!d"W S t'd#d$iW S nt'dd%d&W S W nT t(k
r }! z4t)*d' t+|||t#|! t'd(t#|!i W Y S d }!~!X Y nX d S ))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}zn|d krxtjj|djddgd }g }|D ]}t|}|| qLtdd|id	W S td
ddW S W nR t	k
r }	 z4t
d t|d|t|	 tdt|	i W Y S d }	~	X Y nX d S )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}z|d krtjj|djddd}| rtjj|djdd}t 	d}t
t|d }|dk rd}||_|  td	d
|dW S tdddW S W nT tk
r }	 z4td t|d|t|	 tdt|	i W Y S d }	~	X Y nX d S )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   sD  t  }|| }|d }t| jd}|}d}z|d krtjj||d dd	d}|
 rt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 ntdddW S W nT tk
r> } z4td t|||t| tdt|i W Y S d }~X Y nX d S )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  s0    


r  c              
   C   s  t  }|| }|d }t| jd}|}d}zJ|d krltjj||d dgd	d}|
 rtjj|dd	 }t|d	 |
 r|D ]0}	t|	}
|
d }tjj|d
}d|_|  qtjj||d ddgd}t d}d|kr(t d|_t tdd }|d}||_t| t tdd }|d}d|krjdd krj|d }n,t d}tt|d }|dk rd}||_d|_d|kr|d dkr|d |_|  tdd|||dW S tjj||d dd	 }|
 rZ|D ]}t|}|d }q
tjj||d ddgd}t d}d|krt d|_t tdd }|d}||_n|j}t| t tdd }|d}d|kr|d d kr|d }n,t d}tt|d }|dk r d}||_d|_d|kr.|d dkr.|d |_|  tjj|d
}tdd|||dW S tdddW S ntdddW S W nT tk
r } z4td  t|||t| td!t|i W Y S d }~X Y nX d S )"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}z|d krtjj||d dd	d}|
 rtjj||d dd}d|kr|d dkr|d d	 |_|d
 |_|  tddddW S ntdddW S W nT tk
r$ }	 z4td t|||t|	 tdt|	i W Y S d }	~	X Y nX d S )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  s,    


r  c              
   C   s  t  }|| }|d }t| jd}|}d}z|d kr(d|krR|d }nRtjddd}|D ]<}	t	|	}
t
|
 |d |
d ks|d |
d krf|
d }qftjj|ddd	d}t  d
}|D ]}t	|}qtjj||d	 |d |d |d |d ||d}|  tdddW S tdddW S W nT tk
r } z4td t|||t| tdt|i W Y S d }~X Y nX d S )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  sJ    


 



r  c                 C   s0  t  }|| }|d }t| jd}|}d}zt|d  |d kr|d D ]\}d|krl|d }nRtj	ddd}	|	D ]<}
t
|
}t| |d |d ks|d |d kr|d }qtjj|dd		d
d}t  d}t| |D ]}t
|}qtjj||d	 }| rvtjj||d}|d
 |_|d |_|d |_|d |_|d |_t |_|  qTtjj||d
 |d |d |d |d t |d}|  qTtdddW S tdddW S W nT tk
r* } z4t d t!|||t"| tdt"|i W Y S d }~X Y nX d S )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  sd    


 












r  c              
   C   s  t  }|| }|d }d}d}z|d krtjj|dddd}|D ]}t|}qJ|d }	tjj|dddd	d
d}
g }t|
}|
D ]"}t|}|d
 |d< |	| qg }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(|	| n|d dkr|	| qtjdjddgdddddd}g }|D ]}t|}|	| qrtd|j|d|||dW S td d!d"W S W nT tk
r } z4td# t|||t| td$t|i W Y S d }~X Y nX d S )%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  sL    


<&
r  c           Q      C   s  t  }|| }|d }d}d}z$|| }|d }|d kr4tjj|dddd}| r |D ]}t|}t| qft	jj|dddd|d dd	d
dd}	t|	d |	 r$tjj|dd}
|
D ]8}t|}|d }tjj
|d}d|_td |  qt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< qht|d  ||d krtjj||d |d dd}| rt|dkr|D ]X}t|}|d d|d< t|d}t|d d}|tdd }t|| j}qtjj||d |d |d d}| rvtjj||d |d dd}|D ]}t|}q|d d|d< t|d}t|d d}|tdd } t|| j}!|!dks|!dkr&t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|+},q4|,d1 d}-t  d}tjj||#|$|d! |d d2d3 }.|. rt|d! d4  nL|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rL|(dkrLt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r(t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q|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rV|d% dksJ|d" d@k sJ|d# d2k r0|d" dAk	r|d" d@k 	r|d! };t|d) }<d2}=d@}>dB}?t jdCdDdEdFdG}@t| |@D ]V}t|}A|d! |AdC kr|&!|;|<|=|>|?|AdD |AdE |AdF |AdG dH	 tdI qqT|d" dAk 	r|d# d2k	r|d! };t|d) dB }<d2}=d@}>dB}?t jdCdDdEdFdG}@|@D ]N}t|}A|d! |AdC k	rZ|&!|;|<|=|>|?|AdD |AdE |AdF |AdG dH	 	qZtdJ qT|d" dAk 
r^|d# d2k 
r^|d! };t|d) }<d2}=d@}>dB}?t jdCdDdEdFdG}@|@D ]N}t|}A|d! |AdC k
r
|&!|;|<|=|>|?|AdD |AdE |AdF |AdG dH	 
q
qT|d% dkrv|d* dkrv|d+ dkrvtdK |d$ d7k
r|d$ };t"t|d) dL }<nD|d$ d=k
r|d$ };t"t|d) dM }<n|d! };t|d) dB }<d2}=d@}>dB}?t jdCdDdEdFdG}@|@D ]N}t|}A|d! |AdC kr$|&!|;|<|=|>|?|AdD |AdE |AdF |AdG dH	 q$n|d% dkrT|d" d@krTt|d% dN |d! };t|d) dB }<d2}=d@}>dB}?t jdCdDdEdFdG}@|@D ]N}t|}A|d! |AdC kr|&!|;|<|=|>|?|AdD |AdE |AdF |AdG dH	 qܐq|d# d2k r|d! };t|d) }<d2}=d@}>dB}?t jdCdDdEdFdG}@|@D ]N}t|}A|d! |AdC krv|&!|;|<|=|>|?|AdD |AdE |AdF |AdG dH	 qvn|d! };t|d) dB }<d2}=d@}>dB}?t jdCdDdEdFdG}@|@D ]N}t|}A|d! |AdC kr|&!|;|<|=|>|?|AdD |AdE |AdF |AdG dH	 qnRt|| jdkr~dOt|'d }BndPt|'d }Btd|Bd|&dQ  W S qt  }Ctjj|CdR}Di }Et|D |D rtjj||d |d |CdSd!d"d#d$d%d&d'd(d)dd*d+d}Ft|FdT |FD ]}Gt|G}H|Hd# d2k sPt|Fdkrt|Hd!  |Hd! d5krxdU }I|Hd!< nR|Hd! d;krdV }I|Hd!< n6|Hd! d7krdW }I|Hd!< n|Hd! d=krdX }I|Hd!< |Hd# }J|Hd" }Kt#$|J|KdY}Lt#%|L|E|I< ng }&q(tddZt| d d[|&|Ed\W S t|| jdkrNdOt| d }BndPt| d }Btd|Bdd]W S qtjd!d^j|d}Mg }&|MD ]}t|}A|Ad! };t|Ad^ dB }<d2}=d@}>dB}?t jdCdDdEdFdG}@|@D ]N}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 ]}Gt|G}H|Hd# d2k st|Fdkr~t|Hd!  |Hd! d5krdU }I|Hd!< nR|Hd! d;krdV }I|Hd!< n6|Hd! d7kr4dW }I|Hd!< n|Hd! d=krNdX }I|Hd!< |Hd# }J|Hd" }Kt#$|J|KdY}Lt#%|L|E|I< ng }&qtddZt|d d[|&|Ed\W S ntdd_d2d]W S n6g }Nd`dadbidadcigi}O|N!|O tdd_d2|NddW S ntddedd]W S ntddfdd]W S ntddfdd]W S ntddgdhW S W nT t&k
r }P z4t'(di t)|||t|P tdjt|Pi W Y S d }P~PX Y nX d S )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  sv   




(



 
 
 0F

$
$
B
BB
B

*.26*4644
>
$6
>
&

rw  c           :      C   s  t  }|| }|d }t| jd}|}d}z4|d krVt  	d}t
jj|dddd}|D ]}	t|	}
qn|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}nt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rF|d&k rNtjj|d} d| _"|   t#jj||
d |
d d
d}!|!$ r|!D ]}"t|"}#|#d }$qFt#jj|$d}%||%_%|
d |%_&|
d |%_'| j|krd|%_(n:| j|krd|%_)n&| j|krd|%_*n| j|krd|%_+|%  npt#jj||
d |
d d
}&| j|krd|&_(n:| j|kr d|&_)n&| j|kr4d|&_*n| j|krFd|&_+|&  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 }$qt!d0|' |'rt!|'d d1 |'d })|)d' }*t!|*d2 |)d( }+|)d) },|)d* }-t!|-d3 t!|t|d d |*d4 |d&kr |*d,kr t|d d t|-kr t!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rf|*d,krft|d d t|-k rft!d7 tjj|d}0t!|0d6 d|0_"d|0_2|0  nX|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q|d d |kr$|4d8 d,krd:|1_4n||1_4n.|d d |krR|4d9 d,krLd:|1_4n||1_4|1  t#jj|$d}5|1j|kr|d|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$ rF|6D ]}7t|7}8q|8d; d,krF|8d< d,krF|8d= d,krF|8d> d,krFt!d? t9d@dAdBW S t9d,dCdBW S t9d@dDdBW S W nT t:k
r }9 z4t;<dE t=|||t>|9 t9dFt>|9i W Y S d }9~9X Y nX d S )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   sx  t  }|| }|d }t| jd}|}d}zt|d  |d krtjj	|d}|j
dkrt|d dkrt|d d }n|d d	krt|d d
 }td|dW S |j
d	krt|d dkrt|d d
 }n|d d	krt|d d }td|dW S ntdddW S W nT tk
rr }	 z4td t|||t|	 tdt|	i W Y S d }	~	X Y nX d S )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  s6    



r  c              
   C   s  t  }|| }|d }d}d}z|dkr&tjj|ddd}|D ]}t|}qHtjdj||d |d dd	d
ddd}	g }
g }g }g }g }|	D ]h}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< || q|d
 dkrNt	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< || q|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< || q|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< || qtddd   W S qt|
 td||||d!W S td"d#d W S W nT tk
r } z4td$ t|||t| td%t|i W Y S d }~X Y nX d S )&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 ]P}t|}|
d dkr||
d |
d |
d |
d	 |
d
 |d |
d |
d |
d |
d |
d |
d |
d |
d |
d |
d d qx|
d dkr||
d |
d |
d |
d	 |
d
 |d |
d |
d |
d |
d |
d |
d |
d |
d |
d |
d dd qxd}i |
d< tjj|
d d}|rJ|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r|d 7 }|jdkr|d!7 }|d"d  }|j|j|j|j|j|jd#|
d< ||
d |
d |
d |
d	 |
d
 |d |
d |
d |
d |
d |
d |
d |
d |
d |
d |
d ||
d$ |
d% |
d d& qxqLtd|||d'W S W nB tk
r& } z"td( td)t|i W Y S d }~X Y nX d S )*N7SELECT * FROM utility_exercise WHERE exerciseStatus = 1r  rq   accessLevelr   r   r  rA   r  r  	videoLinkolympicLiftpreExInstructionspostExInstructionsweightExistsdistanceExists
timeExists
repsExistsexAbilitiessetInstructionsr  r  rA   r  r  exVideosr  r  r  r  r  r  r  r  r  r  SkillTr  r  rA   r  r  r  r  r  r  r  r  r  r  r  r  r  skillru   r   r   , Weight, Reps, Time
, Distance, Speed, Heightr   r  r  timedistancespeedheightspeedExistsheightExistsr  r  rA   r  r  r  r  r  r  r  r  r  r  r  r  r  dependenciesr  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  sX    




np"
r  c                 C   s  t  }d}|| t|}g }g }g }|D ]|}t|}|d }	tjj|	d }
|
D ]N}t|}|d dkr|	|d |d |d |d	 |d
 |d |d |d |d |d |d |d |d |d |d |d d qZ|d dkr`|	|d |d |d |d	 |d
 |d |d |d |d |d |d |d |d |d |d |d dd qZd}i |d< t
jj|d d}|r*|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r|d 7 }|jdkr|d!7 }|d"d  }|j|j|j|j|j|jd#|d< |	|d |d |d |d	 |d
 |d |d |d |d |d |d |d |d |d |d |d ||d$ |d% |d d& qZq.td|||d'S )(Nr  r  rq   r  r   r   r  rA   r  r  r  r  r  r  r  r  r  r  r  r  r  r  Tr  ru   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  sJ    


np"r  c           	      C   st  t  }d}|| t|}g }g }g }|D ]0}t|}|d dkr||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 |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   rA   r  r  r  r  r  r  r  r  r  stressFactorexCoeffiecientexGroupexMainGroupflowTypedistanceFactorcover_imagethumb_imager'  )r  rA   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ExerciseCoverImageExerciseThumbImageExerciseVideoT)r  rA   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  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    rN  c              
   C   s  t  }|| }t| |d }d}d}t| z|d krt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|}	q|D ]}
t|
}qt	d|	|dW S t	dddW S W nJ t
k
r } z*t|||t| t	dt|i W Y S d }~X Y nX d S )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(    
&&

rU  c           d      C   s  t  }|| }|d }d}d}z|d krtjj|dddd}| r|D ]}t|}qTtjj|d ddd	d
}	g }
g }|	D ]}t|}t	|d
 d |d	 
dd}t|}|d
 dkr|d	 
dd}t|}q|d
 dkr|d	 
dd}t|}
qtjj|dddd|d ddddd}| rRtddddW S tjj|dd}t  d}| rx|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 }$|# r@t|#d(kr,|#D ]X}t|}%|%d d|%d)< t|d}&t|%d) d}'|'td(d* }(t|'|& j})qtjj||||d+ d,}*|* r*tjj|||d'd }+|+d d|+d)< t|d},t|+d) d}-|-td(d* }.t|-|, j}/|/d(ksz|/d&krt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 	]N}t|}tjdCj||d@ dDdEdFdGdHdIdJddKdL	}3|3D ]&}4t|4}5|5dH }6|5dK }7|6|7 }8qd|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 }?|? rtt	|d" dT  n|d@ |kr^|=dM dkr^t	dU tjj||||dVd"d2d3d4d5d6d7d8d9dd:d;d@dWd d }@|@ rZ||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r@t	dX tjj||||dVd"d2d3d4d5d6d7d8d9dd:d;d@dWd d }C|C r@||d@< ||d"< |CD ]}Dt|D}Eq|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	rt	dZ tjj||||dVd"d2d3d4d5d6d7d8d9dd:d;d@dWd d }I|I 	r||d@< | |d"< |ID ]}Jt|J}Kq|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	sl|d2 t!|8k 	sl|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
rZ|d2 |Lda k
rZ|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 	qz|d5 dkrf|d: dkrf|d; dkrf|d4 d krft	dd t	|d4  |d@ |k
r|d4 |k
r|}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
 n|d5 dk	rz|d2 dgk	rzt	|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 	qzqp|d3 dRk rf|d" }Nt!|d9 }O|6}P|8}Q|7}R|2"|Nt#|O|P|Q|R|d< |d= |d> |d? |d@ db
 n|
D ]}Tt!|Ld] d&krt!|Ld^ }Sn.t!|Ld] dkrt!|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
 qjnRt|'|& jd&krFdjt$|(d }Undkt$|(d }Utd|Ud(|2dl  W S q"t  }Vi }Wtjj||d |d |Vdmd"d2d3d4d5d6d7d8d9dd:d;d@d}Xt	|Xdn |X r|XD ]}Yt|Y}Z|Zd3 dRk st|Xd(krt	|Zd"  |Zd@ |kr,do }[|Zd"< nR|Zd@ |krHdp }[|Zd"< n6|Zd@ |krddq }[|Zd"< n|Zd@ |"kr~dr }[|Zd"< |Zd3 }\|Zd2 }]t%|\|]ds}^t|^|W|[< ng }2qtddtt$|.d du|2|WdvW S t|-|, jd&krdjt$|.d }Undkt$|.d }Utd|Ud(dwW S q>tjdCd"dxd@dAd<d=d>d?j|d}_g }2|_D ]}t|}tjdCj||d@ dDdEdFdGdHdIdJddKdL	}3|3D ]J}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
 qZt  }Vg }Wtjj||d |d |Vdmd"d2d3d4d5d6d7d8d9dd:d;d@d}Xt	|Xdn |X r|XD ]Z}Yt|Y}Z|Zd3 dRk st|Xd(kr|Zd3 }\|Zd2 }]t%|\|]ds}^|W"|^ ng }2qtddtt$|(d du|2|WdvW S ntddzdRd{W S n6g }ad|d}d~id}digi}b|a"|b tddzdR|adW S ntdddd{W S ntdddd{W S ntdddW S W nT t&k
r }c z4t'(d t)|||t$|c tdt$|ci W Y S d }c~cX Y nX d S )NrA   r?   rO  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__exerciseNamera  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setValrc  reps_per_setrf  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  rg  rv  r4  r^   r_   r_   r`   checkToPlanBuilder  sR   




(

. 

0X

0$
$
@
@
@
@


2

$88:8:>@

$(08@


&

r  c                 C   s  t  }z8|| }t| jd}|d }d}|dkr>tjj|d	dd}|
 r.tjdj|d	dd	d
ddddddd
dd}d|kr|d dkr|d dkr|j|d d}d}d|kr|d dkr|d dkr|j|d d}d}d|kr2|d dkr2|d d kr2|j|d d}d}d|krl|d dkrl|d d krl|j|d d}d}|
 rtt}g }	g }
g }g }g }|D ]n}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'  qtd|d(W S tdd)|d*W S ntdd+d,W S W nB tk
r } z"td- td.t|i W Y S d }~X Y nX d S )/Nrb   rA   Fru   rD   rj   r  r   r  r  r`  r  r  r  re  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  re  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  }zz|| }t| jd}|d }|dkrtjj|dd	dd}|
 rp|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}t|}|d }ttt|d d t|d  }tt|d t|d  d }|d dkrVt|d t|d  }nd}|dkrn|| }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!  qtd"|	|d#W S td$d%d&W S ntd$d'd&W S W nB tk
r } z"td( td)t|i W Y S d }~X Y nX d S )*Nrb   rC   ru   r,   rB   rj   rA   r  r   rD   r   r  r  r`  r  r  r  re  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	  sv    



8


$ 

$       

r  c                 C   s  t  }zv|| }|d }|dkrlt d}tjj|dddd}|	 rZ|D ]}t
|}qZtjdj||d |d |d |d	 d
ddddddddd	dd}|	 rHt| t|d i }	g }
g }g }g }g }|D ]0}t
|}|d dkrBt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 < q|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 < q|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 < q|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 < q|	D ]}|
|	|  q"td(|
d)W S td*d+d,W S ntd*d-d,W S ntd*d.d,W S W nB tk
r } z"td/ td0t|i W Y S d }~X Y nX d S )1NrA   ru   rh   r,   rB   rj   r  r   z	 23:59:59)rC   rj   r   r  r  r   r  r  r`  r  r  r  re  
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rPg }|d }|D ]}	tjj|	d |dd}
|
j	}|
j
}t| tjj||||	d	 |	d
 |	d |	d |	d |	d d	}d|	kr|	d d kr|	d dkr|	d dkr|	d |_d|	kr(|	d d kr(|	d dkr(|	d dkr(|	d |_|  ||j	 qPtdd|dW S tdddW S W nT tk
r } z4td t|||t| tdt|i W Y S d }~X Y nX d S )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   nullre  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/
  sL    

,
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)r  r_   r  r`   r  [
  s    
r  c              
   C   s:  t  }|| }|d }d}d}z|dkrtjj|dddd}| r|D ]}t|}qNtjj||d dd	d
d	 }	|	d krt
dddW S t
d|	d |	d
 |	d	 ddW S qt
dddW S nt
dddW S W nT tk
r4 }
 z4td t|||t|
 t
dt|
i W Y S d }
~
X Y nX d S )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
  s,    

"$
r  c              
   C   s   t  }|| }|d }d}d}z||dkrt }d}|| dt| }|| dt| }	||	 d}
||
 td	d
dW S tdddW S W nR tk
r } z4t	d t
|||t| tdt|i W Y S d }~X Y nX d S )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
  s,    





r  c                 C   s  t  }|| }|d }t| jd}|}d}z^|dkrtjj|dd	dd}|
 r~|D ]}t|}	qft|	d  tjj||d d		 }
t|
d
 |

 rtjj||d d	}
|d |
_|
  nZt }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 < qPtdd|dW S tjj||d d		 }
t|
d
 |

 rtjj||d d	}
|d |
_|
  nZt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 < qPtdd|dW S ntdddW S W nT tk
r } z4td t|||t| tdt|i W Y S d }~X Y nX d S )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}zr|dkrtjj|dd	dd}t
|dkr|tjj|d	d	dd}| r|D ]}t|}	qt|	d  t }
|d
 D ]}tjj||d d	 }t|d | r |D ]4}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 ntdddW S W nT tk
r } z4td t|||t| tdt|i W Y S d }~X Y nX d S )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
  s\    







r  c                 C   s  t  }|| }|d }t| jd}|}d}zD|dkrftjj|dd	dd}t
|dkr|tjj|d	d	dd}| r|D ]}t|}	qt|	d  t }
|d
 D ]}tjj||d d	 }t|d | r |D ]4}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 }
td |d
 D ]}tjj||d d	 }t|d | r|D ]6}t|}|d }tjj|d}|d |_|  qnHtjj|dd|d |d |d |d |d |
d	}|  t|d d qtdddW S ntdddW S W nT tk
r } z4td t|||t| tdt|i W Y S d }~X Y nX d S )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}z|dkrtjj|dddd}| r|D ]}t|}qNtjj|d |dd	d
d}	i }
|	D ]}t|}||
|d	 < qt	d|
dW S t	dddW S nt	dddW S W nT t
k
r$ } z4td t|||t| t	dt|i W Y S d }~X Y nX d S )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}  s.    


r  c              
   C   s  t  }|| }|d }|}d}d}zX|dkrltjj|dddd}| rZ|D ]}t|}	qXt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 qJqtd|dW S tdddW S ntdddW S W nT tk
r } z4td t|||t| tdt|i W Y S d }~X Y nX d S )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  sV    









r  c                 C   sH   t ||  jd\}}|  dkr(|d S d|   |kr@|d S |S d 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< qDtjdd}|D ]}	t|	}
t||
d< qp||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   sb  t  }|| }|d }d}z|d krtjddj|ddddd}| r|D ]}t|}qZ|d }|d }	|	dkrt	jj|d	dd
ddd}
g }t
|
}|
D ]"}t|}|d |d< || qg }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rJ|| n|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" td#dd$W S ntd d%d&W S ntd d'd(W S W nT tk
r\ } z4td) t|d*|t| td+t|i W Y S d }~X Y nX d S ),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  sZ    

"


<&
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 }qvtjdd	d
dddj|d	ddd}|D ]}t|}|d }|d }|d }t|d  tjj||d	 }| rTtjj||d}||_|
d |_||_|d |_|d |_t |_|  qtjj||
d |
d |t|d tt|d t| t |d}|  qt dddW S t dddW S W nT t!k
r } z4t"#d t$|||t%| t dt%|i W Y S d }~X Y nX d S )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__idrb  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)  s`    


(









r  c           
   
   C   s   t  }|| }|d }d}z~|d krg }tjj|dddd}| rv|D ]}t|}|| qNt	d|dW S t	d	d
dW S nt	dddW S W nR t
k
r }	 z4td t|d|t|	 t	dt|	i W Y S d }	~	X Y nX d S )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  }z|| }t| jd}|d }d}t }|dkrtj	j
|dddd }|rdt|d  d	 t| d
 }d|kr|d dkr|d dkr|d d krdt|d  d	 t| d }|| t|}	|	rtt}
g }g }g }g }g }|	D ]t}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 ntdd(d)W S W nB tk
r } z"td* td+t|i W Y S d }~X Y nX d S ),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  re  r  r~  )r  r  r  r  r  r  r  r  r  re  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~  sj    

 , 


 

^
r  c           	   
   C   s  t  }z|| }t| jd}|d }t| |dkrd|krtd tjj	|d d}|
 rtjj|d d}t|d |_|  tddd	W S n2tjjt|d |d
}|  tddd	W S W nB tk
r } z"td tdt|i W Y S d }~X Y nX d S )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  s0    

r  c           
   
   C   s   t  }z|| }t| jd}|d }g }t| |dkrtjj	||d d
 }| rt| |D ]}t|}|| qltd|dW S td|dW S tdd	d
W S  tk
r }	 z"td tdt|	i W Y S d }	~	X Y nX d S )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   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  rN  rU  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



?



