U
    O=d:                    @   s  d dl Z d dlmZ d dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZmZ d dlmZ d dlmZ d d	lmZmZ zd d
lmZ W n  ek
r   d d
lmZ Y nX d dlZd dlmZmZmZ d dlmZ d dlmZ d dl m!Z! d dl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, d dl-m.Z. d dl/m0Z0m1Z1m2Z2 d dl3m4Z4 d dl5m6Z6m7Z7m8Z8 d dl9m:Z: d dl;m<Z<m=Z=m>Z>m?Z?m@Z@ d dlAmBZB d dlCmDZDmEZEmFZFmGZGmHZHmIZI d dlJmKZK d dlLmMZMmNZNmOZOmPZPmQZQmRZR d dlmSZS d dlTmUZU d dlVmWZW d dlXmYZY e6ddge7e=e@feBd d! ZZe6ddge7e=e@feBd"d# Z[e6ddge7e=e@feBd$d% Z\e6ddge7e=e@feBd&d' Z]e6ddge7e=e@feBd(d) Z^e6ddge7e=e@feBd*d+ Z_d,d- Z`e6ddge7e=e@feBd.d/ Zad0d1 Zbe6ddge7e=e@feBd2d3 Zce6ddge7e=e@feBd4d5 Zde6ddge7e=e@feBd6d7 Zee6ddge7e=e@feBd8d9 Zfe6ddge7e=e@feBd:d; Zge6ddge7e=e@feBd<d= Zhe6ddge7e=e@feBd>d? Zie6ddge7e=e@feBd@dA Zje6ddge7e=e@feBdBdC Zke6ddge7e=e@feBdDdE Zle6ddge7e=e@feBdFdG Zme6ddge7e=e@feBdHdI Zne6ddge7e=e@feBdJdK Zoe6ddgeBdLdM Zpe6ddgeBdNdO Zqe6ddge7e=e@feBdPdQ Zre6ddge7e=e@feBdRdS Zse6ddge7e=e@feBdTdU Zte6ddge7e=e@feBdVdW Zue6ddge7e=e@feBdXdY Zve6ddge7e=e@feBdZd[ Zwd\d] Zxe6ddge7e=e@feBd^d_ Zye6ddge7e=e@feBd`da Zze6ddge7e=e@feBdbdc Z{e6ddge7e=e@feBddde Z|e6ddge7e=e@feBdfdg Z}e6ddge7e=e@feBdhdi Z~djdk ZeBdldm Ze6ddge7e=e@feBdndo Ze6ddge7e=e@feBdpdq Ze6ddge7e=e@feBdrds Ze6ddge7e=e@feBdtdu Ze6ddge7e=e@feBdvdw Ze6ddge7e=e@feBdxdy ZdS )z    N)parse_qs)EmailMultiAlternatives)
connection)model_to_dict)JsonResponseHttpResponse)render)Context)render_to_stringget_template)logger)datetime	timedeltatime)Maxstatus)timezone)
PlanPlanExcercisePlanSetsPlanPeriodsPlanMesocycle
MicrocyclePlanSessionPlanProtocolSelectedAbilities	PlanGoals)settings)UserFitnessProfileUserPlateWeight)AuthResponseSerializer)api_viewauthentication_classespermission_classes)Response)StartFitAuthenticationSessionAuthenticationStartFitSessionUtilAuthResponseIsAuthenticated)never_cache)UserPlanUserTestPlanUserExerciseUserPlanCycleUserSets	Mealplans)TransactionHistory)ExerciseTypeExerciseVideosPriceMappingPriceConversionAdvExercises)date)relativedelta)exceptionMail)
officeMailGETPOSTc           
   
   C   s   t  }|| }|d }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id   user_idr   rC   	freetrailTFUser Program Already Exists)successmessage	freeTrailcount
No Program)rG   rH   rJ   errormsg)r)   get_user_insessionr-   objectsfiltervaluesrJ   existsdictr   	Exceptionr   rL   str)
requeststratsessionutiluseruseridZ	checkplanZuserplansCountvalvalObjrI   e r]   (/var/www/html/services/Userplan/views.pyionicuserplancheck'   s"    

r_   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 )Nr@   utf-8	startdate%Y-%m-%d %H:%M:%S   days%Y-%m-%d	startDateplan_idnextRenewalDate
seasonDatedayOffmicrocyclecountplanidrC   rh   r@   dayoffmicrocycleid
deviceDate Tz!User Program updated successfully)rg   ri   planIdrq   rG   rH   dataFUser logged outrG   rH   rL   rM   )r)   rN   jsonloadsbodydecodeprintr   strptimer;   strftimer-   rO   rQ   rP   rR   rS   getrg   ri   rk   rj   rl   rr   saver   rT   r   rL   rU   )rV   rW   rX   rY   planInfora   
one_monthsri   plandtplaninfr\   r]   r]   r^   ionicupdatestartdate@   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 )Nr@   rg   rh   ri   rk   rA   rB   rf   TrG   plandataFrw   rx   rL   rM   r)   rN   r-   rO   rQ   rP   rS   r   appendr   rT   r   rL   rU   )	rV   rW   rX   rY   r   planArrr   planObjr\   r]   r]   r^   ionicgetuserplandataf   s"    

r   c           	   
   C   s   t  }|| }|d }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 )Nr@   rg   rh   r   rA      )rC   
status__inrs   rf   Tr   Frw   rx   rL   rM   r   )	rV   rW   rX   rY   r   ZpArrr   pObjr\   r]   r]   r^   ioniccheckstartdate~   s"    
 
