
    fɢh                        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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!Z!d dl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,m-Z- d Z.d Z/d Z0dYdZ1 G d de      Z2 G d d e      Z3 G d! d"e      Z4 G d# d$e      Z5 G d% d&e      Z6 G d' d(e      Z7d dl8 d d)l9m:Z:  G d* d+e      Z; G d, d-e      Z< G d. d/e      Z=d dl!m!Z!  G d0 d1e      Z> G d2 d3e      Z?d dl!Z! G d4 d5e      Z@ G d6 d7e      ZA G d8 d9e      ZB G d: d;e      ZC G d< d=e      ZD G d> d?e      ZE G d@ dAe      ZF G dB dCe      ZG G dD dEe      ZH G dF dGe      ZI G dH dIe      ZJ G dJ dKe      ZKd dLl9mLZLmMZMmNZN  G dM dNe      ZO G dO dPe      ZP G dQ dRe      ZQ G dS dTe      ZR G dU dVe      ZS G dW dXe      ZTy)Z    )render)View)TemplateView)authenticateloginlogout)r   redirect)HttpResponse)*)messages)mail)render_to_stringN)settings)	Paginator)JsonResponse)login_required)method_decorator)HttpResponseRedirect   )forms)datetime)
strip_tags)User)	messaging)EmailMessagec                     | j                   j                  d      }t        j                  j	                  |      j                         }|rt        d       t        d      S t        d       d}t        |d      S )Nemail)usernametruez)This email does not exist in our databaseFsafe)	GETgetr   objectsfilterfirstprintr
   r   )requesttextpostmessages       8/var/www/html/Kila-kolis-project/Kolis/adminapi/views.py
checkEmailr-      sd     T*002-	v	347'	g5	))    c                    | j                   j                  dd      }t        |       | j                   j                  d      }t        |       t        j                  j                  |      j                         }t        d|       |j                  }|j                  |      dk(  rd}t        |d      S t        d	      S )
Nr    passwordr   Admin object:Fz<<p style="color: red;">Please enter the correct password</p>r    r   )r"   r#   r'   
SuperAdminr$   r%   r&   usercheck_passwordr   r
   )r(   r)   r1   	admin_objr5   r+   s         r,   checkLoginPasswordr8   &   s    #tKKOOJ'x&&t&4::<	"!U*J'	g5	))	v	r.   c                     | j                   j                  d      }t        j                  j                  | j                  j
                        }|j                  |      dk(  rd}t        |d      S t        d      S )Nold_passwordr2   Fz%Does not match with the old password.r    r   )	r"   r#   r   r$   r5   r   r6   r   r
   )r(   r:   r5   r+   s       r,   adminCheckPasswordr;   5   se    /  w||'9'9 :%.3'	g5	))	v	r.   c                     i }|t        |      |d<   |t        |      |d<   |t        |      |d<   t        j                  t        j                  ||      | |r|nd       }t        j                  |      }|S )N
booking_idand_message	and_title)titlebody)notificationtokendata)strr   MessageNotificationsend)	registration_idr@   rA   r=   r>   r?   message_datar+   responses	            r,   send_push_notificationrL   ?   s    ":,| #K 0,}!)n,{ %%	 	#| NN7#r.   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)r5   is_authenticatedr   r   template_nameselfr(   s     r,   r#   zAdminLogIn.getZ   s.    \\""
1
22	**	++r.   c                    	 t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }t        d|       t        d|       t        ||      }|r8t        d       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   r1   )r   r1   yeszLogin successfullyrP   zInvalid email and password.form&Something went wrong.Please try again.)r   AdminSigninFormPOSTis_validcleaned_datar#   r'   r   r   r   successr	   r   rR   	Exceptionwarning)rT   r(   rW   r   r1   r5   es          r,   r*   zAdminLogIn.post_   s   '



