
    %gc                     
   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	m
Z
mZmZ d dlmZmZ d dlmZ d dl d	d
l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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' d	dl( d dl)m*Z*m+Z+ d dl,Z,d dl-Z-d dl)m.Z. d dl/Z/d dlmZ d dl0m1Z2 d dl,Z,d dl"m3Z3 d dl4 d dl5 d dl6m7Z7 d dl8Z8d dl9m:Z: d Z;d Z<d Z=d Z> G d de      Z? G d  d!e      Z@ G d" d#e      ZA G d$ d%e      ZB G d& d'e      ZC G d( d)e      ZD G d* d+e      ZE G d, d-e      ZF G d. d/e      ZG G d0 d1e      ZH G d2 d3e      ZI G d4 d5e      ZJ G d6 d7e      ZK G d8 d9e      ZL G d: d;e      ZM G d< d=e      ZN G d> d?e      ZO G d@ dAe      ZP G dB dCe      ZQ G dD dEe      ZR G dF dGe      ZS G dH dIe      ZT G dJ dKe      ZU G dL dMe      ZV G dN dOe      ZW G dP dQe      ZX G dR dSe      ZY G dT dUe      ZZ G dV dWe      Z[ G dX dYe      Z\ G dZ d[e      Z] G d\ d]e      Z^ G d^ d_e      Z_ G d` dae      Z` G db dce      Za G dd dee      Zb G df dge      Zc G dh die      Zd G dj dke      Ze G dl dme      Zf G dn doe      Zg G dp dqe      Zh G dr dse      Zi G dt due      Zj G dv dwe      Zk G dx dye      Zl G dz d{e      Zm G d| d}e      Znd~ Zod Zpd Zqd Zr G d de      Zs G d de      Zt G d de      Zu G d de      Zv G d de      Zwd Zx G d de      Zy G d de      Zz G d de      Z{ G d de      Z| G d de      Z}d Z~ G d de      Zd dlmZ d Z G d de      Zy)    )_python_exit_worker)Template)View)TemplateView)authenticateloginlogout)renderredirect)HttpResponse)*   )forms)messages)mail)render_to_stringN)settings)	Paginator)JsonResponse)login_required)method_decorator)QSum)Count)django_pbkdf2_sha256)HttpResponseRedirect)timezone)defaultdictc                     | j                   j                  d      }t        j                  j	                  |d      j                         }|rt        d      S d}t        |d      S )Nemailr   r!   is_superusertruez)This email does not exist in our databaseFsafe)GETgetUserobjectsfilterfirstr   r   )requesttextpostmessages       6/var/www/html/Manimaran/manimaran/admin_panel/views.py
checkEmailr2   %   sV     $a8>>@	v	7'	g5	))    c                    | j                   j                  dd      }| j                   j                  d      }t        j                  j                  |d      }|j	                  |      dk(  rd}t        |d      S t        d	      S )
Nr!    passwordr   r"   Fz!Please enter the correct passwordr%   r$   )r'   r(   r)   r*   check_passwordr   r   )r-   r.   r6   userr0   s        r1   checkLoginPasswordr9   .   sq    #KKOOJ'  t1 =!U*/'	g5	))	v	r3   c                     | j                   j                  d      }t        j                  j                  | j                  j
                  d      }|j                  |      dk(  rd}t        |d      S t        d      S )Nold_passwordr   r"   Fz%Does not match with the old password.r%   r$   )	r'   r(   r)   r*   r8   r!   r7   r   r   )r-   r;   r8   r0   s       r1   adminCheckPasswordr<   8   sg    /  w||'9'9 K%.3'	g5	))	v	r3   c                     t         j                  j                         j                         } | rV| j                  sy| j                  }|dd  }t        |      dz   }t        |      }|j                  d      }dt        |      z   S y)NTRANS000001   r   TRANS)UserTranscationr*   alllasttranscation_idintstrzfill)lastObjtheIds     r1   generateTranscationsIdrJ   C   sy    

!
!
%
%
'
,
,
.			
%ab	%E
1%E
%A%	U		r3   c                       e Zd ZdZd Zd Zy)
AdminLogInzadmin-signin.htmlc                 p    |j                   j                  rt        d      S t        || j                        S N/admin-dashboardr8   is_authenticatedr   r   template_nameselfr-   s     r1   r(   zAdminLogIn.getT   .    \\""
1
22	**	++r3   c                 &   	 t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }t        ||      }|j                  dk(  r,t        j                  |d       t        || j                        S |j                  r,t        j                  |d       t        || j                        S |r-t        ||       t        j                  |d       t        d      S t        j                  |d	       t        || j                        S t        || j                  d
|i      S # t         $ r+}t        j"                  |d       t        d      cY d }~S d }~ww xY w)Nr!   r6   )r!   r6   Fz/You account has been deactivated by superadmin.z+You account has been deleted by superadmin.zLogin successfullyrO   zInvalid email and password.form&Something went wrong.Please try again.zadmin-signin)r   AdminSigninFormPOSTis_validcleaned_datar(   r   statusr   errorr   rR   end_dater	   successr   	Exceptionwarning)rT   r-   rW   r!   r6   r8   es          r1   r/   zAdminLogIn.postY   sF   #



-4
mmo  $$W-E  $$Z0H%(;D{{e^^GNO7D..//}}^^GJK7D..//GTw 45()) ^^G:;7D..//'$,,vtn==	 #GEF
>
""#s6   B-E 07E (.E +E E 	F% FFFN__name__
__module____qualname__rR   r(   r/    r3   r1   rL   rL   R   s    $,
#r3   rL   c                       e Zd ZdZd Zd Zy)AdminForgetPasswordzforgot-password.htmlc                 p    |j                   j                  rt        d      S t        || j                        S rN   rP   rS   s     r1   r(   zAdminForgetPassword.gety   rU   r3   c           	      F   t        j                  |j                        }|j                         rT|j                  j                  d      }t        j                  j                  |      j                         }dj                  t        d      D cg c]6  }t        j                  t        j                  t        j                   z         8 c}      }dt#        |j$                        z   dz   |z   }t#        t&        j(                        |z   }||_        |j-                          d}	t/        dd	|i      }
|
}t&        j0                  }|}t3        j4                  |	|||g|

       t7        j8                  |d       t;        d      S t=        || j>                  d|i      S c c}w )Nr!   r!   r5      z/forgot-admin//zForgot Passwordz forget_admin_password_email.htmllinkhtml_messagez/A link has been successfully sent to your mail.z/admin-forget-passwordrW   ) r   AdminForgetPasswordFormrZ   r[   r\   r(   r)   r*   r+   r,   joinrangerandomchoicestringascii_lettersdigitsrF   r!   r   BASE_URLforgot_password_linksaver   EMAIL_HOST_USERr   	send_mailr   r`   r   r   rR   )rT   r-   rW   r!   	admin_objnran_numbaselinkcompletelinksubjectrr   plain_message
from_emailtos                 r1   r/   zAdminForgetPassword.post~   sV   		&	&w||	4$	]]_!!'*5||""5"17799WWSXY[S\]S\afmmF$8$86==$HIS\]^7#ioo"66<wF8h''(83<$,9!>>7"#EP\G]^<=((:2>>'=*rdVGNO
+
,,
$,,vtn
== ^s   ;FNrd   rh   r3   r1   rj   rj   w   s    ',
>r3   rj   c                       e Zd ZdZd Zd Zy)ForgetPasswordVerificationzreset-password.htmlc                    t        | j                  j                        }|j                  d      d   }t        j
                  j                  |      j                         }|j                  dk(  rt        |d      S t        j
                  j                  ||      j                         }|rd}nd}t        || j                  t                     S )	Nro   rm   