r   c           *      C   s  t  }|| }|d }t| jd}z.|d krHd|kr>|d dkr>td tjj	||d dd
dd	}t|d
 | rF|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 dL
dMdNdOdP$ }g } |D ]}!t|!}"| %|" q| |dQ< |%| q(t&jj	|d
dRdSdTdUdddVdWdXdYdZd[d\d]}#|# r|#D ]}t|}$|%|$ qt'dd^|||||d_d`W S qXt()|da db}%|%tdd }|d}tj
ddcdddj	||d de}&|& r0|&D ]4}t|}'tjj|'d d}&||&_*|&  |&j}(qd|kr0|d d kr0tjj	|d d
 }|D ]}t|}|d }qtjj|d}|(|_|  t'dd^dd|id`W S nt'ddfdgW S W nB t+k
r }) z"t,-dh t'dit|)i W Y S d })~)X Y nX d S )jNr@   r`   plancompleteTzinside existsrm   rA   rC   rh   r   r   z->>ro      rr   rs   %wr      rf   rc   rd   	here i am	 00:00:00FrC   rh   renewalDaterg   ri   r   rE   rk   transactionIdtransation_idpkrX   r   r   rh   rh   	Goals__idProgramType__idUser__idplanNamecreatedBy__first_namecreatedBy__last_namepriceduration_weeksabilityplanGoal__goalNameplanDescriptionprogramType__programTypeName
planStatusnum_of_periodsnum_of_sessionsgoals	planPhotoprogramType_idcreatedBy_idlicencePolicyoriginalPlanner_idiosPrice	iosStatusindianIosPriceindianPricecreatedBy__avatar3White-Label<br><h6>Copyright &copy; 2017  . All rights reserved.</h6>ztxEOSIcMc4genWarmupVideo2esZzqjO5CccooldownVideo	planUsersFreeINRuserCountryX   	planPriceinfor5   )r   exercise_idZexercise_id__exerciseNameZexercise_id__exerciseDescZexercise_id__equipment	exercisescreatedDateexerciseId_idexerciseId_id__exerciseNameexerciseNametmax
updateTmax
updateTypeupdatedDaterC   userplan_id
workWeightworkoutTestDatezProgram renewed successfully)rg   plansr   ri   r   ru   ra   rb   rg   ri   rn   rw   rx   rL   rM   ).r)   rN   ry   rz   r{   r|   r}   r-   rO   rP   rQ   rR   rS   r   r   rr   r   r:   todayr   intrU   r;   creater3   r@   r   rJ   r   r   select_related
first_name	last_namecurrencyTypefloatr   distinctr   r.   r   r   r~   ri   rT   r   rL   )*rV   rW   rX   rY   r   Z	plancmpltr   Zplan1Z	uplaninfotodayDayoffDay	todayDater   ri   userplanDetailstransactionstratraobjtraidupdatetransactionsPlanDetailsr   tmaxArrr   downloadUsersuserCurrency	planInfosdtp	planInfo1partnerName	coachNameZexercisesObjZplanExsexexObjtmaxDetailsdataTmaxObjra   r   r   
userplanIdr\   r]   r]   r^   ionicUpdateRenewalDate   s    