-4
mmo  $$W-E  $$Z0H	'%	*X:DElGTw 45()) g<=7D..//'$,,vtn==	 'GEF
%
&&'s*   CD +D 2D 	D? D:4D?:D?N__name__
__module____qualname__rR   r#   r*    r.   r,   rN   rN   X   s    $,
'r.   rN   c                       e Zd ZdZd Zd Zy)AdminForgetPasswordzforget-password.htmlc                 .    t        || j                        S )N)r   rR   rS   s     r,   r#   zAdminForgetPassword.get{   s    	**	++r.   c           	      r   t        j                  |j                        }|j                         rj|j                  j                  d      }t        |       t        j                  j                  |      j                         }t        |       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}	t1        dd	|i      }
|
}t(        j2                  }|}t5        j6                  |	|||g|

       t9        j:                  |d       t=        d      S t?        || j@                  d|i      S c c}w )Nr   r2   r0      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   adminforgetpasswordrZ   r[   r\   r#   r'   r4   r$   r%   r&   joinrangerandomchoicestringascii_lettersdigitsrE   r   r   BASE_URLforgotPasswordLinksaver   EMAIL_HOST_USERr   	send_mailr   r]   r	   r   rR   )rT   r(   rW   r   r7   nran_numbaselinkcompletelinksubjectrn   plain_message
from_emailtos                 r,   r*   zAdminForgetPassword.post~   sg   		"	"7<<	0$	]]_!!'*5<!!(((7==?9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   (;F4Nra   re   r.   r,   rg   rg   y   s    ',>r.   rg   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 )	Nrk   r2   
LinkExpiryzlink-expire.html)r   rx   TF)rE   r(   pathsplitr4   r$   r%   r&   rx   r   rR   locals)rT   r(   rl   
user_emaillink_expiryr7   valids          r,   r#   zForgetPasswordVerification.get   s    	T\\	$zz#r"*""))*)=CCE+##|3
+
,,  ''
QU'V\\^)55	**68	44r.   c                    t        j                  |j                        }|j                         r|j                  j                  d      }t        |       |j                  j                  d      }t        |       t        | j                  j                        }|j                  d      d   }t        d|       t        j                  j                  |      j                         }t        d|       |j                  }t        d|       t        |j                          |rzt        d	       |j#                  |       |j%                          t        d
       d|_        t        d       |j%                          t)        j*                  |d       t-        d      S t)        j.                  |d       t-        d      S t        d|j0                         t3        || j4                  d|i      S )Nnew_passwordconfirm_new_passwordrk   zuser_email:-r2   r3   zUser object:herehere2r   here3zPassword changed successfullySomething went wrongzForm errors:rW   )r   ForgetVerificationFormrZ   r[   r\   r#   r'   rE   r(   r   r   r4   r$   r%   r&   r5   r1   set_passwordry   rx   r   r]   r	   errorerrorsr   rR   )	rT   r(   rW   r   r   rl   r   r7   user_objs	            r,   r*   zForgetPasswordVerification.post   sw   		%	%gll	3$	]]_##''7<++//0FG	
dll
 4

3#:
#!!(((<BBD9)$nn8"			&M,'MMO	'N#/I 	'NNNW=>C=NN723C=%
$,,vtn
==r.   Nra   re   r.   r,   r   r      s    &5>r.   r   c                   6    e Zd Z e ed            d        Zy)AdminLogoutrk   	login_urlc                 Z    t        |       t        j                  |d       t        d      S )NzLogout Succesfullyrk   )r   r   r]   r	   rS   s     r,   r#   zAdminLogout.get   s$    /
701	#r.   N)rb   rc   rd   r   r   r#   re   r.   r,   r   r      s    >C01 2r.   r   c                       e Zd ZdZd Zd Zy)AdminResetPasswordadmin_reset_password.htmlc                     t         j                  j                  |j                  j                        j                         }t        || j                  t                     S )Nr5   )	r4   r$   r%   r5   idr&   r   rR   r   )rT   r(   r7   s      r,   r#   zAdminResetPassword.get   sC      ''W\\__'=CCE)	**68	44r.   c                    	 t        j                  |j                        }|j                         r|j                  j	                  d      }t        |       t        j                  j	                  |j                  j                        }t        |       |j                  j                  }t        |       t        j                  j	                  |      }t        |       |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confirmPasswordr2   r   z)You have successfully reset your passwordrk   r   rW   rX   admin-dashboard)r   change_password_formrZ   r[   r#   r'   r4   r$   r5   r   r   r   r   ry   r   r   infor	   r   r^   r_   )rT   r(   rW   r1   r5   r`   s         r,   r*   zAdminResetPassword.post   s   &

$
$W\\
24
mmo|| 12H	(O!!%%GLL,>,>%?D	$K	D	$K			T		"D	$KhIIK
7OMM'FGC='6GG	 &GEF
$
%%&s$   D,D> /D> >	E2 E-'E2-E2Nra   re   r.   r,   r   r      s    ,5&r.   r   c                   @    e Zd ZdZ e ed            d        Zd Zy)AdminProfilezadmin_profile.htmlrk   r   c                 4   	 t         j                  j                  |j                  j                        j                         }t        || j                  t                     S # t        $ r+}t        j                  |d       t        |      cY d }~S d }~ww xY w)Nr   rX   )r4   r$   r%   r5   r   r&   r   rR   r   r^   r   r_   r
   )rT   r(   r7   r`   s       r,   r#   zAdminProfile.get   ss    !!((glloo(>DDF9
++FH
55	 GEF
q/s   A A# #	B, BBBc                    	 t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }t        j                  j                  |j                  j                        j                  |||||       |j                  j                  d      rt        |j                  j                  d            }t        j                  d	z   |z   }t!        |       t        j                  j                  |j                  j                        j                  t#        |      
       t%        j&                  |d       t)        d      S t!        |j*                         t%        j,                  ||j*                          t)        d      S # t.        $ r9}	t!        |	       t%        j,                  |d|	        t)        d      cY d }	~	S d }	~	ww xY w)N
first_name	last_namer   phone_numberaddressr   )	firstNamelastNamer   phoneNumberr   avatarrk   imagezUpdate SuccesfullyrP   rX   )r   AdminProfileFormrZ   r[   r\   r#   r4   r$   r%   r5   r   updateFILESuploadTheImagesr   rw   r'   rE   r   r]   r	   r   r_   r^   )
rT   r(   rW   r   r   r   r   r   fileUrlr`   s
             r,   r*   zAdminProfile.post   s   '

 
 
.4
mmo""&&|4J!!%%k2I!!'*E$$((8L##I.G7<<??3::ZYbin  |H  QX:  Y}}"w}}00:;Ws"7*W
7^GLLOO4;;#g,;OW23&''	$++W/&''	 '8GEaSIJ
%
&&'s%   GH A H 	I.IIINrb   rc   rd   rR   r   r   r#   r*   re   r.   r,   r   r      s(    %>C01 2'r.   r   )Qc                   :    e Zd ZdZ e ed            d        Zy)UserListingzusers_list.html/admin-loginr   c                    t         j                  j                  d      j                  d      }|j                  j                  d      }|rTt         j                  j                  t        |      t        |      z  t        |      z  d      j                  d      }t        |d      }|j                  j                  d	      }|j                  |      }t        || j                  t                     S )
NTend_date__isnull-idsearch)full_name__icontains)email__icontainsphone_number__icontains
   page)AppUserr$   r%   order_byr"   r#   r   r   get_pager   rR   r   )rT   r(   data_objsearch_post	paginatorpage_numberdoc_objs          r,   r#   zUserListing.get  s     __##t#<EEeL()+oo$$QK%H^iIj%jkl  HS  lT  &T  hl$  m  v  v  w|  }8"%)'+{+'	**68	44r.   Nrb   rc   rd   rR   r   r   r#   re   r.   r,   r   r     s#    ">N;<