LinkExpiryzlink_expire.html)r!   r|   TF)rF   r-   pathsplitr)   r*   r+   r,   r|   r   rR   locals)rT   r-   rp   
user_emaillink_expiryr   valids          r1   r(   zForgetPasswordVerification.get   s    	T\\	$zz#r"*##J#7==?+%%5
+
,,ll!!*T!RXXZ)55	**68	44r3   c                    t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }t        | j                  j                        }|j                  d      d   }t        |       t        j                  j                  |      j                         }|rI|j                  |       d|_        |j#                          t%        j&                  |d       t)        d      S t%        j*                  |d	       t)        d      S t-        || j.                  d
|i      S )Nnew_passwordconfirm_new_passwordro   rm   r   zPassword changed successfully/admin-loginzSomething went wrongrW   )r   ForgetVerificationFormrZ   r[   r\   r(   rF   r-   r   r   printr)   r*   r+   r,   set_passwordr|   r}   r   r`   r   r^   r   rR   )rT   r-   rW   r   r   rp   r   user_objs           r1   r/   zForgetPasswordVerification.post   s   		%	%gll	3$	]]_##''7<++//0FG
dll
 4

3#:ll!!*!5;;=8,'$0H!MMOW=>N##NN723N##
$,,vtn
==r3   Nrd   rh   r3   r1   r   r      s    &5>r3   r   c                   :    e Zd ZdZ e ed            d        Zy)AdminDashboardzdashboard.htmlr   	login_urlc                    t        j                         }|j                  }t        j                  j                  dd      j                         }t        j                  j                  dd      j                         }t        j                  j                  dd      d d }t        j                  j                  dd      d d }t        j                  j                  d      j                         }t        j                  j                  d      d d }	t        j                  j                  |d      j                  t        d	            d
   }
t        j                  j                  |      }g d}t        t              }|D ]6  }||j                  j                  xx   t        |j                        z  cc<   8 t!        dd      D cg c]
  }||dz
      }}dt!        dd      D cg c]  }||   	 c}dg}t        j                  j                  d      }t        j                  j                  d      }g d}t!        dd      D cg c]"  }|j                  |      j                         $ }}t!        dd      D cg c]"  }|j                  |      j                         $ }}|||||d}t#        || j$                  t'                     S c c}w c c}w c c}w c c}w )NTr   end_date__isnullis_userr   	is_workerr?   r   r   r   )created_at__yearr   amountamount__sumr   JanFebMarAprMayJunJulAugSepOctNovDec   Cornnamedata  start_date__year  start_date__month)monthsbookings_this_year_databookings_last_year_data
categoriesseries_data)r   nowyearr)   r*   r+   countUserBookingsrA   	aggregater   r   float
created_atmonthr   ru   r   rR   r   )rT   r-   r   current_yeartotal_userstotal_workers
all_workerall_usertotal_bookingsbooking_objtotal_paymentsr   month_namesamounts_by_monthentryir   r   bookings_this_yearbookings_last_yearr   r   r   contexts                           r1   r(   zAdminDashboard.get   s   #,##ta#HNNP+,,%%!%LRRT-||""dq"I"1M*\\  !t DRaH(''..$.GMMO.%%,,,EbqI+"**11<cg1hrrsvw  tA  B  CP  Q. 
	 	 	'	'	'	F$ e+ !'eE$$**+uU\\/BB+  -2!RL9LqAE"L*9 aQS*U1+;A+>*UVW+ $++22D2I#++22D2I `&]bcdfh]ij]iXY/666KQQS]ij]bcdfh]ij]iXY/666KQQS]ij 55' 
**68	44- :*U kjs   K0K 'K%'K*Nre   rf   rg   rR   r   r   r(   rh   r3   r1   r   r      s#    !>N;<.5 =.5r3   r   c                   @    e Zd ZdZ e ed            d        Zd Zy)AdminProfilezadmin_profile.htmlr   r   c                 @    t        || j                  t                     S Nr   rR   r   rS   s     r1   r(   zAdminProfile.get       	**68	44r3   c                 X   t        j                  |j                        }|j                         re|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }t        j                  j                  |j                  j                        j                  ||||       |j                  j                  d      rvt        |j                  j                  d            }d|z   }t        j                  j                  |j                  j                        j                  t        |      	       t        j                   |d
       t#        d      S t%        || j&                        S )N
first_name	last_namer!   phone_numberidr   r   r!   r   avatarro   r   zUpdate Succesfullyzadmin-profile)r   AdminProfileFormrZ   r[   r\   r(   r)   r*   r+   r8   r   updateFILESuploadTheImagesrF   r   r`   r   r   rR   )rT   r-   rW   r   r   r!   r   fileUrls           r1   r/   zAdminProfile.post   sD   

 
 
.4
mmo""&&|4J!!%%k2I!!'*E$$((8LLL7<<??+22jS\ch  wC2  D}}"W]]..x89W[W	\\GLLOO,333w<3HW23O$$'$,,--r3   Nre   rf   rg   rR   r   r   r(   r/   rh   r3   r1   r   r      s(    %>N;<5 =5.r3   r   c                   @    e Zd ZdZ e ed            d        Zd Zy)AdminResetPasswordadmin_reset_password.htmlr   r   c                 @    t        || j                  t                     S r   r   rS   s     r1   r(   zAdminResetPassword.get  r   r3   c                 &   	 t        j                  |j                        }|j                         r|j                  j	                  d      }t
        j                  j	                  |j                  j                        }|j                  |       |j                          t        |       t        j                  |d       t        d      S t        |dd|i      S # t         $ r+}t        j"                  |d       t        d      cY d }~S d }~ww xY w)	NconfirmPasswordrm   z)You have successfully reset your passwordr   r   rW   rX   admin-dashboard)r   ChangePasswordFormrZ   r[   r(   r)   r*   r8   r!   r   r}   r
   r   infor   r   ra   rb   )rT   r-   rW   r6   r8   rc   s         r1   r/   zAdminResetPassword.post  s    &

"
"7<<
04
mmo|| 12H||gll&8&89DhIIK
7OMM'FGN## '6GG	 &GEF
$
%%&s$   C
C C 	D% DDDNr   rh   r3   r1   r   r     s(    ,>N;<5 =5&r3   r   c                   6    e Zd Z e ed            d        Zy)AdminLogoutr   r   c                 Z    t        |       t        j                  |d       t        d      S )NzLogout Succesfullyr   )r
   r   r`   r   rS   s     r1   r(   zAdminLogout.get  s%    /
701	.	!!r3   Nre   rf   rg   r   r   r(   rh   r3   r1   r  r        >N;<" ="r3   r  c                   @    e Zd ZdZ e ed            d        Zd Zy)privacyPolicyzprivacy_policy.htmlr   r   c                     t         j                  j                  d      j                         }t	        || j
                  t                     S )NPrivacy	page_typeContentPagesr*   r+   r,   r   rR   r   rT   r-   cont_objs      r1   r(   zprivacyPolicy.get)  s;    !!((9(=CCE(	**68	44r3   c                 j   t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }t        j                  j                  d      j                         }|r=t        j                  j                  |j                        j                  ||d       n"t        j                  j                  ||d       t        j                  |d       t        d      S t!        || j"                  t%                     S )	Ntitlecontentr  r	  r   r  r  r
  Updated Successfullyz/privacy-policyr   content_page_formrZ   r[   r\   r(   r  r*   r+   r,   r   r   creater   r`   r   r   rR   r   rT   r-   rW   r  r  r   s         r1   r/   zprivacyPolicy.post.  s    		 	 	.$	]]_  )5""9-7



%
%	
%
:
@
@
B4
477+22wYb2ceGiPG34
$
%%
++FH
55r3   Nr   rh   r3   r1   r  r  '  s(    &>N;<5 =56r3   r  c                   @    e Zd ZdZ e ed            d        Zd Zy)termsAndConditionsz
terms.htmlr   r   c                     t         j                  j                  d      j                         }t	        || j
                  t                     S )NTermsr	  r  r  s      r1   r(   ztermsAndConditions.get@  s;    !!((7(;AAC(	**68	44r3   c                 j   t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }t        j                  j                  d      j                         }|r=t        j                  j                  |j                        j                  ||d       n"t        j                  j                  ||d       t        j                  |d       t        d      S t!        || j"                  t%                     S )	Nr  r  r  r	  r   r  r  z/terms-and-conditionsr  r  s         r1   r/   ztermsAndConditions.postE  s    		 	 	.$	]]_  )5""9-7



%
%
%
8
>
>
@4
477+22wY`2aeGgNG34
*
++
++FH
55r3   Nr   rh   r3   r1   r  r  >  s(    >N;<5 =56r3   r  c                   :    e Zd ZdZ e ed            d        Zy)
faqListingzfaq_listing.htmlr   r   c                    t         j                  j                  d      j                  d      }t	        |d      }|j
                  j                  d      }|j                  |      }t        || j                  t                     S NTr   -id   page)Faqr*   r+   order_byr   r'   r(   get_pager   rR   r   )rT   r-   data_obj	paginatorpage_numberfaq_objs         r1   r(   zfaqListing.getW  si    [[48AA%H(!$)'+{+'	**68	44r3   Nr   rh   r3   r1   r  r  U  s#    #>N;<5 =5r3   r  c                   @    e Zd ZdZ e ed            d        Zd Zy)addFaqzadd_faq.htmlr   r   c                 @    t        || j                  t                     S r   r   rS   s     r1   r(   z
addFaq.getc  r   r3   c                    t        j                  |j                        }|j                         rx|j                  j                  d      }|j                  j                  d      }t        j                  j                  ||       t        j                  |d       t        d      S t        || j                  t                     S )Nr  r  r  r  zCreated Successfully/faq-listing)r   r  rZ   r[   r\   r(   r$  r*   r  r   r`   r   r   rR   r   )rT   r-   rW   r  r  s        r1   r/   zaddFaq.postg  s    		 	 	.$	]]_  )5""9-7;;E'2G34
>
""
++FH
55r3   Nr   rh   r3   r1   r,  r,  a  s(    >N;<5 =5	6r3   r,  c                   @    e Zd ZdZ e ed            d        Zd Zy)editFaqzedit_faq.htmlr   r   c                     t         j                  j                  |d      j                         }t	        || j
                  t                     S NTr   r   )r$  r*   r+   r,   r   rR   r   )rT   r-   r   r*  s       r1   r(   zeditFaq.getu  s;    KK"=CCE'	**68	44r3   c                    t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }t        j                  j                  |      j                  ||       t        j                  |d       t        d      S t        || j                  t                     S )Nr  r  r   r/  r  r0  )r   r  rZ   r[   r\   r(   r$  r*   r+   r   r   r`   r   r   rR   r   )rT   r-   r   rW   r  r  s         r1   r/   zeditFaq.postz  s    		 	 	.$	]]_  )5""9-7;;##%#@G34