P
64
(.
"
 


r   c           I      C   s  t  }|| }|d }t| jd}|d }|}d}z2|d kr\tjj|d}t	jjdd}	|	j
}
tjj||d ddgdd}| rtd	d
dW S tjj|ddjdd tjj|ddd}| rd}d	}nd}d}t d}t }tjj|d|d }| rl|D ]}t|}|d }q$t||d }|tdd }t d}|}n>t d}tt|d }t tdd }t d}|d}tjj||d |d |d |d |||d}d|kr|d dkr|d |_|  d|krr|d d krrtjj|d d }|D ]}t|}|d }q<tjj|d}|j|_ |  dddd d!d"d#d$dg	} d!d dg}!t!jj|d% }"|" rt"d& npd'}#d'}$| D ].}%|#d }#t!jj||%d(d)|#dd*}&|&  q|!D ].}'|$d }$t!jj||'dd|$dd*}&|&  qtj#d+j|d d,d-}(|(D ]})|)d- }*qJtjj|d}+d.},|+j$}-|+j%|*d/}.t&d0|.}/t'|,|/|- tjj|ddjdd tjj|d1jddgd2 }0g }1|0D ]d}2t|2}3tjj|3d d3( }4t)j#d4d5d6j|3d ddd7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdM}5|5D ]}6t|6}7dN|kr|dN dOkr|j*dPkrt)jjdddQ+ ,t-dJdR }8|dS dTkr|7dL |7d:< |7dL |7dJ< |7dL |7dU< n|7dJ |7d:< |7dJ |7dU< t|7d: d)krdV|7d:< nt)jjdddQ+ ,t-dJdR }9t.jj|9dW}:|:j/}8|dS dTkrbt.j j|7dL dW};nt.j j|7dJ dW};|;D ]}<t|<}=|=dX }>q||>|7d:< |dS dTkr|7dL |7dJ< t|7d: d)krdV|7d:< nt|7d: d)krdV|7d:< n|j*dPkr<|dS dTkr"|7dM |7d:< |7d: |7dU< n|7d: |7d:< |7d: |7dU< n4|dS dTkrd|7dM |7d:< |7d: |7dU< n|7d: |7d:< t0|7d: d)krdV|7d:< t1j#dYj|7d d3dZ}?d}@|?D ]}'t|'}A|@d[|AdZ  7 }@q|@dkr|@dd  }Bnd}Bt2j#d\j|7d d3d]}Cd}D|CD ]}'t|'}A|Dd[|Ad]  7 }Dq|DdkrJ|Ddd  }End}E|B|7d<< |E|7dC< |7dH d^ksz|7dH d_krtjj|7dG d}Ft|7d> d` tt|Fj%da t|Fj3  db |7d>< nFtjj|7dI d}Gt|7d> d` tt|Gj%da t|Gj3  db |7d>< dc|7dd< de|7df< |4|7dg< qJ|7|3dh< |14|3 qtddi||1||d	||djdkW S td	dldW S W nT t5k
r }H z4t67dm t8|||t|H tdnt|Hi W Y S d }H~HX Y nX d S )oNr@   r`   rh   zuserplan/createuserplan/ro   rA   r   rC   rh   r   FrF   rx   rB   r   r   Trf   )rC   r   ZnextRenewalDate__gterk   rc   rd   r   r   )rC   rh   r   ri   rg   r   rE   rk   rr   rs   r   r   r   2            
   g      @   g      @rD   zvalue Already eXists   r   )rC   weightrJ   barbellindexr   Plan__id)plan__idplan_id__planNamezPlan Subscription)r   plannamezsubscribeplan.htmlr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   
deviceTypeiosr   )activationStatusr   ZiosPrice__maxr   r   r   r   )inrusdPlanAbilitiesability_id__abilityz, PlanPurposesplanGoal_id__GoalNamer   r   r   r   r   r   r   r   r   r   r   zUser Program Saved Successfully)rg   r   r   ri   	freeTrialrt   rp   ru   rw   something wrongrM   )9r)   rN   ry   rz   r{   r|   r   rO   r   r8   inrValuer-   rP   rQ   rR   r   updater:   r   r   r   nowrS   next_weekdayr;   r   rU   r   rr   r   r3   r@   r   r!   r}   r   emailr   r
   r=   rJ   r   r   all	aggregater   r7   r  r   r   r   r   r   rT   r   	exceptionr<   )IrV   rW   usernamerX   r   planIDrequrlr   currencyValuesr  	planexistZ
planActiveZ
statusCoderE   r   dZcheckplanOffDayrdZrdObjr   Znext_mondayr   ZnextMondayStr
offDayCalcri   r   r   r   r   r   r   	platesArr
barbellArrextigwtsidxidx1wtwtinfrZ   r   rv   r  instanceSubsubjectto_emailctxrH   r   r   r   r   r   r   r   r   ZhighestPriceZhighestPriceValZ
highestValusdValuer  usdObj	dollarValplanAbilityVal	abilitiesr[   planAbilitiesplanPurposesValpurposes	planGoalsr   r   r\   r]   r]   r^   createUserPlan  sj   

 








P
"
"



64"
r=  c                 C   s*   ||    }|dk r|d7 }| t|d S )Nr      rd   )weekdayr   )r&  r?  Z
days_aheadr]   r]   r^   r    s    r  c              
   C   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 )Nr@   r>   zuserplan/subscriptionreminderrA   rB   rh   ri      rd   rf   r	  )r
  rC   r   r  Subscription reminderr  r   r   Z	plan_namesubscriptionreminder.htmlT-Subscription reminder email sent successfullyrx   zNothing happensr  rM   )r)   rN   r-   rO   rP   rQ   rS   r;   r   r   r:   r   r
   r=   r   rT   r   r  r<   rU   )rV   rW   r   rX   r"  r#  planobjr   dataObjrh   oneweekbeforeoneweekr   rv   r  	todaydater1  r2  r3  rH   r\   r]   r]   r^   subscriptionreminder  s>    





rJ  c                 C   s  t  tdd }tjjt |ddddddd	d
dddd	}|D ]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 )Nr@  rd   )ri   r   r	  r@   rh   ri   user_id__idZuser_id__organizationr  user_id__emailuser_id__first_nameZuser_id__userTyperf   rA  rB  rC  )namer  r   )organizationuserTyper   r  )r  	firstNamez#Subscription reminder for Gym UsersTrD  rx   )r   r   r;   r-   rO   rP   r:   r   rQ   rS   r   r
   r=   setaddr   r   rU   r   )rV   rI  rE  r   rF  rh   rG  rH  r  r1  r2  r3  rH   ZorganizationsuserArrZorgAdminArrorgZorgAdminValuesZorgsZorgAdminZorgfirstnameZorgValr]   r]   r^   reminder  sJ    2



rV  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 ))Nr@   r`   zuserplan/renewuserplan/r   Frh   rA   r   rg   r@  r   r   )Z mesocycle_id__period_id__plan_idTrf   rc   rd   r   r   r   r   r   r   r   r   r   rr   rs   r   r   r   z!User Program renewed Successfully)rg   r   r   ri   r  rt   ru   rH   zPlease provide Programrw   rx   r  rM   ),r)   rN   ry   rz   r{   r|   r-   rO   rP   rQ   rR   rS   r   r  r   utcre   absr   r   rJ   r   r:   r   r   r}   r;   r   ri   r   r3   r@   r   r   r   rU   r   rr   r   r   rT   r   r  r<   )"rV   rW   r   rX   r   r"  r#  num_of_microcyclesr   r%  rZ   r[   rg   r   ZdiffDatediffDaysZmicrocyclesr   r   r   r   r   r   r   r   r   r   r   ri   r   r   r   r   r\   r]   r]   r^   renewUserPlanK  s    


"





$
r[  c           
   
   C   s   t  }|| }|d }d}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 )Nr@   zuserplan/userplans/r   rA   r   r   Tr   rG   rv   Frw   rx   r  rs   rM   )r)   rN   r-   rO   rP   rQ   rS   r   r   rT   r   r  r<   rU   )
rV   rW   r   rX   r#  r   r   r   r   r\   r]   r]   r^   	userPlans  s"    