5 =
5r.   r   c                   :    e Zd ZdZ e ed            d        Zy)UserDetailszuser_details.htmlr   r   c                    t         j                  j                  |j                  j                        j                         }t        j                  j                  |      }t        || j                  t                     S Nr   r   )r4   r$   r%   r5   r   r&   r   r#   r   rR   r   rT   r(   r   r7   r   s        r,   r#   zUserDetails.get(  sZ      ''W\\__'=CCE)__  b *'	**68	44r.   Nr   re   r.   r,   r   r   &  s#    $>N;<5 =5r.   r   c                   @    e Zd ZdZ e ed            d        Zd Zy)editUserDetailszedit_user_details.htmlr   r   c                 4   t         j                  j                  |j                  j                        j                         }t        j                  j                  |      }|j                  }|j                  }t        || j                  t                     S r   )r4   r$   r%   r5   r   r&   r   r#   country_coder   r   rR   r   )rT   r(   r   r7   r   r   r   s          r,   r#   zeditUserDetails.get2  sp      ''W\\__'=CCE)__  b *'%%,%%,	**68	44r.   c                    t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }	|j                  j                  d      }
t        d|
       t        j                  j                  d|	      j                         }|rA||_        ||_        ||_        ||_        ||_        |	|_        |
|_        |j%                          |j&                  j                  d
      rt        d       t)        |j&                  j                  d
            }t*        j,                  dz   |z   }t        |       t        j                  j                  d|	      j/                  |       t1        j2                  |d       t5        d      S t        |j6                         t1        j8                  |d       t5        d      S )Nnamer   genderr   statusr   dobTr   r   r   zhere in if rk   r   zUpdated Succesfullyuser-listingr   )r   
EditDoctorrZ   r[   r\   r#   r'   r   r$   r%   r&   	full_namer   r   r   r   r   r   ry   r   r   r   rw   r   r   r]   r	   r   r_   )rT   r(   r   rW   r   r   r   r   r   r   r   r   r   s                r,   r*   zeditUserDetails.post<  s   			',,	'$	]]_





'4  )5!!(+6##''7<!!(+6""9-7					u	%3soo$$d$DJJL7GGMGN%GGNGOGKLLNmm 	-GMM--g67Gc!')G	'NOODb9@@@Q G23
>
""G34
>
""r.   Nr   re   r.   r,   r   r   0  s(    )>N;<5 =5##r.   r   c                   :    e Zd ZdZ e ed            d        Zy)TravelListingztravel_list.htmlr   r   c           	      h   t         j                  j                         j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|r5|j                  t        |      t        |      z  t        |      z        }|rD	 t        j                  j                  |d      }|j                  |d	
      j                  d      }|rD	 t        j                  j                  |d      }|j                  |d	      j                  d      }t        |d      }|j                  j                  d      }	|j                  |	      }