>
""
++FH
55r3   Nr   rh   r3   r1   r2  r2  s  s(     >N;<5 =5	6r3   r2  c                   6    e Zd Z e ed            d        Zy)	deleteFaqr   r   c                     t         j                  j                  |      j                  t        j                  j                                t        j                  |d       t        d      S )Nr   )r_   zFaq Deleted Successfullyr0  )	r$  r*   r+   r   datetimer   r   r`   r   )rT   r-   r   s      r1   r(   zdeleteFaq.get  sP    ++""H,=,=,A,A,C"D
767	.	!!r3   Nr  rh   r3   r1   r8  r8    r  r3   r8  c                   :    e Zd ZdZ e ed            d        Zy)adminNotificationszadmin_notifications.htmlr   r   c                     t         j                  j                         j                  d      }t	        || j
                  t                     S )Nr!  )AdminNotificationsr*   rB   r%  r   rR   r   )rT   r-   
notify_objs      r1   r(   zadminNotifications.get  s8    !))--/88?*	**68	44r3   Nr   rh   r3   r1   r<  r<    s#    +>N;<5 =5r3   r<  c                       e Zd Zd Zy)deleteAdminNotificationsc                    	 |j                   dk(  r|j                  j                  d      }|rl|j                  d      D cg c]  }t	        |       }}t
        j                  j                  |      j                          t        j                  |d       nt        j                  |d       t        d      S t        d      S c c}w # t        $ r+}t        j                  |d       t        d	      cY d }~S d }~ww xY w)
Nr'   	delete_id,)pk__inzDeleted Sucessfullyz*At least One notification must be selectedz/admin-notificationsrX   r   )methodr'   r(   r   rE   r>  r*   r+   deleter   r`   r^   r   ra   rb   )rT   r-   idsr   int_id_listrc   s         r1   r(   zdeleteAdminNotifications.get  s    	/~~&kkook258YYs^"D^r3r7^K"D&..55[5IPPR$$W-BCNN7+WX 677   677 #E  	/W&NO-..	/s6   ?C CA'C ;
C C 	C? C:4C?:C?Nre   rf   rg   r(   rh   r3   r1   rA  rA    s    /r3   rA  c                   :    e Zd ZdZ e ed            d        Zy)helpAndSupportListzhelp_support_list.htmlr   r   c                    t         j                  j                         j                         }t         j                  j	                  d      j                         }t         j                  j	                  d      j                         }t         j                  j                         j                  d      }t        |d      }|j                  j                  d      }|j                  |      }t        || j                  t                     S )NT)r]   Fr!  r"  r#  )HelpSupportr*   rB   r   r+   r%  r   r'   r(   r&  r   rR   r   )	rT   r-   totalresolvedpendinghelp_objr(  r)  sup_objs	            r1   r(   zhelpAndSupportList.get  s    