r]  c              
   C   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 )Nr@   r`   zuserplan/canceluserplan/rh   rA   r   rf   monthsr   Tz#User Program Cancelled Successfullyrx   FzNo Program has been Subscribedrw   r  rM   )r)   rN   ry   rz   r{   r|   r-   rO   rP   rQ   rR   r   r:   r   r   r}   r;   r   r   r   rT   r   r  r<   rU   )rV   rW   r   rX   r   r"  r#  r%  r   r   r   ri   r\   r]   r]   r^   cancelUserPlan  s0    


r`  c              
   C   s  t  }|| }|d }t| jd}|}d}z
|d kr,t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}t d}tt|d }|dk rxd}||_d|_d|k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|krjt d|_t tdd }|d}||_n|j}t| t tdd }|d}t d}tt|d }|dk rd}||_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 )!Nr@   r`   zuserplan/activateuserplan/rh   r   r   rA   rB   Z	zfsdfsdfsro   r   rf   Z	firstPlanrc   rd   r^  r   r   r   rr   rs   Tz#User Program Activated Successfully)rG   rH   rg   ri   rk   r   zUser Program Already ActivatedzNo Active Planrx   Frw   r  rM   )r)   rN   ry   rz   r{   r|   r-   rO   rP   rQ   rR   r}   rS   r   r   r   r:   r   r   rg   r;   ri   r   rU   rk   rr   r   rT   r   r  r<   )rV   rW   r   rX   r   r"  r#  r%  Z
PrePlanObjplZplObjZplIdZupdateplanObjr   r   Z	renewDaysZ	renewDater   ri   r(  r   planValrZ   r[   r   ZuserplanValr\   r]   r]   r^   activateUserPlan  s    
















rc  c           
   
   C   s*  t  }|| }|d }t| jd}|}d}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 )Nr@   r`   zuserplan/userplanseasondate/rh   rA   r   Zseason_daters   r   rl   TzSeason Date Set Successfully	   )rG   rH   ZseasonMicroCycleIDFrw   rx   r  rM   )r)   rN   ry   rz   r{   r|   r-   rO   rP   rQ   rR   r   rj   rl   r   r   rT   r   r  r<   rU   )
rV   rW   r   rX   r   r"  r#  r%  r   r\   r]   r]   r^   UserPlanSeasonDate3  s,    


re  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 )Nr@   r`   zuserplan/createtest/r   r   exerciseCoderA   rB   rh   rf   r   rC   rh   r   r   r   r   r   r   T$User Test Program Saved Successfullyrx   Frw   r  rM   )r)   rN   ry   rz   r{   r|   r5   rO   rQ   rS   r}   r-   rP   r   r  r:   r   r.   r   r   r   rT   r   r  r<   rU   )rV   rW   r   rX   testInfor"  r#  exIdexerciseDetailsrZ   objuserplanpager   r   rF  userTestPlanDetailsr\   r]   r]   r^   createUserTestP  sJ    


 



ro  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 )Nr@   r`   zuserplan/createtestnewr   r   r   rf  rA   rB   rh   rf   r   rC   rC   r   r   rg  Trh  rx   rw   rG   meaasger  rM   )#r)   rN   ry   rz   r{   r|   r}   r5   rO   rQ   rS   r-   rP   r   r  r:   r   r.   rR   r   rh   r   r   r   r   r   r   r   r   r   rT   r   r  r<   rU   )rV   rW   r   rX   	testInfosr"  r#  ri  rj  rk  rZ   rl  rm  r   r   rF  	tmaxExisttmaxObjrn  r\   r]   r]   r^   createUserTestNew~  sd    


 












rw  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 )%Nr@   r>   userplan/userTestExercise/rA   rB   rh   rD   r   r   r   r   	tmaxValuero   Exercise__idr   r   r   r   r   Z8session_id__microcycle_id__mesocycle_id__period_id__planexerciseName__idexerciseName__exerciseNamer   
Videos__idid__inexerciseDesc	equipmentvideo_idvideo__videoLinkTrG   programTyperJ   	isTmaxSetr   exArr	mainExArrFrw   rx   r  rM   )r)   rN   r-   rO   rP   rQ   rS   r.   lenr   r   r   r   r   r@   order_byr5   r   r   rT   r   r  r<   rU   )rV   rW   r   rX   r"  r#  rm  r   rF  r!  rn  dataArrrJ   r  r   r   r   r   mainExr  mexmexObjr\   r]   r]   r^   userTestExercise  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 )kNr@   r>   rx  rD   r   rh   TrC   	BP_missedSQAT_missed	OP_missed	DL_missedr   r  r  r  r  herero   r   z in here in updating the userplan#here In the Completion Of ExcersiceF"Your Starter Program Got CompletedrG   rH   ZCompletedStatusrf   rC   rh   r   testDaterd   r   rC   rh   r   createdDate__ltr   rA   userSessionuserSession__max
0987654321rC   rh   r   r  r  r   	totalReps	totalSetsnextExerciseNamemissedexerciseDater   rX   exerciseWorkWeight	recovered
progressedPREVIOUS EXERCISESBP_progressedSQAT_progressedOP_progressedDL_progressedr   r   rC   rh   r   r   createdDate__gtr   ExistsBENCH PRESSin Here1OLYMPIC PRESS)rC   rh   r   r   -idin Here2SQUATIN HEre3	DEAD LIFTIN HEre4
differencer  rd  r  exerciseTypeNameexerciseTypeCodeZexcercisetypevideosexerciseTypeDescr  )	rN  r   setsreps	reps_setsexCodeexVideoexDescexEquipJUST MISSED CASEzBADLY MISSED CASECheck where I am{Gz?皙?IN here TO test7Your session is over. <br/> Next workout will start on 1Break day. <br/> Your next workout will start on rG   rH   r   mainArr)createdDate__gterC   rh   r   r  TODAYS EXERCISESbpsqopdlcompletedSetscompletedReps Your next workout will start on r  rG   rH   r   mainZcompletedJsonrG   rH   r   r   User Is ready for the testPlanworkoutexercisenameBPSquat)rG   rH   r   WorkOutz Please Check Excersise StartDatePlease Subscribe for a Planrw   rx   r  rM   )*r)   rN   r-   rO   rP   rQ   rR   rS   r}   r0   r   r   r   r   r   r  r:   r   r   r.   r  r~   r   rX  re   r/   ZUserSessionr  r   r  rU   r   r4   r   roundry   dumpsrz   rT   r   r  r<   )QrV   rW   r   rX   r"  r#  r   va1rl  plancyclecompletedZcompleteuserplanZupZ	updetailsZupIdZupdateuserplanrm  r   time_thresholdr   rF  usertestpageTestPObjd1d2Zd4difDaysuserexcersisepagesessDetailsZsesZsessValsessd1sessd2sessd3sessdifDayssessionInfort   userpIduserexcersisesr  d3	nextCheck
nextScheckcycleDetailsrZ   valuecycvalue	todayDoneexcersiceworkweight2ww2workW2excersiceworkweightwwworkWexcersiceworkweight4ww4workW4excersiceworkweight1ww1workW1rN  
workweightrR  r  
repsPerSetexTypeDetailsdataObj1rH   r   ZtodaySessionObjcompletedArrtodaysexersisesuxuxecompletedExNamer  r  completeJsonsession1excersicArrr  r\   r]   r]   r^   checktoTestPlan  sv   