t        || j                  |
|||d      S # t        $ r Y w xY w# t        $ r Y nw xY w)Nr   r   
start_dateend_date)name__icontains)country_code__icontainsr   z%Y-%m-%dT)departure_date__gter   r   )total_capacity)departure_date__lter   r   r   )r   r   r   r   )	AddTravelr$   allr   r"   r#   r%   r   r   strptimeexclude
ValueErrorr   r   r   rR   )rT   r(   r   r   r   r   start_date_objend_date_objr   r   r   s              r,   r#   zTravelListing.getf  s   ""$--e4()+{{|,*[[__Z((ook"k*+k*+8 	&&//
JGN>SWX`` a H
 	##,,XzBL<QUV^^ _ H
 "%)'+{+'	++	. 
 !  		  		s&   9AF ?AF% 	F"!F"%	F10F1Nr   re   r.   r,   r   r   c  s#    #>N;<( =(r.   r   c                   :    e Zd ZdZ e ed            d        Zy)RouteListingzroute_list.htmlr   r   c                    |j                   j                  d      }t        j                  j	                         j                  d      }|r5|j	                  t        |      t        |      z  t        |      z        }t        |d      }|j                   j                  d      }|j                  |      }t        || j                  ||d      S )	Nr   r   )&requests__sender__full_name__icontains))requests__traveller__full_name__icontains),requests__traveller__phone_number__icontainsr   r   )	route_objr   )r"   r#   MyRouter$   r%   r   r   r   r   r   rR   )rT   r(   r   r   r   r   r  s          r,   r#   zRouteListing.get  s    )+__##%..u5(oo[9<=;?@8 "%)'+  -)	++. 
 r.   Nr   re   r.   r,   r   r     s#    ">N;< =r.   r   c                       e Zd Zd Zy)
deleteUserc                 b   t         j                  j                  |j                  j                        j                         }t        j                  j                  d|      j                  t        j                  j                                t        j                  |d       t        d      S )Nr   Tr   )r   zUser Deleted Successfullyr   )r4   r$   r%   r5   r   r&   r   r   r   nowr   r]   r	   )rT   r(   r   r7   s       r,   r#   zdeleteUser.get  s|      ''W\\__'=CCE)	//$"5<<hFWFWF[F[F]<^
778	.	!!r.   Nrb   rc   rd   r#   re   r.   r,   r  r    s    "r.   r  c                   :    e Zd ZdZ e ed            d        Zy)
FaqListingzfaq_listing.htmlrk   r   c                    t         j                  j                  |j                  j                        j                         }t        j                  j                  d      j                  d      }t        |d      }|j                  j                  d      }|j                  |      }t        || j                  t                     S )Nr   Tr   r   r   r   )r4   r$   r%   r5   r   r&   Faqr   r   r"   r#   r   r   rR   r   )rT   r(   r7   r   r   r   faq_objs          r,   r#   zFaqListing.get  s      ''W\\__'=CCE)[[48AA%H("%)'+{+'	**68	44r.   Nr   re   r.   r,   r
  r
    s#    #>C015 25r.   r
  c                   @    e Zd ZdZ e ed            d        Zd Zy)EditFaqzedit_faq.htmlrk   r   c                 "   t         j                  j                  |j                  j                        j                         }t        j                  j                  |d      j                         }t        || j                  t                     S )Nr   T)r   r   )
r4   r$   r%   r5   r   r&   r  r   rR   r   )rT   r(   r   r7   r  s        r,   r#   zEditFaq.get  se      ''W\\__'=CCE)KK"=CCE'	**68	44r.   c                    t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }t        j                  j                  |      j                  ||       t        j                  |d       t        d      S t        || j                        S )Nr@   contentr   )r@   r  Updated Successfully/faq-listing)r   
addfaqformrZ   r[   r\   r#   r  r$   r%   r   r   r]   r	   r   rR   )rT   r(   r   rW   r@   r  s         r,   r*   zEditFaq.post  s    			',,	'$	]]_  )5""9-7;;##%#@G34
>
""
++
,,r.   Nr   re   r.   r,   r  r    s(     >C015 25
-r.   r  c                   :    e Zd ZdZ e ed            d        Zy)AddFaqadd_faq.htmlrk   r   c                    t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }t        j                  j                  |||       t        j                  |d       t        d      S t        |d      S )Nr@   r  type)r@   r  r  Created Successfullyr  r  )r   r  rZ   r[   r\   r#   r  r$   creater   r]   r	   r   )rT   r(   rW   r@   r  r  s         r,   r*   zAddFaq.post  s    			',,	'$	]]_  )5""9-7





'4;;E't<G34
>
""

((r.   N)rb   rc   rd   rR   r   r   r*   re   r.   r,   r  r    s#    >C01
) 2
)r.   r  c                   :    e Zd ZdZ e ed            d        Zy)AdminDashboardzdashboard.htmlr   r   c                     t         j                  j                  d      j                         }t         j                  j                  d      j	                         j                         }t
        j                  j                  d      j                         }t         j                  j                  d      j                  d      d d }t         j                  j                  d      j                  d      d d }t
        j                  j                  d      j                  d      d d }t        j                  j                  |j                  j                        j                         }t        || j                  t                     S )	NTr   F)addtravel__isnullr      r   r   )r   r$   r%   countdistinctr  r   r4   r5   r   r&   r   rR   r   )	rT   r(   total_userstotal_travellerstotal_routes	users_objtraveller_objr  r7   s	            r,   r#   zAdminDashboard.get  s,   &&$&?EEG+oo,,u,ENNPVVX''4'@FFH,%%%>GGNrPQR)//(($(?HHNrPQR-oo$$$=FFuMbqQ)  ''W\\__'=CCE) 
**68	44r.   Nr   re   r.   r,   r  r    s#    !>N;<
5 =
5r.   r  c                   @    e Zd ZdZ e ed            d        Zd Zy)privacyPolicyzprivacy_policy.htmlr   r   c                 j   t         j                  j                  |j                  j                        j                         }|j                  dk(  rg d}n*t        j                  j                  |j                        }d}|D ]<  }|j                  dk(  rd}nt        |j                  j                        }|dk(  s:d} n |rNt        j                  j                  dd	      j                         }t        || j                  t                     S t!        j"                  |d
       t%        d      S )Nr   Fr            r!           	   r      rj               roler5  Tprivacy_policyr   	page_type	user_type You do not have access for this.rP   )r4   r$   r%   r5   r   r&   is_subadminRolesPermissionr:  int