!
!
#
)
)
+%  '''6<<>(&&&6<<>'  $$&//6(!$)'+{+'	**68	44r3   Nr   rh   r3   r1   rL  rL    s#    )>N;<5 =5r3   rL  c                   :    e Zd ZdZ e ed            d        Zy)viewHelpAndSupportzhelp_support_view.htmlr   r   c                     t         j                  j                  |      j                         }t	        || j
                  t                     S Nr   rN  r*   r+   r,   r   rR   r   )rT   r-   r   rS  s       r1   r(   zviewHelpAndSupport.get  s;    &&"&-335'	**68	44r3   Nr   rh   r3   r1   rU  rU    s#    )>N;<5 =5r3   rU  c                   @    e Zd ZdZ e ed            d        Zd Zy)sendReplyHelpSupportzhelp_support_reply.htmlr   r   c                     t         j                  j                  |      j                         }t	        || j
                  t                     S rW  rX  )rT   r-   r   helps       r1   r(   zsendReplyHelpSupport.get  s;    



$
$
$
+
1
1
3$	**68	44r3   c                    t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }t        d|||d      }|}d}	|}
t        j                  |||	|
g|       t        j                  j                  |      j                  |t        j                  j                         d	
       t        j                   |d       t#        d      S t%        || j&                  t)                     S )Nr!   r   replyzsupport_email.html)
reply_textr!   r   support@olfix.co.ukrq   r   T)r^  
reply_dater]   zsend successfullyz/help-and-support-list)r   sendsupportformrZ   r[   r\   r(   r   r   r   rN  r*   r+   r   r:  r   r   r`   r   r   rR   r   )rT   r-   r   rW   r!   r   r^  rr   r   r   r   s              r1   r/   zsendReplyHelpSupport.post  s	   			w||	,$	]]_!!'*5""9-7  )5"#7V[fm9no<=%:2>>'=*rdV$++%XEVEVEZEZE\dh+iG01
+
,,
++FH
55r3   Nr   rh   r3   r1   rZ  rZ    s(    *>N;<5 =56r3   rZ  c                   :    e Zd ZdZ e ed            d        Zy)customerListingzcustomer_listing.htmlr   r   c                 J   t         j                  j                  dd      j                  d      }|j                  j                  d      }|rbt         j                  j                  t        |      t        |      z  t        |      z  t        |	      z  dd
      j                  d      }|j                  j                  d      }t        j                  j                         j                  d      }|j                  j                  d      }|r9t         j                  j                  ||dz   |z   gdd      j                  d      }t        |d      }|j                  j                  d      }|j                  |      }	t        || j                  t                     S )Nr   Tr   r!  searchphone_number__icontainsemail__icontainsfirst_name__icontainslast_name__icontainsr   
start_date%H:%M:%Sr_    )start_date__ranger   r   r"  r#  r)   r*   r+   r%  r'   r(   r   r:  r   strftimer   r&  r   rR   r   )
rT   r-   r'  search_postsearch_starttime
search_endr(  r)  cust_objs
             r1   r(   zcustomerListing.get  s   \\  1 FOOPUV()+ll!!!K"H^iIj"jkl  FQ  lR  #R  ST  lw  Sx  #x  LP  [\!  ]  f  f  gl  m8.,						 	)	)*	5${{z**ll!!\:PSCSUYCY4Zlp{|!}  G  G  HM  N8!$)'+,(	**68	44r3   Nr   rh   r3   r1   rd  rd    s#    (>N;<5 =5r3   rd  c                   :    e Zd ZdZ e ed            d        Zy)customerDetailszcustomer_details.htmlr   r   c                 $   t         j                  j                  |dd      j                         }t        j                  j                  |d      }t        j                  j                  |d      }t        || j                  t                     S )Nr   Tr   r   r   Accepted)r8   booking_status	Completed)r)   r*   r+   r,   r   r   rR   r   )rT   r-   r   ry  upcomingpasts         r1   r(   zcustomerDetails.get  ss    \\  Bt LRRT(!!((*(U(				$	$Hk	$	R$	**68	44r3   Nr   rh   r3   r1   r{  r{    s#    (>N;<5 =5r3   r{  c                   @    e Zd ZdZ e ed            d        Zd Zy)editCustomerDetailszedit_customer_details.htmlr   r   c                     t         j                  j                  |dd      j                         }t	        || j
                  t                     S )Nr   Tr}  )r)   r*   r+   r,   r   rR   r   rT   r-   r   r   s       r1   r(   zeditCustomerDetails.get  s=    ll!!R!!MSSU(	**68	44r3   c                    t        j                  |j                        }|j                         r>|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }t        j                  j                  |d      j                  ||||       |j                  j                  d      rbt        |j                  j                  d            }d	|z   }t        j                  j                  |
      j                  t        |             t        j                  |d       t        d      S t!        || j"                  t%                     S )Nr   r   r!   r   r   )r   r   r   r   ro   r   r   Updated successfully/get-customer-listing)r   editcustomerformrZ   r[   r\   r(   r)   r*   r+   r   r   r   rF   r   r`   r   r   rR   r   )	rT   r-   r   rW   r   r   r!   r   r   s	            r1   r/   zeditCustomerDetails.post  s;   				-$	]]_!!%%l3:  $$[19  )5##''7<<<"q)00jU^gl  }I0  Jmm!GMM--h78GKGLL2%%S\%:G34
*
++
++FH
55r3   Nr   rh   r3   r1   r  r    s(    ->N;<5 =56r3   r  c                       e Zd Zd Zy)deleteCustomerc                 
   t         j                  j                  |dd      j                         }t        j                  j                         |_        |j                          t        j                  |d       t        d      S )Nr   Tr}  zUser deleted successfullyr  r)   r*   r+   r,   r:  r   r_   r}   r   r`   r   r  s       r1   r(   zdeleteCustomer.get  sc    ||""bd"LRRT(''++-(
--/
778	)	**r3   NrJ  rh   r3   r1   r  r        +r3   r  c                   6    e Zd Z e ed            d        Zy)changeCustomerStatusr   r   c                    	 t         j                  j                  |j                  d         }|j                  d   |_        |j                          |j                  dk(  r:t        j                  |d       t        |j                  j                  d            S t        j                  |d       t        |j                  j                  d            S # t        $ r+}t        j                  |d       t        d	      cY d }~S d }~ww xY w)
Nmain_idr   r]   1zCustomer status is activatedHTTP_REFERERzCustomer is deactivatedrX   r   r)   r*   r(   rZ   r]   r}   r   r`   r   METAr^   ra   rb   r   rT   r-   pubrc   s       r1   r/   zchangeCustomerStatus.post  s    &  gll9&= >3X&3:88:	jjCW<=((899NN756((899	 &GEF
$
%%&$   BC 9C 	D
 D?D
D
Nre   rf   rg   r   r   r/   rh   r3   r1   r  r        >N;<& =&r3   r  c                   :    e Zd ZdZ e ed            d        Zy)categoryListingzcategory_listing.htmlr   r   c                    t         j                  j                  d      j                  d      }|j                  j                  d      }|r:t         j                  j                  t        |      d      j                  d      }t        |d      }|j                  j                  d      }|j                  |      }t        || j                  t                     S )NTr   r!  rf  name__icontainsr"  r#  )Categoryr*   r+   r%  r'   r(   r   r   r&  r   rR   r   rT   r-   r'  ru  r(  r)  cat_objs          r1   r(   zcategoryListing.get2  s    $$$=FFuM()+%%a&DX\%]ffglm8!$)'+{+'	**68	44r3   Nr   rh   r3   r1   r  r  0  s#    (>N;<5 =5r3   r  c                   @    e Zd ZdZ e ed            d        Zd Zy)addCategoryzadd_category.htmlr   r   c                 @    t        || j                  t                     S r   r   rS   s     r1   r(   zaddCategory.get@  r   r3   c                    t        j                  |j                        }|j                         r|j                  j                  d      }t        j                  j                  |      }|j                  j                  d      rIt        |j                  j                  d            }d|z   }t        |      |_        |j                          t        j                  |d       t!        d      S t#        || j$                  t'                     S )Nr   r   imagero   Created successfully/category-listing)r   addcategoryformrZ   r[   r\   r(   r  r*   r  r   r   rF   r  r}   r   r`   r   r   rR   r   )rT   r-   rW   r   r  r   s         r1   r/   zaddCategory.postD  s    			w||	,$	]]_





'4$$D$17mm GMM--g67GKGg,GMLLNG34
&
''
++FH
55r3   Nr   rh   r3   r1   r  r  >  s(    $>N;<5 =56r3   r  c                   @    e Zd ZdZ e ed            d        Zd Zy)editCategoryzedit_category.htmlr   r   c                     t         j                  j                  |      j                         }t	        || j
                  t                     S rW  )r  r*   r+   r,   r   rR   r   rT   r-   r   r  s       r1   r(   zeditCategory.getW  s;    $$$+113'	**68	44r3   c                 ^   t        j                  |j                        }|j                         r|j                  j                  d      }t        j                  j                  |      j                  |       |j                  j                  d      rYt        |j                  j                  d            }d|z   }t        j                  j                  |      j                  |       t        j                  |d       t        d      S t        || j                   t#                     S )	Nr   r   r  r  ro   r  r  r  )r   r  rZ   r[   r\   r(   r  r*   r+   r   r   r   r   r`   r   r   rR   r   )rT   r-   r   rW   r   r   s         r1   r/   zeditCategory.post\  s    



-$	]]_





'4b!(((5mm GMM--g67GKGr"))'):G34
&
''
++FH
55r3   Nr   rh   r3   r1   r  r  U  s(    %>N;<5 =56r3   r  c                       e Zd Zd Zy)changeCategoryStatusc                    	 t         j                  j                  |j                  d         }|j                  d   |_        |j                          |j                  dk(  r:t        j                  |d       t        |j                  j                  d            S t        j                  |d       t        |j                  j                  d            S # t        $ r+}t        j                  |d       t        d	      cY d }~S d }~ww xY w)
Nr  r   r]   r  zCategory status is activatedr  zCategory is deactivatedrX   r   )r  r*   r(   rZ   r]   r}   r   r`   r   r  r^   ra   rb   r   r  s       r1   r/   zchangeCategoryStatus.postm  s    &  $$',,y*A$B3X&3:88:	jjCW<=((899NN756((899	 &GEF
$
%%&r  N)re   rf   rg   r/   rh   r3   r1   r  r  k  s    &r3   r  c                       e Zd Zd Zy)deleteCategoryc                    t         j                  j                  |d      j                         }t        j                  j                         |_        |j                          t        j                  |d       t        d      S )NTr5  Category deleted successfullyr  )r  r*   r+   r,   r:  r   r_   r}   r   r`   r   r  s       r1   r(   zdeleteCategory.get}  sc    %%t%EKKM'&&**,'	,,.
7;<	%	&&r3   NrJ  rh   r3   r1   r  r  |  s    'r3   r  c                   :    e Zd ZdZ e ed            d        Zy)subCategoryListingzsub_category_listing.htmlr   r   c                    t         j                  j                  d      j                  d      }|j                  j                  d      }|rGt         j                  j                  t        |      t        |      z  d      j                  d      }t        |d      }|j                  j                  d      }|j                  |      }t        || j                  t                     S )	NTr   r!  rf  r  )category__name__icontainsr"  r#  )SubCategoryr*   r+   r%  r'   r(   r   r   r&  r   rR   r   r  s          r1   r(   zsubCategoryListing.get  s      ''4'@II%P()+!!((;)GdoHp)p  EI(  J  S  S  TY  Z8!$)'+{+'	**68	44r3   Nr   rh   r3   r1   r  r    s#    ,>N;<5 =5r3   r  c                   @    e Zd ZdZ e ed            d        Zd Zy)addSubCategoryzadd_sub_category.htmlr   r   c                     t         j                  j                  d      }t        || j                  t                     S NTr   r  r*   r+   r   rR   r   )rT   r-   mains      r1   r(   zaddSubCategory.get  s2    				 	 D	 	9$	**68	44r3   c                    t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }t        j                  j                  |      }t        j                  j                  ||      }|j                  j                  d      rIt        |j                  j                  d            }d|z   }t        |      |_        |j                          t        j                   |d       t#        d      S t%        || j&                  t)                     S )	Nr   categoryr   r   r  r  ro   r  /sub-category-listing)r   addsubcategoryformrZ   r[   r\   r(   r  r*   r  r  r   r   rF   r  r}   r   r`   r   r   rR   r   )rT   r-   rW   r   r  category_objr  r   s           r1   r/   zaddSubCategory.post  s    		!	!',,	/$	]]_





'4##J/8""&&(&3<  ''t|'L7mm GMM--g67GKGg,GMLLNG34
*
++
++FH
55r3   Nr   rh   r3   r1   r  r    s(    (>N;<5 =56r3   r  c                   @    e Zd ZdZ e ed            d        Zd Zy)editSubCategoryzedit_sub_category.htmlr   r   c                     t         j                  j                  |      j                         }t        j                  j                  d      }t        || j                  t                     S )Nr   Tr   )r  r*   r+   r,   r  r   rR   r   )rT   r-   r   r  r  s        r1   r(   zeditSubCategory.get  sT      ''2'.446'				 	 D	 	9$	**68	44r3   c                    t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }t        j                  j                  |      }t        j                  j                  |      j                  ||      }|j                  j                  d      rYt        |j                  j                  d            }d|z   }t        j                  j                  |      j                  |       t        j                  |d       t        d	      S t!        || j"                  t%                     S )
Nr   r  r   r  r  ro   r  r  r  )r   r  rZ   r[   r\   r(   r  r*   r  r+   r   r   r   r   r`   r   r   rR   r   )	rT   r-   r   rW   r   r  r  r  r   s	            r1   r/   zeditSubCategory.post  s   

"
"7<<
0$	]]_





'4##J/8""&&(&3<  ''2'.55T\5Z7mm GMM--g67GKG"%,,W,=G34
*
++
++FH
55r3   Nr   rh   r3   r1   r  r    s(    )>N;<5 =5
6r3   r  c                   6    e Zd Z e ed            d        Zy)changeSubCategoryStatusr   r   c                    	 t         j                  j                  |j                  d         }|j                  d   |_        |j                          |j                  dk(  r:t        j                  |d       t        |j                  j                  d            S t        j                  |d       t        |j                  j                  d            S # t        $ r+}t        j                  |d       t        d	      cY d }~S d }~ww xY w)
Nr  r   r]   r  z Sub Category status is activatedr  zSub Category is deactivatedrX   r   )r  r*   r(   rZ   r]   r}   r   r`   r   r  r^   ra   rb   r   r  s       r1   r/   zchangeSubCategoryStatus.post  s    &##''W\\)-D'E3X&3:88:	jjCW@A((899NN79:((899	 &GEF
$
%%&r  Nr  rh   r3   r1   r  r    r  r3   r  c                       e Zd Zd Zy)deleteSubCategoryc                    t         j                  j                  |d      j                         }t        j                  j                         |_        |j                          t        j                  |d       t        d      S )NTr5  r  r  )r  r*   r+   r,   r:  r   r_   r}   r   r`   r   r  s       r1   r(   zdeleteSubCategory.get  sc    !!((B$(HNNP'&&**,'	,,.
7;<	)	**r3   NrJ  rh   r3   r1   r  r    r  r3   r  c                   :    e Zd ZdZ e ed            d        Zy)paymentListingzpayment_listing.htmlr   r   c                    ddl m } t        j                  j                         j	                  d      }|j
                  j                  d      }|rnt        j                  j                  t        |      t        |      z  t        |      z  t        |      z  t        |	      z  d
      j	                  d      }|j
                  j                  d      }|rA |j                  |d      j                         }t        j                  j                  |      }t        |d      }|j
                  j                  d      }|j                  |      }	t        || j                  t                     S )Nr   r:  r!  rf  )$booking__user__first_name__icontains)#booking__user__last_name__icontains)&booking__worker__first_name__icontains)%booking__worker__last_name__icontainsbooking__booking_id__icontainsTr   ro  %Y-%m-%d)created_at__dater"  r#  )r:  rA   r*   rB   r%  r'   r(   r+   r   strptimedater   r&  r   rR   r   )
rT   r-   r:  r'  ru  start_date_strro  r(  r)  payment_objs
             r1   r(   zpaymentListing.get  ss   $$((*33E:()+%%,,QT_-`ab  HS  bT  .T  UV  ~I  UJ  .J  KL  s~  K  .  @A  al  @m  .m  AE,  F  O  O  PU  V8;;??<0.!!!.*=BBD:%%,,j,I8!$)'+"";/+	**68	44r3   Nr   rh   r3   r1   r  r    s#    '>N;<5 =5r3   r  c                   :    e Zd ZdZ e ed            d        Zy)
getReportszget_reports.htmlr   r   c           
         t        j                         }|j                  }t        j                  j                  d      j                         }t        j                  j                  d      j                         }t        j                  j                  d|      j                  t        d            d   }|d}t        j                  j                         j                         }t        j                         }t        j                  j                  |j                         d	      j                         }t        j                  j                  |j                         d
      j                         }	t        j                  j                  d      j                         }
t        j                  j                  d|      j                  t        d            d   }t        j                  j                  |      }g d}t        t              }|D ]6  }||j                  j                   xx   t        |j"                        z  cc<   8 t%        dd      D cg c]
  }||dz
      }}dt%        dd      D cg c]  }||   	 c}dg}t        j                  j                  d      }t        j                  j                  d      }g d}t%        dd      D cg c]"  }|j                  |      j                         $ }}t%        dd      D cg c]"  }|j                  |      j                         $ }}t        j                  j                  ddg|      j'                  ddi      j)                  d      j+                  t-        dt.        j1                  d            t-        dt.        j1                  d                  j3                  d      }g d}|D cg c]  }|j5                  dd       }}|D cg c]  }|j5                  dd       }}t        j                  j                  |dd      j                         }t        j                  j                  |dd      }t        t6              }|D ]%  }|j8                  j                   }||xx   dz  cc<   ' g d}t%        dd      D cg c]  }|j5                  |d       }}d |dg}t        j                  j                  |dd!      j                         } t        j                  j                  |dd!      }!t        t6              }|!D ]%  }|j8                  j                   }||xx   dz  cc<   ' g d}t%        dd      D cg c]  }|j5                  |d       }"}d"|"dg}#|||||||||#d#	}$t;        || j<                  t?                     S c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )$Nr   )r   r   T)r   r   r   r   r   )start_date__dater   )r  r   Declined)r  r   r   r   Earningsr   r   r   r   r   r  )booking_status__inr   r   zEXTRACT(month FROM start_date)r   )r+   )	cancelled	completedr  r  )r   r   r   Users)r   r   r   zService Providers)	r   r   r   r   r   cancelled_seriescompleted_seriesuser_series_dataworker_series_data) r   r   r   r)   r*   r+   r   rA   r   r   r   rB   r  r   r   r   r   r   ru   extravaluesannotater   modelsr   r%  r(   rE   ro  r   rR   r   )%rT   r-   r   r   total_user_counttotal_provider_countr   total_bookingnew_user_countnew_worker_countcancelled_bookingr   r   r   r   r   r   r   r   r   r   r   r   	data_dictr  r  r   active_usersusers_by_monthr   user_countsr  r   active_workerworker_countsr  r   s%                                        r1   r(   zgetReports.get  s   #,\\((1(5;;=,,,;AAC"**11T[g1hrrsvw  tA  B  CP  Q.>''++-335-#<<&&
Q&OUUW.\\((#((*QR(SYY["**11:1NTTV"**11T[g1hrrsvw  tA  B  CP  Q. 
	 	 	'	'	'	F$ e+
 !'eE$$**+uU\\/BB+  -2!RL9LqAE"L*9$ERSUWL.YLq/?/BL.YZ[+ $++22D2I#++22D2I `&]bcdfh]ij]iXY/666KQQS]ij]bcdfh]ij]iXY/666KQQS]ij 
			$	$j8Qco	$	p	9:	;		E$vxxzx/RS!$vxx{x/ST 
 
V	'	  `& FJJT	immK3TJEIJT	immK3TJ ##\SWab#ciik+$$lTXbc$d,s#.e!!5%A  e+38B<@<a##Aq)<+@&<= ,,%%|UYef%gmmo-,,%%|UYef%g-s#.e!!5%A  e+5:1b\B\>%%a+\-B!4mLM 55''&*
' 
**68	44} :.Y kj KJ A Cs0   W=W!'W'W*W	W$W)?W.Nr   rh   r3   r1   r  r    s%    #>N;<\5 =\5r3   r  c                   :    e Zd ZdZ e ed            d        Zy)refundListingzrefund_listing.htmlr   r   c                    t         j                  j                         j                  d      }ddlm} |j
                  j                  d      }|r:t         j                  j                  t        |      d      j                  d      }|j
                  j                  d      }|rP |j                  |d	      j                         }t         j                  j                  |
      j                  d      }t        |d      }|j
                  j                  d      }|j                  |      }	t        || j                  t                     S )Nr!  r   r  rf  r  Tr   ro  r  )date_processed__dater"  r#  )AdminRefundRequestr*   rB   r%  r:  r'   r(   r+   r   r  r  r   r&  r   rR   r   )
rT   r-   r'  r:  ru  r  ro  r(  r)  
refund_objs
             r1   r(   zrefundListing.get]  s
   ''++-66u=()+ ((//Q\0]qu/v  AF  G8;;??<0.!!!.*=BBD: ((//Z/PYYZ_`8!$)'+!!+.*	**68	44r3   Nr   rh   r3   r1   r  r  [  #    &>N;<5 =5r3   r  c                   :    e Zd ZdZ e ed            d        Zy)refundDetailszrefund_details.htmlr   r   c                     t         j                  j                  |      j                         }t	        || j
                  t                     S rW  )r	  r*   r+   r,   r   rR   r   )rT   r-   r   r
  s       r1   r(   zrefundDetails.getq  s;    !))00b09??A*	**68	44r3   Nr   rh   r3   r1   r  r  o  s#    &>N;<5 =5r3   r  c                   6    e Zd Z e ed            d        Zy)payRefundAmountr   r   c                    t         j                  j                  |      j                         }t        j                  j                  |j
                  j                        j                         }t        j                  j                  |j
                  j                  j                        j                         }t        j                  j                  |      j                         }|j                  |j                  z   }||_        |j                          d|_        |j                          t        j                  j!                  |d|j
                  j                  z   dz   d       t"        j                  j!                  t%               d|||j                  d	       t'        j(                  |d
       t+        d      S )Nr   )r8   r  z$Your refund amount for booking id : z  has been processed successfullyrefund)customerr0   typewallet)rD   transcation_typebookingr8   r   payment_modezRefund processed successfullyz/refund-listing)r	  r*   r+   r,   r   r  
booking_idr)   r8   r   
UserWalletr   refund_amountr}   r]   CustomerNotificationsr  rA   rJ   r   r`   r   )rT   r-   r   r
  r   r   user_wallet
new_amounts           r1   r/   zpayRefundAmount.postx  s   !))00b09??A*&&--1C1C1N1N-OUUW+\\  j&8&8&=&=&@&@ AGGI(""))x)8>>@+!!J$<$<<*!+!*//&&(Eklvl~l~  mJ  mJ  FJ  Ln  Fn  v~&    0F0H[cmx  @H  Q[  Qi  Qi  x@   A
7;<	#	$$r3   Nr  rh   r3   r1   r  r  w  s    >N;<% =%r3   r  c                   :    e Zd ZdZ e ed            d        Zy)bookingListingzbooking_listing.htmlr   r   c                 Z   t         j                  j                         j                  d      }|j                  j                  d      }|rnt         j                  j                  t        |      t        |      z  t        |      z  t        |      z  t        |      z  d	      j                  d      }|j                  j                  d
      }t        j                  j                         j                  d      }|j                  j                  d      }|r8t         j                  j                  ||dz   |z   gd      j                  d      }t        |d      }|j                  j                  d      }|j                  |      }	t        || j                  t                     S )Nr!  rf  )booking_id__icontainsuser__first_name__icontainsuser__last_name__icontains)worker__first_name__icontains)worker__last_name__icontainsTr   ro  rp  r_   rq  )rr  r   r"  r#  )r   r*   rB   r%  r'   r(   r+   r   r:  r   rt  r   r&  r   rR   r   )
rT   r-   r'  ru  rv  rw  rx  r(  r)  book_objs
             r1   r(   zbookingListing.get  s   !!%%'007()+""))!+*NqozO{*{|}  \g  }h  +h  ij  KV  iW  +W  YZ  zE  YF  +F  Z^)  _  h  h  in  o8.,						 	)	)*	5${{z**""))\:X[K[]aKa<btx)y  C  C  DI  J8!$)'+,(	**68	44r3   Nr   rh   r3   r1   r   r     s#    '>N;<5 =5r3   r   c                   :    e Zd ZdZ e ed            d        Zy)bookingDetailszbooking_details.htmlr   r   c                     t         j                  j                  |      j                         }t	        || j
                  t                     S rW  )r   r*   r+   r,   r   rR   r   )rT   r-   r   r   s       r1   r(   zbookingDetails.get  s;    %%,,",6<<>+	**68	44r3   Nr   rh   r3   r1   r+  r+    s#    '>N;<5 =5r3   r+  c                   :    e Zd ZdZ e ed            d        Zy)getWorkerListingzworker_listing.htmlr   r   c                 J   t         j                  j                  dd      j                  d      }|j                  j                  d      }|rbt         j                  j                  t        |      t        |      z  t        |      z  t        |	      z  dd
      j                  d      }|j                  j                  d      }dd l}|j                  j                         j                  d      }|j                  j                  d      }|r9t         j                  j                  ||dz   |z   gdd      j                  d      }t        |d      }|j                  j                  d      }	|j                  |	      }
t        || j                  t                     S )Nr   T)r   r   r!  rf  rg  ri  rk  rm  r   ro  r   rp  r_   rq  )rr  r   r   r"  r#  rs  )rT   r-   r'  ru  rv  r:  rw  rx  r(  r)  ry  s              r1   r(   zgetWorkerListing.get  s   \\  Q4 HQQRWX()+ll!!!K"H^iIj"jkl  FQ  lR  #R  ST  lw  Sx  #x  LP  ]^!  _  h  h  in  o8.,						 	)	)*	5${{z**ll!!\:PSCSUYCY4Zlp}~!  I  I  JO  P8!$)'+,(	**68	44r3   Nr   rh   r3   r1   r.  r.    r  r3   r.  c                   :    e Zd ZdZ e ed            d        Zy)getWorkerDetailszworker_details.htmlr   r   c                    t         j                  j                  |dd      j                         }t        j                  j                  |      j                         }t
        j                  j                  |j                        }t        j                  j                  |d      }t        j                  j                  |d      }t        || j                  t                     S )Nr   Tr   r   r   )	worker_idr~  )workerr  r  )r)   r*   r+   r,   WorkerBankAccountDetailsWorkerServicesr   r   r   rR   r   )rT   r-   r   ry  bank_objservice_objr  r  s           r1   r(   zgetWorkerDetails.get  s    \\  B1 NTTV('//6626FLLN(&&--(++-F+!!(((J(W(				$	$h	$	T$	**68	44r3   Nr   rh   r3   r1   r1  r1    s#    &>N;<5 =5r3   r1  c                   @    e Zd ZdZ e ed            d        Zd Zy)editWorkerDetailszedit_worker_details.htmlr   r   c                     t         j                  j                  d      }t        j                  j                  |dd      j	                         }t        || j                  t                     S )NTr   r   r3  )r  r*   r+   r)   r,   r   rR   r   )rT   r-   r   r  r   s        r1   r(   zeditWorkerDetails.get  sV    				 	 D	 	9$\\  B1 NTTV(	**68	44r3   c                    t        j                  |j                        }|j                         rv|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }	t        j                  j                  |d      j                  |||||	|	       |j                  j                  d
      rbt        |j                  j                  d
            }
d|
z   }
t        j                  j                  |      j                  t        |
             t        j                  |d       t        d      S t!        || j"                  t%                     S )Nr   r   r!   r   
experienceaddressr   )r   r   )r   r   r!   r   r?  r>  r   ro   r   r   r  /get-worker-listing)r   editworkerformrZ   r[   r\   r(   r)   r*   r+   r   r   r   rF   r   r`   r   r   rR   r   )rT   r-   r   rW   r   r   r!   r   r>  r?  r   s              r1   r/   zeditWorkerDetails.post  su   			gll	+$	]]_!!%%l3:  $$[19  )5##''7<!!%%l3:""9-7<<"+22
W`in  K  V]  is2  tmm!GMM--h78GKGLL2%%S\%:G34
(
))
++FH
55r3   Nr   rh   r3   r1   r;  r;    s(    +>N;<5 =5
6r3   r;  c                   6    e Zd Z e ed            d        Zy)changeWorkerStatusr   r   c                    	 t         j                  j                  |j                  d         }|j                  d   |_        |j                          |j                  dk(  r:t        j                  |d       t        |j                  j                  d            S t        j                  |d       t        |j                  j                  d            S # t        $ r+}t        j                  |d       t        d	      cY d }~S d }~ww xY w)
Nr  r   r]   r  z$Service provider status is activatedr  zService provider is deactivatedrX   r   r  r  s       r1   r/   zchangeWorkerStatus.post  s    &  gll9&= >3X&3:88:	jjCWDE((899NN7=>((899	 &GEF
$
%%&r  Nr  rh   r3   r1   rC  rC    r  r3   rC  c                       e Zd Zd Zy)deleteWorkerc                    t         j                  j                  |d      j                         }t        j                  j                         |_        |j                          t        j                  |d       t        d      S )NTr5  zWorker deleted successfullyr@  r  r  s       r1   r(   zdeleteWorker.get  sa    ll!!R4!AGGI'&&**,'	,,.
79:	'	((r3   NrJ  rh   r3   r1   rF  rF    s    )r3   rF  c                   :    e Zd ZdZ e ed            d        Zy)featureServiceszfeature_service_list.htmlr   r   c                    t         j                  j                  d      j                  d      }t	        |d      }|j
                  j                  d      }|j                  |      }t        || j                  t                     S r   )FetaureServicer*   r+   r%  r   r'   r(   r&  r   rR   r   )rT   r-   r'  r(  r)  feat_objs         r1   r(   zfeatureServices.get  sk    ##**D*AJJ5Q(!$)'+,(	**68	44r3   Nr   rh   r3   r1   rI  rI    s#    ,>N;<5 =5r3   rI  c                   @    e Zd ZdZ e ed            d        Zd Zy)addFeatureServiceszadd_feature_service.htmlr   r   c                     t         j                  j                  d      }t        || j                  t                     S r  r  )rT   r-   sub_objs      r1   r(   zaddFeatureServices.get  s2    ##t#<'	**68	44r3   c                 T   t        j                  |j                        }|j                         r|j                  j                  d      }t        j                  j                  |      j                         }t        j                  j                  |      j                         }|r!t        j                  |d       t        d      S t        j                  j                  |       t        j                  |d       t        d      S t!        || j"                  t%                     S )Nsub_categoryr   )rR  zAlready added/feature-servicesAdded successfully)r   addfeatureformrZ   r[   r\   r(   r  r*   r+   r,   rK  r   rb   r   r  r`   r   rR   r   )rT   r-   rW   sub_servicer9  
check_datas         r1   r/   zaddFeatureServices.post  s    			gll	+$	]]_##''7;!!((k(:@@B;&&--;-GMMO:Wo.'((   <G12
&
''
++FH
55r3   Nr   rh   r3   r1   rN  rN    s(    +>N;<5 =56r3   rN  c                       e Zd Zd Zy)deleteFeatureServicesc                     t         j                  j                  |d      j                         }|j	                          t        j                  |d       t        d      S )NTr5  Deleted SuccessfullyrS  )rK  r*   r+   r,   rG  r   r`   r   r  s       r1   r(   zdeleteFeatureServices.get  sM    $$++rT+KQQS'	..
723	%	&&r3   NrJ  rh   r3   r1   rY  rY    s    'r3   rY  c                 v   t         j                  j                         }t        d      }d|d<   t	        j
                  |      }|j                  g d       |D ]  }|j                  |j                  |j                  j                  dz   |j                  j                  z   |j                  j                  dz   |j                  j                  z   |j                  |j                  |j                  j                  j                   |j                  j                   |j"                  |j$                  g	        |S )Ntext/csvcontent_typez"attachment; filename="booking.csv"Content-Disposition)	z
Booking IdService Provider Namez	User NameBooking DateBooking TimezService NamezSubservice NamezBooking StatusPricerq  )r   r*   rB   r   csvwriterwriterowr  r5  r   r   r8   booking_datebooking_timesub_servicesr  r   r  pricer-   querysetresponserf  items        r1   exportCsvBookingrp  &  sq     $$&j1#G
 
**X
  `  a T//4??DKK$:$:3$>t{{?T?T$TVZV_V_VjVjknVnosoxox  pC  pC  WC  DH  DU  DU  VZ  Vg  Vg  hl  hy  hy  hB  hB  hG  hG  HL  HY  HY  H^  H^  _c  _r  _r  sw  s}  s}  ~   r3   c           
         | j                   j                  dd      }| j                   j                  dd       }| j                   j                  dd       }t        j                  j	                  dd      j                  d      }|rB|j	                  t        |	      t        |
      z  t        |      z  t        |      z        }|G|E|j	                  ||dz   t        j                  j                         j                  d      z   g      }t        d      }d|d<   t        j                  |      }|j                  g d       |D ]p  }|j                  |j                  |j                  dz   |j                   z   |j"                  |j$                  |j&                  |j(                  |j*                  g       r |S )Nrf  r5   ro  r_   r   Tr   r!  rg  ri  rk  rm  rq  rp  )rr  r]  r^  z$attachment; filename="customers.csv"r`  )zUser IdNamePhone NumberDate of BirthEmail IdStatusCreated Date)r'   r(   r)   r*   r+   r%  r   r:  r   rt  r   re  rf  rg  r   r   r   r   dobr!   r]   ro  )r-   search_queryro  r_   rm  rn  rf  ro  s           r1   exportCsvUserrz  4  s   ;;??8R0Lt4J{{z40H||""1t"DMMeTH??1\#JQ`lMm#mpq  IU  qV  $V  YZ  p|  Y}  $}  ~("6??j(S.S[SdSdShShSjSsSst~SB  6A?  B4H&LH"#ZZ!F
OOno $//C"7$.."H$J[J[]a]e]egkgqgqsws~s~  AE  AP  AP  Q  	R  Or3   c           
         t         j                  j                  d      }t        d      }d|d<   t	        j
                  |      }|j                  g d       |D ]p  }|j                  |j                  |j                  dz   |j                  z   |j                  |j                  |j                  |j                  |j                  g       r |S )	Nr   r  r]  r^  z,attachment; filename="service_providers.csv"r`  )zService Provider Idrr  rs  rt  ru  rv  rw  rq  )r)   r*   r+   r   re  rf  rg  r   r   r   r   rx  r!   r]   ro  rl  s        r1   exportCsvWorkerr|  N  s    LLA.j1#Q
 
**X
st T//477DOOC/>@Q@QSWS[S[\`\f\fgkgrgrsw  tC  tC  D  E r3   c           
         t         j                  j                         }t        d      }d|d<   t	        j
                  |      }|j                  g d       |D ]  }|j                  |j                  j                  |j                  j                  j                  dz   |j                  j                  j                  z   |j                  j                  j                  dz   |j                  j                  j                  z   |j                  j                  |j                  j                  |j                  |j                   g        |S )Nr]  r^  !attachment; filename="refund.csv"r`  )z
Booking IDCustomer NamezWorker Namerb  rc  rd  zRefund Statusrq  )r	  r*   rB   r   re  rf  rg  r  r  r8   r   r   r5  rh  ri  r  r]   rl  s        r1   exportCsvRefundr  [  su   &&**,j1#F
 
**X
uv T//4<<**DLL,=,=,H,H,LT\\M^M^MhMh,hjnjvjvj}j}  kI  kI  KN  kN  PT  P\  P\  Pc  Pc  Pm  Pm  km  os  o{  o{  oH  oH  IM  IU  IU  Ib  Ib  cg  cu  cu  vz  vA  vA  B  C r3   c                   :    e Zd ZdZ e ed            d        Zy)getBannerListingzbanner_listing.htmlr   r   c                    t         j                  j                  d      j                  d      }t	        |d      }|j
                  j                  d      }|j                  |      }t        || j                  t                     S r   )BannerManagementr*   r+   r%  r   r'   r(   r&  r   rR   r   )rT   r-   r'  r(  r)  
banner_objs         r1   r(   zgetBannerListing.getk  sk    &&--t-DMMeT(!$)'+!!+.*	**68	44r3   Nr   rh   r3   r1   r  r  i  #    &>N;<5 =5r3   r  c                   @    e Zd ZdZ e ed            d        Zd Zy)addBannerHomepagezadd_banner.htmlr   r   c                 @    t        || j                  t                     S r   r   rS   s     r1   r(   zaddBannerHomepage.getx  r   r3   c                    t        j                  |j                        }|j                         r|j                  j                  d      }t        j                  j                  |      }|j                  j                  d      r_t        |j                  j                  d            }d|z   }t        |      |_        |j                          t        j                  |d       t!        d      S t#        || j$                  t'                     S )Nbanner_titler  r  ro   rT  /get-banner-listing)r   addBannerformrZ   r[   r\   r(   r  r*   r  r   r   rF   r  r}   r   r`   r   r   rR   r   )rT   r-   rW   r  r  r   s         r1   r/   zaddBannerHomepage.post}  s    			W\\	*$	]]_##''7< ((//\/J:mm GMM--g67GKG7|JOOW23
(
))
++FH
55r3   Nr   rh   r3   r1   r  r  v  s(    ">N;<5 =56r3   r  c                   @    e Zd ZdZ e ed            d        Zd Zy)editBannerHomepagezedit_banner.htmlr   r   c                     t         j                  j                  |      j                         }t	        || j
                  t                     S rW  )r  r*   r+   r,   r   rR   r   )rT   r-   r   r  s       r1   r(   zeditBannerHomepage.get  s;    ''..B.7==?*	**68	44r3   c                 ^   t        j                  |j                        }|j                         r|j                  j                  d      }t        j                  j                  |      j                  |      }|j                  j                  d      rot        |j                  j                  d            }d|z   }t        j                  j                  |      j                  |       t        j                  |d       t        d      S t        || j                   t#                     S )	Nr  r   r  r  ro   r  r  r  )r   r  rZ   r[   r\   r(   r  r*   r+   r   r   r   r   r`   r   r   rR   r   )rT   r-   r   rW   r  r  r   s          r1   r/   zeditBannerHomepage.post  s    			W\\	*$	]]_##''7< ((//R/9@@l@[:mm GMM--g67GKG###-4474CW45
(
))
++FH
55r3   Nr   rh   r3   r1   r  r    s(    #>N;<5 =56r3   r  c                       e Zd Zd Zy)deleteBannerHomepagec                     t         j                  j                  |d      j                         }|j	                          t        j                  |d       t        d      S )NTr5  r[  r  )r  r*   r+   r,   rG  r   r`   r   r  s       r1   r(   zdeleteBannerHomepage.get  sM    &&--t-MSSU'	..
723	'	((r3   NrJ  rh   r3   r1   r  r    s    )r3   r  c                   :    e Zd ZdZ e ed            d        Zy)getConverStationListingzconverstation_listing.htmlr   r   c                    t         j                  j                  d      }|j                  j	                  d      }|rnt         j                  j                  t        |      t        |      z  t        |      z  t        |      z  t        |      z  d      j                  d	      }t        |d
      }|j                  j	                  d      }|j                  |      }t        || j                  t                     S )NTr   rf  r#  r%  )'service_provider__first_name__icontains)&service_provider__last_name__icontains)twilio_channel_sid__icontainsr!  r"  r#  )Conversationr*   r+   r'   r(   r   r%  r   r&  r   rR   r   )rT   r-   r'  ru  r(  r)  chat_objs          r1   r(   zgetConverStationListing.get  s    ""))4)@()+""))!*TUVr}U~*~  @A  ju  @v  +v  wx  `k  wl  +l  mn  MX  mY  +Y  mq)  r  {  {  |A  B8!$)'+,(	**68	44r3   Nr   rh   r3   r1   r  r    s#    ->N;<5 =5r3   r  c           	         t         j                  j                         }t        d      }d|d<   t	        j
                  |      }|j                  g d       |D ]  }|j                  |j                  j                  dz   |j                  j                  z   |j                  j                  dz   |j                  j                  z   |j                  |j                  |j                  |j                  g        |S )Nr]  r^  r~  r`  )r  ra  zTwilio Channel SIDzUser Twilio IDzService Provider Twilio ID
Created atrq  )r  r*   rB   r   re  rf  rg  r8   r   r   service_providertwilio_channel_siduser_twilio_idservice_provider_twilio_idr   rl  s        r1   exportConvertsationr    s     $$&j1#F
 
**X
  M  N T//499''+DII,?,??AVAVAaAabeAefjf{f{  gF  gF  BF  HL  H_  H_  bf  bu  bu  w{  wV  wV  W[  Wf  Wf  g  h r3   c                   6    e Zd Z e ed            d        Zy)approveWorkerAccountr   r   c                    t         j                  j                  |d      j                  d      }t         j                  j                  |d      j	                         }t        dd|j                  i      }d}|}d}|j                  }	t        j                  ||||	g|	       t        j                  |d
       t        d      S )NTr5  r   is_worker_approvedzapprove_worker_account.htmlr!   zAccount Approved Successfullyr`  rq   zApproved Successfullyr@  )r)   r*   r+   r   r,   r   r!   r   r   r   r`   r   )
rT   r-   r   r  work_objrr   r   r   r   r   s
             r1   r(   zapproveWorkerAccount.get  s    ll!!R4!AHH^_H`'||""bD"BHHJ(!"?'(..AYZ,+'-$*~~"..-bTU
734	'	((r3   Nr  rh   r3   r1   r  r    s    >N;<
) =
)r3   r  c                   @    e Zd ZdZ e ed            d        Zd Zy)disapproveWorkerAccountzdisapporve_reason.htmlr   r   c                 D    |}t        || j                  t                     S r   r   )rT   r-   r   r4  s       r1   r(   zdisapproveWorkerAccount.get  s    )	**68	44r3   c                 b   t        j                  |j                        }|j                         r|j                  j                  d      }t        j                  j                  |d      j                  d      }t        j                  j                  |d      j                         }t        d|j                  |d      }d}|}	d	}
|j                  }t        j                  ||	|
|g|
       t        j                   |d       t#        d      S t%        || j&                  t)                     S )NreasonTr5     r  zdisapprove_worker_account.html)r!   r  z Account Disapproved Successfullyr`  rq   zDisapproved Successfullyr@  )r   DisapproveReasonFormrZ   r[   r\   r(   r)   r*   r+   r   r,   r   r!   r   r   r   r`   r   r   rR   r   )rT   r-   r   rW   r  r  r  rr   r   r   r   r   s               r1   r/   zdisapproveWorkerAccount.post  s    		#	#GLL	1$	]]_!!(+6||""bD"BII_`Ia7##rT#CIIK8"#ChnnflEmn</7=%:2>>'=*rdVG78
(
))
++FH
55r3   Nr   rh   r3   r1   r  r    s(    )>N;<5 =56r3   r  c                   :    e Zd ZdZ e ed            d        Zy)getRatingsReviewListzrating_review_list.htmlr   r   c                     t         j                  j                  d      }t        |d      }|j                  j                  d      }|j                  |      }t        || j                  t                     S )NTr   r"  r#  )
ServiceProviderRatingReviewsr*   r+   r   r'   r(   r&  r   rR   r   )rT   r-   r'  r(  r)  
rating_objs         r1   r(   zgetRatingsReviewList.get  s`    *229949P(!$)'+!!+.*	**68	44r3   Nr   rh   r3   r1   r  r    s#    *>N;<5 =5r3   r  c                   :    e Zd ZdZ e ed            d        Zy)getRatingsReviewDetailszrating_review_details.htmlr   r   c                     t         j                  j                  |d      j                         }t	        || j
                  t                     S r4  )r  r*   r+   r,   r   rR   r   )rT   r-   r   r  s       r1   r(   zgetRatingsReviewDetails.get  s>    ,44;;rSW;X^^`*	**68	44r3   Nr   rh   r3   r1   r  r    s#    ->N;<5 =5r3   r  c                       e Zd Zd Zy)deleteRatingReviewc                     t         j                  j                  |d      j                         }|j	                          t        j                  |d       t        d      S )NTr5  r[  z/get-ratings-reviews-list)r  r*   r+   r,   rG  r   r`   r   r  s       r1   r(   zdeleteRatingReview.get
  sN    *2299RSW9Y__a'	..
723	-	..r3   NrJ  rh   r3   r1   r  r  	  s    /r3   r  c                    t         j                  j                         }t        d      }d|d<   t	        j
                  |      }|j                  g d       |D ]  }|j                  |j                  j                  dz   |j                  j                  z   |j                  j                  dz   |j                  j                  z   |j                  |j                  |j                  g        |S )Nr]  r^  r~  r`  )r  ra  RatingReviewr  rq  )r  r*   rB   r   re  rf  rg  r8   r   r   r  ratingreviewro  rl  s        r1   exportCSVRatingReviewr    s    (00446j1#F
 
**X
[\ T//499''+DII,?,??AVAVAaAabeAefjf{f{  gF  gF  BF  HL  HS  HS  VZ  Va  Va  cg  cr  cr  s  t r3   c                   :    e Zd ZdZ e ed            d        Zy)payoutListingzpayout_listing.htmlr   r   c                 
   t         j                  j                         j                  d      }t	        |d      }|j
                  j                  d      }|j                  |      }t        || j                  t                     S )Nr!  r"  r#  ) ServiceProviderPayoutTranscationr*   rB   r%  r   r'   r(   r&  r   rR   r   )rT   r-   r'  r(  r)  pay_objs         r1   r(   zpayoutListing.get"  sf    .66::<EEeL(!$)'+{+'	**68	44r3   Nr   rh   r3   r1   r  r     r  r3   r  )get_object_or_404c                     | j                   j                  d      }| j                   j                  d      }t        t        |      }||_        |j                          t        ddi      S )Ntransaction_id
new_statusr   r`   T)rZ   r(   r  r  transcation_statusr}   r   )r-   r  r  pays       r1   update_transaction_statusr  ,  sY    \\%%&67N!!,/J
<
PC'CHHJD)**r3   c                   @    e Zd ZdZ e ed            d        Zd Zy)otherSettingszother_settings.htmlr   r   c                     t         j                  j                         j                         }t	        || j
                  t                     S r   )OtherSettingsr*   rB   r,   r   rR   r   )rT   r-   	other_objs      r1   r(   zotherSettings.get9  s6    $$((*002)	**68	44r3   c                 (   t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }t        j                  j                         j                         }|r||_
        ||_        |j                          n!t        j                  j                  ||       t        j                  |d       t!        d      S t#        || j$                  t'                     S )Nplatform_feesadmin_commission)platform_feer  r  z/other-settings)r   addothersettingformrZ   r[   r\   r(   r  r*   rB   r,   r  r  r}   r  r   r`   r   r   rR   r   )rT   r-   rW   r  r  rW  s         r1   r/   zotherSettings.post=  s    		"	"7<<	0$	]]_$$((9<((,,-?@%%))+113:*J"2JOO  N^ _G34
$
%%
++FH
55r3   Nr   rh   r3   r1   r  r  7  s(    &>N;<5 =56r3   r  )concurrent.futures.threadr   r   pipesr   django.views.generic.baser   django.views.genericr   django.contrib.authr   r	   r
   django.shortcutsr   r   django.http.responser   admin_panel.modelsr5   r   django.contribr   django.corer   django.template.loaderr   mathrv   rx   django.confr   django.core.paginatorr   django.httpr   django.contrib.auth.decoratorsr   django.utils.decoratorsr   	functionsdjango.db.modelsr   r   r:  jsonr   astpasslib.hashr   handlerr   worker_panel.modelsuser_panel.modelsdjango.utilsr   re  collectionsr   r2   r9   r<   rJ   rL   rj   r   r   r   r   r  r  r  r  r,  r2  r8  r<  rA  rL  rU  rZ  rd  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r+  r.  r1  r;  rC  rF  rI  rN  rY  rp  rz  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rh   r3   r1   <module>r     s   ;  * - ; ; - -    #  3     + $ 9 4  "   " 
 - 8  , !  ! 
 #*"# "#J>, >:"> ">J15\ 15h.< .0& &2", "6D 6.6 6.5 56T 6$6d 6$" "5 5/t /,5 55 56< 645l 5&5l 56, 60+T +&4 &*5l 56, 6.6< 6,&4 &"'T '5 56\ 666l 62&d &"+ +5\ 5,_5 _5B5L 5(5L 5%d %$5\ 5&5\ 55| 5&	5| 	56 68& &&)4 )5l 56 6,'D '
4

5| 56 606 6.)< )5l 5 
)4 )6l 625< 55l 5/ /
5L 5 /+6L 6r3   