(



 
 
 0F

$
$
B
BB
B

*.26*4644
>
$6
>
&

r  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 )GNr@   r`   rx  rf   rA   rB   rh   exerciseZ
currentSetr  r  r   r  ZcreatedDate__maxrN  ZcompletedSetsRepsr   rj  )rC   rh   r   r   r  r  r  	period_idmesocycle_idmicrocycle_id
session_idr  r   )r   rC   rh   r   r  r  r   r   Zreps_sets_donero   )rC   rh   r  r  r  r  r   userexercise_idsetExercise	setNumberr  PlanSession__idMicrocycle__idPlanMesocycle__idPlanPeriods__idr	  ,session__microcycle__mesocycle__period__plantransitExerciser   ZdataBaseIdsr   r  r  r  r  r  	regressedT)r&  z-exerciseDaterD   z"here Iam In the Previous Excersicezhere I Comezmissed ValuesZprevWWzCHECKING THE CONDITIONSzin HERE TO RECOVERzIN HEREzin HERE TO Updater  r  rs   r  r  r  r  r  Fr  rx   zrecords Inserted Sucessfullyrw   r  rM   )?r)   rN   ry   rz   r{   r|   r   r  r:   r   r-   rO   rP   rQ   rS   r/   r  r   r~   r   r   r@   r   r   r  r  lastr   r   r1   r   r   r  r}   r  r0   rR   rC   rh   r   r  r  r  r  excluder  BP_recoveredSQAT_recoveredOP_recoveredDL_recoveredr&  r  nextExerciseName_idr  r  r  r  r   rT   r   r  r<   rU   ):rV   rW   r   rX   excersiseInfor"  r#  r   rm  r   r   ZexsessionInfor  r  ZsessIdZExersiceDetailsZlastExIdrj  exNameZexSetr  ZExerciseInfor  ZexerciseObj
SetDetails	exDetailsex1	exercise1	exercise3ex2	exercise2	exercise4ZexerciseMissedZplanCyclevaluespdr   ZplancycleIdZ	planCycleZplancycleDetailsZExercisePreviousInfoObjZpcdataZExercisePreviousInfoZ
missedFlagZrecoveredFlagZprogressedFlagZpreWorkWeightZexerciseRecoveredZplancycleRecoveryZexerciseUpdateZexerciseProgressedZ
cyclevalueZcvZcycZplancycleProgressr  ZcyclceZcyclesr\   r]   r]   r^   createExcersiseSession\  s   


*






6

.
 



D


.
.
8"
8
r9  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 )Nr@   r`   zuserplan/testforTest/strengthrD   rA   r   r   r   r  T)rG   r  r  Frw   rx   r  rM   )r)   rN   ry   rz   r{   r|   r}   r    rO   r   genderr   r   rT   r   r  r<   rU   )
rV   rW   r   rX   r.  r"  r#  r;  r   r\   r]   r]   r^   testForTestProgram)  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 )&Nr@   r>   zuserplan/exercisedetails/rs   rD   rh   utility_exercise__idr  r   exerciseId__exerciseNamer  r  r  镲?  ʡE@nB_?ormtotalTonnageavgWtrelavgwt	totalworkcalr  sh|?@r  #~j@r  M@TzExercise does not foundrx   )rG   ZbenchZsquatZolympicZdeadliftFrw   r  rM   )r)   rN   r-   rO   rP   rQ   rS   r/   r   r   r   r   r   r}   rT   r   r  r<   rU   )rV   rW   r   rX   r"  r#  rm  r   r   
uservaluesr  ZbenchpressArrZsquatArrZolympicpressArrZdeadliftArrdt1rF  rC  rD  avgwtrF  rG  rH  r\   r]   r]   r^   completedExcerciseDetailsM  s    