permissionContentPageslastr   rR   r   r   r   r	   rT   r(   r7   get_permissionhas_permissioniuser_varcont_objs           r,   r#   zprivacyPolicy.get  s      ''W\\__'=CCE)e#K>#++22	2G>.au$H1<<??#H"nN	  ""))4DQW)X]]_8
$,,fh
77>>'=>
%
&&r.   c                 p   t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }t        j                  j                  dd      j                         }|r>t        j                  j                  |j                        j                  ||dd       n#t        j                  j                  ||dd       t        j                  |d       t        d	      S t!        || j"                  t%                     S )
Nr@   r  r;  r   r<  r   r@   r  r=  r>  r  z/privacy-policyr   content_page_formrZ   r[   r\   r#   rD  r$   r%   r&   r   r   r  r   r]   r	   r   rR   r   rT   r(   rW   r@   r  rD   s         r,   r*   zprivacyPolicy.post  s    		 	 	.$	]]_  )5""9-7



%
%0@V
%
T
Z
Z
\4
477+22wYiv|2}eGFVcijG34
$
%%
++FH
55r.   Nr   re   r.   r,   r*  r*    s(    &>N;<' ='26r.   r*  c                   @    e Zd ZdZ e ed            d        Zd Zy)termsAndConditionsz
terms.htmlr   r   c                 h   t         j                  j                  |j                  j                        j                         }|j                  dk(  rg d}n*t        j                  j                  |j                        }d}|D ]<  }|j                  dk(  rd}nt        |j                  j                        }|dk(  s:d} n |rMt        j                  j                  d      j                         }t        || j                  t                     S t        j                   |d	       t#        d
      S )Nr   Fr,  r9  r5  TTerms)r=  r?  rP   )r4   r$   r%   r5   r   r&   r@  rA  r:  rB  rC  rD  r   rR   r   r   r   r	   rF  s           r,   r#   ztermsAndConditions.get$  s      ''W\\__'=CCE)e#K>#++22	2G>.au$H1<<??#H"nN	  ""))G)<BBD8
$,,fh
77>>'=>
%
&&r.   c                 p   t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }t        j                  j                  dd      j                         }|r>t        j                  j                  |j                        j                  ||dd       n#t        j                  j                  ||dd       t        j                  |d       t        d	      S t!        || j"                  t%                     S )
Nr@   r  rT  r   r<  r   rM  r  z/terms-and-conditionsrN  rP  s         r,   r*   ztermsAndConditions.post<  s    		 	 	.$	]]_  )5""9-7



%
%F
%
K
Q
Q
S4
477+22wY`ms2teGgZ`aG34
*
++
++FH
55r.   Nr   re   r.   r,   rR  rR  "  s(    >N;<' ='.6r.   rR  c                   :    e Zd ZdZ e ed            d        Zy)adminNotificationszadmin_notifications.htmlr   r   c                    t         j                  j                  |j                  j                        j                         }|j                  dk(  rg d}n*t        j                  j                  |j                        }d}|D ]8  }|j                  sdnt        |j                  j                        }|dk(  s6d} n |rt        j                  j                         j                  d      }|j                  j                  dd	      }t!        |d
      }	|	j#                  |      }