.
$ $ $ $ 
rO  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  ro   accessLevelr   r   rf  r@   r  r  	videoLinkolympicLiftpreExInstructionspostExInstructionsweightExistsdistanceExists
timeExists
repsExistsexAbilitiessetInstructionsr/  r  r@   r  r  exVideosrS  rT  rU  rQ  rV  rW  rX  rY  rZ  r[  SkillTr/  r  r@   r  r  r]  rS  rT  rU  rQ  rV  rW  rX  rY  rZ  r[  skillrs   r   r   , Weight, Reps, Time
, Distance, Speed, Heightr   r  r  r   ZdistancespeedheightspeedExistsheightExistsr/  r  r@   r  r  r]  rS  rT  rU  rQ  rV  rW  rX  rY  rZ  r[  dependenciesrk  rl  r   rG   defaultExArrr  ZskillArrr  rM   )r)   rN   r   cursorexecutedictfetchallrS   r6   rO   rP   rQ   r   r9   r   	maxWeightmaxRepsmaxTimemaxDistancemaxSpeed	maxHeightr   rT   r   r  rU   )rV   rW   r   xr  resultQueryr  rp  skilArrr   rF  videoIdvideosrZ   r[   stringadvExDetailsr\   r]   r]   r^   excersiceTypeDetails  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 )(NrP  r  ro   rQ  r   r   rf  r@   r  r  rR  rS  rT  rU  rV  rW  rX  rY  rZ  r[  r\  r^  Tr_  rs   r   ra  rb  rc  rd  re  rf  rg  r   rh  rk  rl  rm  ro  )r   rq  rr  rs  rS   r6   rO   rP   rQ   r   r9   r   rt  ru  rv  rw  rx  ry  r   )rV   rz  r  r{  r  rp  r|  r   rF  r}  r~  rZ   r[   r  r  r]   r]   r^   excersiceTypeDetailsPDC  sJ    


np"r  c           
      C   s^  t  }d}|| t|}g }g }g }|D ]}t|}|d }	|d dkr||d |d |d |d |d	 |d
 |d |d |d |d |d |d |d |d |d |d |d d q.|d dkr.||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  rQ  r   r   r@   r  r  rT  rU  rV  rW  rX  rY  r[  stressFactorexCoeffiecientexGroupexMainGroupflowType)r/  r@   r  r  rT  rU  rQ  rV  rW  rX  rY  r[  r  r  r  r  r  rZ  r^  T)r/  r@   r  r  rT  rU  rQ  rV  rW  rX  rY  rZ  r[  r  r  r  r  r  r`  ro  )r   rq  rr  rs  rS   r   r   )
rV   rz  r  r{  r  rp  r|  r   rF  r}  r]   r]   r^   newexcersiceTypeDetailsPDC  s    

t|r  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 )Nr@   r>   userplan/getPlanDates/r	  rA   rB   rg   endDater   r  rh   r   T)rG   ZActivePlanDetailsZPreviousPlanDetailsFrw   rx   rM   )r)   rN   r}   r-   rO   r   rP   rQ   rS   r   rT   r<   rU   )rV   rW   r   rX   r"  r#  Z
activeplanZpreviousplanr   rF  Zdatr  r\   r]   r]   r^   getPlanDatesStatus  s(    
&&

r  c           d      C   s  t  }|| }|d }d}d}z|d krtjj|dddd}| r|D ]}t|}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 )Nr@   r>   r  rD   r   rh   r   r  rQ   protocolZprotoId'"rd  r   Tr  r  r  r  r  Fr  r  rA   rB   rf   r  r   r!  r"  r	  r#  r   r%  ZtransitExercise__exerciseNamer}  r   r  r   r  rd   r   r  r  r  r  ZexerciseId__idr  r  r  r  r  r  r   rX   r  r  r  ZexerciseId__exerciseCodeZexerciseId__excercisevideosZexerciseId__exerciseDescZexerciseId__equipment
exerciseIdr>  r  rz  )r$  exerciseName_idexerciseName_id__exerciseNamer  r   num_of_sets	totalInol	intensitynum_of_reps	extra_setr  r  r  r  r   r   r  r  r  )rC   rh   r   r  r  r  r  r  r  zin here for testingZtmaxpercentZ	tmaxvalued   ZminRepsru  )
rN  r   r  r  r  r  r  r  r  rj  r  r  r  r  r  r  Zhjsjsr  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  )rG   rs  r   r  r  r  r  )rG   rs  r   r  r  rw   rr  r  rM   )*r)   rN   r-   rO   rP   rQ   rR   rS   r   r}   replacery   rz   r0   r   r   r  r:   r   r   r   r  r.   r   r  r~   r   rX  re   r/   r'  r  r   r   r   r  rU   r  rT   r   r  r<   )drV   rW   r   rX   r"  r#  r   r  rl  ZprotocolDetailsZprogressionvaluesZregressionvaluesptZprotoObjZ
rulevaluesrulesrQ   r  rm  r   r   rF  rt   r  r1  r2  r3  Zex1NameZex3Namer4  r5  r6  Zex2NameZex4Namer7  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ZplanExDetailsseZsetValr  Zreps_per_setr  r  r  r  rZ   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r	  regZregtmaxValuerN  r
  rR  r  r  ZprotmaxValueprorH   r   r  r  r  r  r  r  r  r  r  r  r  r  r\   r]   r]   r^   checkToPlanBuilder3  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 )/Nr`   r@   Frs   rD   rh   r=  r   r  r  r  r>  r  r  r  exerciseId__workFormularj  r   0)r   Trt   r   	from_date)ZexerciseDate__gteto_date)ZexerciseDate__lter?  r@  皙#@rB  rC  rD  rE  rF  rG  rH  rC  rD  rE  rF  rG  rH  rj  r/  r  r  r
  r  	sessionIdsessionDetailsrG   rk  No Exercise detailrG   rH   comboNo Planrx   r  rM   )r)   rN   ry   rz   r{   r|   r-   rO   rP   rQ   rR   r/   r   r  collectionsdefaultdictlistrS   r   r   r   r   rT   r   r  rU   )rV   rW   r   userInforX   r  rm  rL  rk  actualExDatabpArrsqArropArrdlArrrM  rF  rC  rD  rN  rF  rG  rH  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 )*Nr`   rC   rs   rA   rB   rh   r@   r=  r   rD   r   r  r  r  r>  r  r  r  r  rM  r?  r@  r   r  rB  rC  rD  rE  rF  rG  rH  r  r  T)rG   rk  r   Fr  rx   rK   r  rM   )r)   rN   ry   rz   r{   r|   r-   rO   rP   rQ   rR   rS   r/   r   r  r  r  r  r   r   r   r   rT   r   r  rU   )rV   rW   r   r  rX   rm  r   r   rL  rk  r  r  r  r  r  rM  rF  rC  rD  rN  rF  rG  rH  r\   r]   r]   r^   customerEexcerciseDetailsJson  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 )1Nr@   rs   rf   rA   rB   rh   r=  r   z	 23:59:59)rC   rh   r   r  r  r   r  r  r  r>  r  r  r  Z
todaysDater  r?  r@  rA  rB  rC  rD  rE  rF  rG  rH  r  r  )rj  r/  r  r  rI  r  rJ  r  rK  Tr  Fr  rx   rK   zUser Logged outr  rM   )r)   rN   r:   r   r   r-   rO   rP   rQ   rR   rS   r/   r   r  r}   r   r   r   r   rT   r   r  rU   )rV   rW   r   rX   r   rm  r   r   rL  rk  r  r  r  r  r  rM  rF  rC  rD  rN  rF  rG  rH  r\   r]   r]   r^   todyasexcerciseDetailsJson.	  s
   



J


$        
$        
$        
$ X
r  c                 C   s  t  }|| }|d }t| jd}|}d}zX|dkrzg }|d }|D ]}	t }
dt|	d  }t	| |

| t|
}|D ]D}t|}|d }|d }|d	 }|d
 }|d }|d }|d }qtjj|	d |dd}|j}|j}t	| tjj|||||||||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 |_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 |_d|	krT|	d d krT|	d dkrT|	d dkrT|	d |_|	d |_|	d |_|jd krzd}n|j}|t|	d  |_|  |j}tjj||||||||	d ||||	d |	d |	d |	d d}d|	kr|	d d kr|	d dkr|	d dkr|	d |_ d|	krZ|	d d krZ|	d dkrZ|	d dkrZ|	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 |_d|	kr|	d d kr|	d dkr|	d dkr|	d |_d|	krR|	d d krR|	d dkrR|	d dkrR|	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 )'Nr@   r`   zuserplan/createsetdetails/rs   Zset_detailsa  SELECT ps.*, pe.id as planExerciseId, pe.exerciseName_id, pses.id as planSessionId, pmc.id as planMicroId, pm.id as planMesoId, pp.id as planPeriodId FROM `Plan_plansets` ps left join Plan_planexcercise pe on ps.excercise_id = pe.id left join Plan_plansession pses on pe.session_id = pses.id left join Plan_microcycle pmc on pses.microcycle_id = pmc.id left join Plan_planmesocycle pm on pmc.mesocycle_id = pm.id left join Plan_planperiods pp on pm.period_id = pp.id WHERE ps.id = setIdZplanExerciseIdZplanSessionIdZplanMicroIdZ
planMesoIdZplanPeriodIdr  rh   rA   )rh   rC   r   )	rC   rh   r  r  r  r  planexercise_idr   r   r  nullZexerciseDistanceZexerciseTimeZexerciseSpeedZexerciseHeightr
  Z	setSerialr   r  ZsetCompletedDate)rC   rh   r  r  r  r  r  
planset_idr   r   r  r  r  setDatesetWorkWeightr   TzSet data entered successfully)rG   rH   r  Frw   rx   r  rM   )'r)   rN   ry   rz   r{   r|   r   rq  rU   r}   rr  rs  rS   r-   rO   r   r@   rh   r/   get_or_createsetIntensityadvDistanceadvTimeri  rj  r  r  r  r   r   r1   r   	setStatusr   r   rT   r   r  r<   )rV   rW   r   rX   Z
setInfoObjr"  r#  ZsetArrZsetInfosZsetInforz  usersr{  r   rF  ZsetIDZplanexerciseIDZ	sessionIDZmicrocycleIDZmesocycleIDZperiodIDZ
exerciseIDZuserPlanObjZ
userPlanIDr!  ZexerciseCreateObjcreatedZperNumberRepsZuserExerciseIDr0  r\   r]   r]   r^   createUserSetData	  s    





4
4
4
4
4


4
4
4
4
4
4

r  c                    s&   dd | j D   fdd|  D S )z'Return all rows from a cursor as a dictc                 S   s   g | ]}|d  qS )r   r]   ).0colr]   r]   r^   
<listcomp>
  s     z dictfetchall.<locals>.<listcomp>c                    s   g | ]}t t |qS r]   )rS   zip)r  rowcolumnsr]   r^   r  
  s   )descriptionfetchall)rq  r]   r  r^   rs  
  s    