t%        || j&                  t)                     S t+        j,                  |d       t/        d      S )Nr   Fr,  r9  r2  Tr   r   r   r   r?  rP   )r4   r$   r%   r5   r   r&   r@  rA  r:  rB  rC  AdminNotificationsr   r   r"   r#   r   r   r   rR   r   r   r   r	   )rT   r(   r7   rG  rH  rI  rJ  notificationsr   r   
notify_objs              r,   r#   zadminNotifications.getO  s     ''W\\__'=CCE)e#K>#++22	2G>.a ,,a#alloo2F8!mN		  %--113<<UC=
++//&!
$4+9""4(:
$,,fh
77>>'=>
%
&&r.   Nr   re   r.   r,   rW  rW  L  s#    +>N;<' ='r.   rW  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   rB  rY  r$   r%   deleter   r]   r   r	   r^   r_   )rT   r(   idsr   int_id_listr`   s         r,   r#   zdeleteAdminNotifications.getj  s    &nn
++//+
&C
&)iin5nCGn[5&&k&:AACg34^^GHI*++ *++ 6 
 &GEF
$
%%&s6   ?C CA'C ;
C C 	C? C:4C?:C?Nr  re   r.   r,   r]  r]  i  s    &r.   r]  c                   :    e Zd ZdZ e ed            d        Zy)helpAndSupportListzhelp_support_list.htmlr   r   c                    t         j                  j                  |j                  j                        j                         }|j                  dk(  rg d}n*t        j                  j                  |j                        }d}|D ]<  }|j                  dk(  rd}nt        |j                  j                        }|dk(  s:d} n |r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 t-        j.                  |d       t1        d      S )Nr   Fr,  r9  rj   T)r   r   r   r   r?  rP   )r4   r$   r%   r5   r   r&   r@  rA  r:  rB  rC  HelpSupportUserr   r"  r   r   r"   r#   r   r   rR   r   r   r   r	   )rT   r(   r7   rG  rH  rI  rJ  totalresolvedpendinghelp_objr   r   sup_objs                 r,   r#   zhelpAndSupportList.get  s      ''W\\__'=CCE)e#K>#++22	2G>.au$H1<<??#H"nN	  ""&&(..05%%,,d,;AAC8$$++U+;AAC7%%))+44U;82&9(;,7
++FH
55>>'=>
%
&&r.   Nr   re   r.   r,   rg  rg  ~  s#    )>N;<' ='r.   rg  c                   :    e Zd ZdZ e ed            d        Zy)viewHelpAndSupportzhelp_support_view.htmlr   r   c                     t         j                  j                  |j                  j                        j                         }t        j                  j                  |      j                         }t        || j                  t                     S r   
r4   r$   r%   r5   r   r&   ri  r   rR   r   )rT   r(   r   r7   rn  s        r,   r#   zviewHelpAndSupport.get  se      ''W\\__'=CCE)##**b*1779'	**68	44r.   Nr   re   r.   r,   rp  rp    s#    )>N;<5 =5r.   rp  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                  j                        j                         }t        j                  j                  |      j                         }t        || j                  t                     S r   rr  )rT   r(   r   r7   helps        r,   r#   zsendReplyHelpSupport.get  se      ''W\\__'=CCE)

!
!
(
(B
(
/
5
5
7$	**68	44r.   c                    t        j                  |j                        }|j                         r|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }t        d|||d      }|}t        j                  }	|}
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   rm   r   T)rx  
reply_dater   zsend successfullyz/help-and-support-list)r   sendsupportformrZ   r[   r\   r#   r   r   rz   r   r{   ri  r$   r%   r   r   r  r   r]   r	   r   rR   r   )rT   r(   r   rW   r   r   rx  rn   r   r   r   s              r,   r*   zsendReplyHelpSupport.post  s   			w||	,$	]]_!!'*5""9-7  )5"#7V[fm9no<=((:2>>'=*rdV!!R!(//e!!%%'t 0 5G01
+
,,
++FH
55r.   Nr   re   r.   r,   rt  rt    s(    *>N;<5 =5
6r.   rt  )MaxSubqueryOuterRefc                   @    e Zd ZdZ e ed            d        Zd Zy)UsersDocumentszusers_documents.htmlr   r   c                 \   |j                   j                  d      }t        j                  j	                  d      j                  t        d            j                  dd      }t        j                  j                  |      j                  d	      j                  d
      }|r7|j                  t        |      t        |      z        j                  d
      }t        |d      }|j                   j                  d      }|j                  |      }t        || j                  ||d      S )Nr   user_idr   	latest_idr  Tflatid__inr5   r   user__full_name__icontainsuser__phone_number__icontainsr   r   r   r   )r"   r#   UserDocumentr$   valuesannotater|  values_listr%   select_relatedr   r   r   r   r   rR   )rT   r(   r   latest_doc_idsr   r   r   r   s           r,   r#   zUsersDocuments.get  s   *; VIXD	X"[4[(	  "")))@OOPVW``afg8+.[12 huo 
 2&9(;,7
$,,/  r.   c           	         |j                   j                         D ]&  \  }}|j                  d      s|s	 t        |j	                  d      d         }t
        j                  j                  |      j                         }|r||j                  _
        d|j                  _        |j                  j                          	 |j                  }|j                  rh|j                  dk(  r,t        |j                  ddt!        |j"                               n-t        |j                  ddt!        |j"                        dd       ) |j                   j-                  d
      }|j                   j-                  d      }	|r|	rt
        j                  j                  |      j                         }|r|j                  }d|_
        |j                          |	|_        |j                          	 |j                  rn|j                  dk(  r/t        |j                  dd|	 t!        |j"                               n0t        |j                  ddt!        |j"                        d|	 d       t/        j0                  |d       t3        d      S # t$        $ r}t'        d	|        Y d }~`d }~ww xY w# t(        t
        j*                  f$ r Y w xY w# t$        $ r}t'        d|        Y d }~d }~ww xY w)Nstatus__r   r   r0   ioszIdentity proof Approvedz&Your identity proof has been approved.z%Error sending approval notification: rejected_doc_idrejection_reasonRejectedzIdentity proof Rejectedz/Your identity proof has been rejected. Reason: z/Your Identity proof has been rejected. Reason: z&Error sending rejection notification: Status updated successfully.zidentity-proof)rZ   items
startswithrB  r   r  r$   r%   r&   r5   document_statusr  ry   	fcm_tokendevice_typerL   rE   r   r^   r'   r   DoesNotExistr#   r   r]   r	   )
rT   r(   keyvaluedoc_iddocumentr5   r`   rejected_idreasons
             r,   r*   zUsersDocuments.post  s|   LL&&(jc5	nnYE#))C.#$V$$++v+6<<>X&+hmm#')hmm$mm:mmt
..u$	
..
#
2
hkk
	
 
 
..


hkk

2
#
+ )F   !23+<<./&V""))[)9??A8==D%DIIK &HMMO9			U	"!
9&BHKK		 

HKK
9&B!	 7:;	"	##O  :4QC899:112 D  9
3A37889sP   B	J*B J*A:K
 	J'J"J*"J''J**KK
	K+K&&K+Nr   re   r.   r,   r  r    s)    '>N;< =<F$r.   r  c                   @    e Zd ZdZ e ed            d        Zd Zy)UsersWalletRequestszusers_money_requests.htmlr   r   c                 P   |j                   j                  d      }t        d|        t        j                  j                         j                  d      }t        d|j                                 |rS|j                  t        |      t        |      z        j                  d      }t        d|j                                 t        |d      }|j                   j                  d	      }t        d
|        |j                  |      }t        || j                  ||d      S )Nr   zSearch term: r   zTotal RequestedMoney objects: r  r  z,Filtered RequestedMoney count after search: r   r   zCurrent page number: r  )r"   r#   r'   RequestedMoneyr$   r   r   r"  r%   r   r   r   r   rR   )rT   r(   r   r   r   r   r   s          r,   r#   zUsersWalletRequests.get1  s
   )+-}%& ##'')2259(
()9(:;<oo-K01 Xe_  	78H7I	JK"%)'+
}-.{+'	++. 
 r.   c                    t        d       |j                  j                         D ]  \  }}|j                  d      s|st        d| d|        	 t	        |j                  d      d         }t        d|        t        j                  j                  |      j                         }|rt        d	|        ||_
        d
|_        |j                          |j                  j                  d|       }|rt        j                  j!                  |j"                  |      }t%        dd|j"                  j&                   d|j"                  j(                  g      }|j+                  d       |j-                  |j.                  |j1                         |j2                         |j5                  d       nt        d        |j                  j                  d      }
|j                  j                  d      }t        d|
 d|        |
r|rt        j                  j                  |
      j                         }|rt        d|
        ||_        t	        |j:                        t	        |j<                        z   |_        t	        |j:                        t	        |j<                        z   |j"                  _        |j                          t        d       nt        d       tA        jB                  |d       tE        d      S # t6        t        j8                  f$ r}	t        d|	        Y d }	~	d }	~	ww xY w)NzPOST request received.r  zProcessing approval: z = r  r   zExtracted doc ID: r   zFound RequestedMoney object: r0   	document_)r5   r  zWallet Request ApprovedzDear zL,

Your wallet request has been approved. Please find the attached document.)r   rA   r   r   F)fail_silentlyz RequestedMoney object not found.z Error processing status update: r  r  zRejected ID: z
, Reason: z"Updating rejection reason for ID: zRejection reason saved.z.RequestedMoney object for rejection not found.r  zuser-wallet-requests)#r'   rZ   r  r  rB  r   r  r$   r%   r&   transaction_statusr  ry   r   r#   r  r  r5   r   r   r   seekattachr   readcontent_typerH   r   r  available_balancerequested_moneywallet_moneyr   r]   r	   )rT   r(   r  r  r  request_objr  user_documentr   r`   r  r  s               r,   r*   zUsersWalletRequests.postK  s    !LL&&(jc5	nnYE	!#c%
12#))C.#$V
x()!))00F0;AAC[+K=9:',k$%'k"""Yvh#78h	#++22 3 	} )[%%//00~""#	u }}Q||HMM8==?H4I4IJzzz& ./? )J   !23+<<./&-}Jvh78V''..+.>DDF;	.{m
<=#)K $'(E(E$Fs;KfKfGg$gK!$'(E(E$Fs;KfKfGg$gK!	
#$	
:;
7:;	(	))+ 334 
-aS12s   E2LL=$L88L=Nr   re   r.   r,   r  r  .  s(    ,>N;< =28*r.   r  c                   :    e Zd ZdZ e ed            d        Zy)TravelDetailsztravel_details.htmlr   r   c                    t         j                  j                  |j                  j                        j                         }t        j                  j                  |      }t        || j                  t                     S r   )r4   r$   r%   r5   r   r&   r   r#   r   rR   r   r   s        r,   r#   zTravelDetails.get  s\      ''W\\__'=CCE)""",'	**68	44r.   Nr   re   r.   r,   r  r    s#    &>N;<5 =5r.   r  c                   :    e Zd ZdZ e ed            d        Zy)BookingsDetailszbookings_details.htmlr   r   c                 "   t         j                  j                  |j                  j                        j                         }t        j                  j                  d      j                  |      }t        || j                  t                     S )Nr   requestsr   )r4   r$   r%   r5   r   r&   r  r  r#   r   rR   r   r   s        r,   r#   zBookingsDetails.get  sg      ''W\\__'=CCE)__++J7;;r;B' 
**68	44r.   Nr   re   r.   r,   r  r    s#    (>N;<5 =5r.   r  c                   d    e Zd ZdZ e ed            d        Z e ed            d        Zy)Setcommisionpercentagezset_commision.htmlrk   r   c                     t         j                  j                         j                         }t	        j
                         }t        || j                  ||d      S )NrW   latest_commission)SetCommisionr$   r%   rE  r   addExercisetimerformr   rR   )rT   r(   r  rW   s       r,   r#   zSetcommisionpercentage.get  sP    "**11388:		#	#	%$	++). 
 r.   c                    t        j                  |j                        }|j                         rg|j                  j                  d      }t        |       t        j                  j                  |       t        j                  |d       t        d      S t        j                  j                         j                         }t        || j                   ||d      S )N	commision)r  r  zset-commision-percentager  )r   r  rZ   r[   r\   r#   r'   r  r$   r  r   r]   r	   r%   rE  r   rR   )rT   r(   rW   
commissionr  s        r,   r*   zSetcommisionpercentage.post  s    		#	#GLL	1$	]]_!!%%k2:4G34
-
..#++22499;
$,,*/  r.   Nr   re   r.   r,   r  r    sA    %>C01 2 >C01 2r.   r  c                   @    e Zd ZdZ e ed            d        Zd Zy)UsersHelpSupportzusers_help_support.htmlr   r   c                 v   |j                   j                  d      }t        j                  j	                  d      j                  t        d            j                  dd      }t        j                  j                  |      j                  d	      j                  d
      }|rD|j                  t        |      t        |      z  t        |      z        j                  d
      }t        |d      }|j                   j                  d      }|j                  |      }t        || j                  ||d      S )Nr   r  r   r  r  Tr  r  r5   r   r  r  )ticket_id__icontainsr   r   )