rs  c              
   C   s:  t  }|| }|d }d}d}z|dk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 )Nr@   r>   zuserplan/userLastSession/rs   rA   rB   rh   )rC   r   r  r  FzNo Program datarx   T)rh   r  set_idr\  zNo Active Programrw   r  rM   )r)   rN   r-   rO   rP   rQ   rR   rS   r1   r'  r   rT   r   r  r<   rU   )rV   rW   r   rX   r"  r#  rm  r   r   Z
lastSetObjr\   r]   r]   r^   userLastSessionID
  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 )Nr@   r>   zuserplan/deleteUserData/rs   zset foreign_key_checks = 0z-delete from Userplan_usersets where user_id =z1delete from Userplan_userexercise where user_id =zset foreign_key_checks = 1TzData deletedrx   Frw   r  rM   )r)   rN   r   rq  rr  rU   r   rT   r   r  r<   )rV   rW   r   rX   r"  r#  rz  ZforeignKeyChecksZusersetdataZ
userexDataZsetforeignkeychecksr\   r]   r]   r^   deleteUserData:
  s,    





r  c                 C   s  t  }|| }|d }t| jd}|}d}zn|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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 )Nr@   r`   zuserplan/updateTmaxData/rs   rA   rB   rh   r   rq  lllllr   ro   	rC   rh   r   r   r   r   r   r   r   r   TTmax Updatedru   FrK   rx   rw   r  rM   )r)   rN   ry   rz   r{   r|   r-   rO   rP   rQ   rR   rS   r}   r.   r   r   r   r   r   r5   r   r   r   rT   r   r  r<   rU   )rV   rW   r   rX   r   r"  r#  rm  r   r   testplanDatar   ZexerciseDatacreateTplanZtestplanDataUtestPlanObjdtar\   r]   r]   r^   updateTmaxDataV
  sZ    







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 )Nr@   r`   zuserplan/updateBulkTmaxData/rs   rA   rB   rh   r   r   ZtmaxDatarq  r  r   Z
updatetmaxr   r  Z123445Tr  rx   FrK   rw   r  rM   )r)   rN   ry   rz   r{   r|   r-   rO   rP   rQ   r  rR   rS   r}   r   r   r.   r   r   r   r   r   rT   r   r  r<   rU   )rV   rW   r   rX   r   r"  r#  rm  r   r   r   r   r  rZ   r[   Z
testPlanIDZupdateTplanr  r\   r]   r]   r^   updateBulkTmaxData
  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 )Nr@   r>   zuserplan/getUpdatedTmaxData/rs   rA   rB   rh   )r   rC   r   r   r   Tr\  FrK   rx   rw   r  rM   )r)   rN   r-   rO   rP   rQ   rR   rS   r.   r   rT   r   r  r<   rU   )rV   rW   r   rX   r"  r#  rm  r   r   r  r  r  r\   r]   r]   r^   getUpdatedTmaxData
  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 )Nr@   r>   zuserplan/getNextSessionDatars   rA   rB   rh   )r   z5SELECT * FROM Plan_plansession WHERE microcycle_id = restTimer   Tr\  FrK   rx   rw   r  rM   )r)   rN   r-   rO   rP   rQ   rR   rS   r1   r'  r   r  r:   r  r}   re   num_mondays_betweenr   r?  r  r   rq  rU   rr  rs  r   rT   r   r  r<   )rV   rW   r   userIDrX   r"  r#  rm  r   r   ZuserSetDatar  r   ZlastSetDatedeltarZ  Z
numMondaysZtodayNumberZuserSetMicroCycleZnextMicroCyclerz  Z
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 )Nr@  r   rA   )divmodre   r?  )startendZ	num_weeks	remainderr]   r]   r^   r    s    r  c                 C   s   g }t jddd}|D ]}t|}t||d< qtjdd}|D ]}t|}t||d< qDtjdd}|D ]}	t|	}
t||
d< qp||d |d |
d d	 td
|dS )Nr@   date_joinedr   num_of_registrationsr   num_of_plansubscriptionsrX   num_of_tmaxtests)r  r  r  TrG   details)	r   rO   rQ   rS   r  r-   r.   r   r   )rV   r  r  r   rv   	userplansr   r   userTmaxr   rv  r]   r]   r^   plansubscriptions  s    r  c              
   C   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 ),Nr@   zuserplan/createUserTestingDatar	  r   rA   rB   rh   plan_id__programTyperD   r   r   r   r   ry  ro   rz  r   r   r   r   r   r{  r|  r}  r   r~  r  r  r  r  r  Tr  zTesting Advanced Plan DetailsF)rG   r   zPlease Subscribe to a Planrx   rw   rr  r  r>   rM   )r)   rN   r-   rO   r   rP   rQ   rR   rS   r.   r  r   r   r   r   r@   r  r5   r   r   r}   rT   r   r  r<   rU   )rV   rW   r   rX   r#  rm  r   rF  r!  r  rn  r  rJ   r  r   r   r   r   r  r  r  r  r\   r]   r]   r^   createUserTestingData6  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 )Nr@   r`   zuserplan/creatingTmaxrA   rB   rh   rf   r   r   r   r   r   r5   )Z?session_id__microcycle_id__mesocycle_id__period_id__plan_id__idZexerciseName_id__idr  ZexerciseName_id__workFormularp  rq  r   rg  Trh  rx   rw   rr  r  rM   )&r)   rN   ry   rz   r{   r|   r-   rO   rP   rQ   r   r  r:   r   r}   rS   r   r   r.   rR   r   rh   r   r   r   r   r   r   r   r   r   r  r   rT   r   r  r<   rU   )rV   rW   r   rX   rt  r"  r#  rm  r   r   rF  rt   ZplanExerciseDetailsr   r   r/  rj  Z	exFormularu  rv  rn  r\   r]   r]   r^   creatingTmaxn  s`    


(








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