ticket_objr   )r"   r#   ri  r$   r  r  r|  r  r%   r  r   r   r   r   r   rR   )rT   r(   r   latest_ticket_idsr   r   r   r  s           r,   r#   zUsersHelpSupport.get  s   )+ 
F9Hs4yH!K$K'	  $$++3D+ETTU[\eefkl(oo-K01;'( Xe_	  "%)'+!!+.*	++. 
 r.   c           	         |j                   j                         D ]  \  }}|j                  d      s|s	 t        |j	                  d      d         }t
        j                  j                  |      j                         }|r||_	        d|_
        |j                          |j                  }|j                  rh|j                  dk(  r,t        |j                  ddt!        |j"                               n-t        |j                  ddt!        |j"                        dd       
 |j                   j)                  d
      }|j                   j)                  d      }	|r|	rt
        j                  j                  |      j                         }|rd|_	        |	|_
        |j                          |j                  }|j                  rn|j                  dk(  r/t        |j                  dd|	 t!        |j"                               n0t        |j                  ddt!        |j"                        d|	 d       t+        j,                  |d       t/        d      S # t$        $ r}t'        d	|       Y d }~Ud }~ww xY w)Nr  r  r   r   r0   r  z(Your help and support ticket is approvedzThank you for reaching out.zError approving ticket:rejected_ticket_idr  r  z(Your help and support ticket is rejectedzReason: z$Support ticket updated successfully.zusers-help-support)rZ   r  r  rB  r   ri  r$   r%   r&   r   r  ry   r5   r  r  rL   rE   r   r^   r'   r#   r   r]   r	   )
rT   r(   r  r  	ticket_idticketr5   r`   r  r  s
             r,   r*   zUsersHelpSupport.post  s   LL&&(jc5	nnYESYYs^A&'Y%%,,	,:@@BVfm "fkkm [[d	


e
#		3	&	VYY		
 					VYY	&	3	
+ )D   !56+<<./&V##**k*:@@B6FM$F
KKM;;D~~E!~~1	&
699~	 ~~		
699~	&1 7BC	&	''E  
$a(s   C+I	I5I00I5Nr   re   r.   r,   r  r    s)    *>N;< =:A(r.   r  )NNN)Udjango.shortcutsr   django.views.generic.baser   django.views.genericr   django.contrib.authr   r   r   r	   django.http.responser
   adminapi.modelsdjango.contribr   django.corer   django.template.loaderr   mathrr   rt   django.confr   django.core.paginatorr   django.httpr   django.contrib.auth.decoratorsr   django.utils.decoratorsr   r   r   r0   r   	functionsdjango.utils.htmlr   django.contrib.auth.modelsr   firebase_adminr   django.core.mailr   r-   r8   r;   rL   rN   rg   r   r   r   r   userapi.modelsdjango.db.modelsr   r   r   r   r   r   r  r
  r  r  r  r*  rR  rW  r]  rg  rp  rt  r|  r}  r~  r  r  r  r  r  r  re   r.   r,   <module>r     s   # * - ; ; - -  #  3     + $ 9 4  ,    ( + $ )	*2' 'B>, >8.> .>b, & &<$'< $'L  5, 5 5, 5/#l /#b ,L ,^< 2 " "	5 	5-l -*)\ ) 5\ 5 )6D )6V'6 '6T' ':&t &*' 'B5 56< 64 5 4g$\ g$RU*, U*p5L 5	5l 	5\ :b(| b(r.   