From 40f0d938248284323086e3a4edbdb6a69044e86e Mon Sep 17 00:00:00 2001 From: nataly Date: Wed, 24 Apr 2024 16:56:49 +0300 Subject: [PATCH] New changes. --- .../__pycache__/models.cpython-312.pyc | Bin 9477 -> 9824 bytes .../billing/__pycache__/urls.cpython-312.pyc | Bin 1016 -> 1014 bytes .../billing/__pycache__/views.cpython-312.pyc | Bin 3649 -> 3649 bytes .../add/__pycache__/urls.cpython-312.pyc | Bin 572 -> 572 bytes .../add/__pycache__/views.cpython-312.pyc | Bin 7587 -> 4838 bytes osinaweb/billing/add/urls.py | 1 + osinaweb/billing/add/views.py | 2 +- .../billing/migrations/0042_order_due_date.py | 18 ++ ..._orderitem_end_at_and_more.cpython-312.pyc | Bin 0 -> 939 bytes .../0041_orderitem_active.cpython-312.pyc | Bin 0 -> 806 bytes .../0042_order_due_date.cpython-312.pyc | Bin 0 -> 772 bytes osinaweb/billing/models.py | 1 + .../templates/add_templates/add-order.html | 3 +- .../templates/listing_pages/orders.html | 2 +- osinaweb/billing/urls.py | 1 - osinaweb/billing/views.py | 1 + .../custom_context.cpython-312.pyc | Bin 0 -> 879 bytes .../__pycache__/urls.cpython-312.pyc | Bin 1797 -> 2657 bytes .../__pycache__/views.cpython-312.pyc | Bin 11183 -> 17807 bytes .../add_templates/customer-add-ticket.html | 61 ++++++ .../inner-customer-ticket.html | 175 +++++++++++++++++ .../templates/invoice-payment.html | 117 ++++++++++++ .../listing_pages/customer-invoices.html | 50 +++-- .../listing_pages/customer-orders.html | 6 +- .../listing_pages/customer-tickets.html | 95 ++++++++++ osinaweb/customercore/templates/payment.html | 55 ++++-- osinaweb/customercore/urls.py | 13 +- osinaweb/customercore/views.py | 108 ++++++++++- osinaweb/db.sqlite3 | Bin 1085440 -> 1085440 bytes .../__pycache__/urls.cpython-312.pyc | Bin 6149 -> 6356 bytes .../__pycache__/views.cpython-312.pyc | Bin 28837 -> 29275 bytes .../add/__pycache__/urls.cpython-312.pyc | Bin 2619 -> 2713 bytes .../add/__pycache__/views.cpython-312.pyc | Bin 22054 -> 22271 bytes osinaweb/osinacore/add/urls.py | 2 +- osinaweb/osinacore/add/views.py | 10 + .../templates/add_templates/add-ticket.html | 62 ++++++ .../osinacore/templates/customer_index.html | 106 +++++++---- .../osinacore/templates/customer_main.html | 33 ++-- .../details_templates/project-details.html | 36 ++-- .../details_templates/ticket-details.html | 179 ++++++++++++++++++ .../templates/listing_pages/tickets.html | 134 +++++++++++++ osinaweb/osinacore/templates/main.html | 68 ++++--- osinaweb/osinacore/urls.py | 2 + osinaweb/osinacore/views.py | 21 ++ .../__pycache__/settings.cpython-312.pyc | Bin 3512 -> 3551 bytes osinaweb/static/dist/output.css | 132 +++++++++++++ osinaweb/static/images/.DS_Store | Bin 8196 -> 8196 bytes osinaweb/static/images/icons/happy-icon.png | Bin 0 -> 944 bytes osinaweb/static/images/icons/neutral-icon.png | Bin 0 -> 892 bytes osinaweb/static/images/icons/unhappy-icon.png | Bin 0 -> 920 bytes osinaweb/static/images/netcommerce-logo.png | Bin 0 -> 17777 bytes osinaweb/static/images/netcommercelogo.gif | Bin 7147 -> 0 bytes .../static/images/ositcom_logos/osinablue.png | Bin 2030 -> 2136 bytes .../images/ositcom_logos/osinawhite.png | Bin 1845 -> 1941 bytes .../uploaded_images/invoice_33_2.31.49PM.pdf | Bin 0 -> 39886 bytes .../images/uploaded_images/unhappy-icon.png | Bin 0 -> 920 bytes .../js/customer_dashboard/invoice-payment.js | 63 ++++++ .../js/customer_dashboard/payment-pricing.js | 13 ++ .../static/js/customer_dashboard/payment.js | 10 +- .../js/customer_dashboard/ticket-details.js | 28 +++ 60 files changed, 1475 insertions(+), 133 deletions(-) create mode 100644 osinaweb/billing/migrations/0042_order_due_date.py create mode 100644 osinaweb/billing/migrations/__pycache__/0040_rename_due_at_orderitem_end_at_and_more.cpython-312.pyc create mode 100644 osinaweb/billing/migrations/__pycache__/0041_orderitem_active.cpython-312.pyc create mode 100644 osinaweb/billing/migrations/__pycache__/0042_order_due_date.cpython-312.pyc create mode 100644 osinaweb/customercore/__pycache__/custom_context.cpython-312.pyc create mode 100644 osinaweb/customercore/templates/add_templates/customer-add-ticket.html create mode 100644 osinaweb/customercore/templates/details_templates/inner-customer-ticket.html create mode 100644 osinaweb/customercore/templates/invoice-payment.html create mode 100644 osinaweb/customercore/templates/listing_pages/customer-tickets.html create mode 100644 osinaweb/osinacore/templates/add_templates/add-ticket.html create mode 100644 osinaweb/osinacore/templates/details_templates/ticket-details.html create mode 100644 osinaweb/osinacore/templates/listing_pages/tickets.html create mode 100644 osinaweb/static/images/icons/happy-icon.png create mode 100644 osinaweb/static/images/icons/neutral-icon.png create mode 100644 osinaweb/static/images/icons/unhappy-icon.png create mode 100644 osinaweb/static/images/netcommerce-logo.png delete mode 100644 osinaweb/static/images/netcommercelogo.gif create mode 100644 osinaweb/static/images/uploaded_images/invoice_33_2.31.49PM.pdf create mode 100644 osinaweb/static/images/uploaded_images/unhappy-icon.png create mode 100644 osinaweb/static/js/customer_dashboard/invoice-payment.js create mode 100644 osinaweb/static/js/customer_dashboard/payment-pricing.js create mode 100644 osinaweb/static/js/customer_dashboard/ticket-details.js diff --git a/osinaweb/billing/__pycache__/models.cpython-312.pyc b/osinaweb/billing/__pycache__/models.cpython-312.pyc index 7f78fd0c48940ad810d9e15a865aa472a29e1475..ecfc6235ab66919f1b8894aab3246c34f6d6c8cb 100644 GIT binary patch delta 1386 zcmZ{kUrbw79LMjurKSIFOXQEW;VM;OnoxhqA$Lfs9i{EZd^j*n=g_`vL}t_cN=j&cpg6ao!|ML z-#NeU`Q5v6es|RIy(C!$K0f`cbM`CwOUDf}>4J6huO?BTbywQpxG0}c4R@_25u*fQ zx`Db>+phx8dzO9LEdB@oY{m!%Edjxts zPr;JO3tu}EM#J5@k_Znx0k?q{XgnxT;*}fVswhK)#ppC0_#IFBZU6e6aLm_iY@miK z?Wop8o~*u9$M49;bR%`E<|ovWb+s&9Ek#$WiK}JREV?4mJe^}__^y$Ou*e#@!R&|u z_^F|btU*tGi^x11u5LrR={mR?!*xp}Z-E|HaL}kZ8BNSHmQ24MODrZ*ltpmsNkkWi zW@MT9w94~(&~=U@hcD{)GcP)ZVaes~9YpuD90g(5=B(O$4{g4mWp7pPtjL{Jxwj(s zt`6_Y-p%NGv?_-xa;P|5{=&5(k~d&bK6CgIrlJUZqp+oR*vsgcgpcG1nSzS!QS>fw z9Mr6L!g=^pendPl5L94KalVtqO(uk1!%=Q&rg$QsT%at5?u_oCX*CwlYf_%Fxn!C* z3r^WF446S&M#K@r2t1j+hDdPa2**H80R7g8)3|US@=d4QlD{}vmHZXSe_Pp}*pW^b zM&R?Nuv_U^o2)7w6{X|$&~|=D=`W1I!=_-H$*BBc5KN9ekz0=)ZewIm;9!S%N=D(V zskz+kStDe&eBbL6$qVr4P^)Pf7hl|HX|@&68bgdjs3qXh)zpPF|3}D~mT1=$56hW3 z{IyZ2RiP_ukERzg$pqDPy$nCLJPzR@nsgyeCo&xR_r*@(NxDe7)-m|)@R88}3sk^x zL>wZmZ;}Ey+MD6K)^Er)c)zWWd;$;Jyw;l-gjj&xwj<=GUUR_r3?T#XivJ~&g?s)U zasz(xkDtU-HTw`vB#z}cn{1UG z?Ezw1Mehnkf*sBG(EJRs#i7+_9U8>4`m^y0SAD#5u>D=7mF_4~c#cyZ)|(bds?ft&k%K@wRrZQ9rE`vN!j J$Kl)1(BHT;VDJC{ delta 1174 zcmZ`%O>7%Q6y90e+qL7rIPqUNbJ~DN0JW&h8Wp>mSBW zz|hL23E)bVNcvPo6+|4kG))h!EESGD^i~Op6Rjnr2F^$=ja1;oym6`Ez#P7L^WK{` z@B7|7%zifEz31_`B)-Tu183H{Zh0@LM1~dh*A(@ct|e&$V|>l{8`2qKb}Xqgoek+D zG7~r7rgB~Iee7IT56e< z%9K@W>^_$ASm~lRw**4BB zAeeP=W@^hRNQ_r$fgR!(r`BcW<~#GkV&@Q9TR zG>t_tI|G*jk)Bu3o#1d@dg$+7b*?yn@@qf(wT7d4KX6$l@51}RL$NpU!W;ssveU`J zXip)$1$Tp^Bh%chI5}v~*7^1$LUix*eueNE*b(}fbb~#dsu!??g0P1}%bCel=~$jx zCbRIYnDbQ6RoM%eF^e7_qsBaA`QkgeQ8O&cPGKm6fNwD!;WUQ|AB^;By9?1d!hQ@~ z;qb?jbl)9sz^(8I{2m^JU6Ew3%@KTJlN9eGnOjfQF30F2i3985`E0IPjI0xKx*6%| zlexw($KuMT7?_0FShV9DnpuQnP>&_TLNK9~`X8;ni;a_MAn_2NB>#@?@!~=$Z&0Dj z91O*urm$$sGg+ilB@S&Z_F-Y9&xBqzc)fQZ_5XB5GYGS=-1{Lp2WsB~!r+&_z4ouT z7dBHt*Hx^BP=*8A0J#c>m1y&h;qy}BrFo00MoE|6FU?M$uyu^rCu_+tgO0M+*=Yiw=xjh Gk@*|jBp|l{ diff --git a/osinaweb/billing/__pycache__/urls.cpython-312.pyc b/osinaweb/billing/__pycache__/urls.cpython-312.pyc index 7688d1d473ea85c23d7020901e9c5d824477835d..412f0bc60e9acc753d760f86e057ae9b746bcf91 100644 GIT binary patch delta 48 zcmeyt{*9gYG%qg~0}vFy)<|pG$m_$*IAwAaa|ZK67LLisnbo)@dHIB=N&r>i B3?={o delta 50 zcmeyy{)3(OG%qg~0}v=XtEV+@`@oHjX%IfL~h8v`rnob5Mr&G%qg~0}!~s)<`?Jk=KL|07)GNH~;_u delta 22 ccmX>ob5Mr&G%qg~0}z~yP)j?ok=KL|07(P}Bme*a diff --git a/osinaweb/billing/add/__pycache__/urls.cpython-312.pyc b/osinaweb/billing/add/__pycache__/urls.cpython-312.pyc index 1410fe7937b59cb9e67e558622c1c84e01b5109a..eaa0a8cfbc00dc7844bd213224719d508d59e0de 100644 GIT binary patch delta 20 acmdnPvWJEHG%qg~0}yPPqOppaiva0aRM3DquooW5AU7B3W``^v*%*lm&*4 zk=Yp#142Rw{~1gy2$@D*5Hl(p190#7RfB{je|q}vd+*-&>7HEpIBUGt^%4=^yGK^1 zr4Nls+8fT@9xpr~w+y!^&~#OS<*mG38ou;nn?BBr8=?VBgfhZGghSCt=}3~4<8(aWq0`&!GSJiGitRoR z1HnTD5B9Bq?S-2R?t5)!7hodQ2dDm3!(qYM8Nh`THF~9<9!#O?2*Oc>DxR2Ee%^Qk zf{y1iIEF`Ztr}KYggQb4A%~y{unm~T`Zz)pK_)Yg)t`8@Uw$y1t8&X3RHTi;tl&6y zHBuj(5LBXVx~?N~L+5Z-FjoAuv`ncLf6z7*O|B{@SE5yO;()ZR{77U$s9`bkOq?Mk#=-S(4AzyaTuj6;f^5kP@V z>`U=tH*ottTZZd`qvGe7+b4xmx=U8xkd+-$+ac9mvM?g85ox?9>Rxe*uG78qHG!Wm K(T8XH*LAsz zWfblvbGcjb5FAvz1dED~;GS7moS*wB>yO(^$BB!lCro?d!i7Z_`+Hk&7cq*u0R;i| z0_v-MYEQF5ZNPD4R~QH#A(PjznoHu@qMFo{bt>;Ue&LK0VSX{_{Lan>YTcf`l(1f# zOHJ#zkWf$`jmgsg{J+v@Goi(8C|vuMXJ2It2t)vF1=LTF zDJ0s9okfMTmQ~RJqZwIsk5Z!|jn5}Ju&k6mLLa|!1D-_yAIHpfll%(DY5xqbt@x^z&hgo)L@iX6fyN^0X?TEF0p)W||v$sMY z1IznsuL*H>q*fHRZyN=|`gorYueK-*x@c4bwH0CL(uR0wDEq(!T@S3AzN^!^mREHh z;@JNL7u8l4BCDBi8=SMrxmMJ+&(?Zdci1IM8t%vNQ}w2I_JHWVY1$Z4pj! zLBhz#r~XJq;o!qETXrfQ!~QX&I1Q)bDiO}d%w0#>m3Ou2-n;g)>w8>>y50bW%dlZ6 zbqX1eHDhWXzPqyEdjK0vpzOv_<`fjZ;}xg)4V%W6JqDKf< zG~DLwox-^+Rh2&^D|w|h98DMUc({_5Q>ye%hYC!}NXt1bJ9|Kioh=lLT3(MGTqmQW z)B$N4Wp~AjGM-A}LbBMBOM-S1&i1_+r(p|uBwV0#(3e188XD;=S?1w~8GS|YM8 z`s>h{cL`;=JM~m_`k{Kx{qib6Jfb@gW;*En+`678Q_*!dBsVdgZo+46p z;;W3cLSD`$r?fnwa#rb-9D9pO+O*AFEeUe5nAK8LaD))aYJ4R{wwq|v=R;{g##l~G zLFfl*4)StNJrvE&CW$!MiI&7fOJVq!rWXsk2CK%U*2N8-V%kXnCWp10S}NpK1kGhS zW>p!P?vt&?pqHfSA~`1cN3Dl}Gp!*Vn|9(nIt40Do%o7d&w#^(fZ!;lZvo^3zGnuJ zYY+TFaKD(gf^IsXj!Z|Upyd&~%uMg;V57Jzpr}yiHqq8{r1MZF=y0%wiFs_goc{p?)$Ia zPt?WH>col|ox)^VY=ai83$>59}N$C|?N>WO8c?~bz`=&z112gCCtb0ha+&0uAy zdTQ0h2f6C&Px=|3aQml^ywN4^o`!eNSG;h$^oWnH@IpN_N;YZLY47!}a!h}8)yMdT zA2TkWtD1Py!}Nyc$LGf9C*~$T*|an;))*N3Gxsp`dHA#NL;j0n^%u`Id(Kx+uXz0L zx|r+TIRampA6gz+}0m)TfVgu8Zjb$_(s82r*FR?mDJ0xdB2REIYBYbZD#v40+Mj_+{Cdu#vczI7H& z61wS~QDuF$NU99e{-I5S;88%Iz4U!Z>*J3Mg4>=}&{OVZa$-$q)x&6((BPiZU#k5n hC=L9Rk-p(Jv#+t=9Owu9Dm%y?V;`So53@Z~|Gz/', views.add_invoice_pdf, name='addinvoice'), ] diff --git a/osinaweb/billing/add/views.py b/osinaweb/billing/add/views.py index b208278b..13348202 100644 --- a/osinaweb/billing/add/views.py +++ b/osinaweb/billing/add/views.py @@ -173,7 +173,7 @@ def add_invoice_pdf(request, order_id): response = HttpResponse(pdf, content_type='application/pdf') response['Content-Disposition'] = 'attachment; filename="my_pdf.pdf"' - return response + return response
 diff --git a/osinaweb/billing/migrations/0042_order_due_date.py b/osinaweb/billing/migrations/0042_order_due_date.py new file mode 100644 index 00000000..2cb9b9b7 --- /dev/null +++ b/osinaweb/billing/migrations/0042_order_due_date.py @@ -0,0 +1,18 @@ +# Generated by Django 5.0.4 on 2024-04-24 12:44 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('billing', '0041_orderitem_active'), + ] + + operations = [ + migrations.AddField( + model_name='order', + name='due_date', + field=models.DateField(blank=True, null=True), + ), + ] diff --git a/osinaweb/billing/migrations/__pycache__/0040_rename_due_at_orderitem_end_at_and_more.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0040_rename_due_at_orderitem_end_at_and_more.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a2ebcf0240794b8d3dc30d8727871f25c57328ca GIT binary patch literal 939 zcmZuv&ui2`6rM@4*(B{kyHq^1-Ik@OIoK>HNI?ohQ4sB+=p~mSn|WQb=Epk8Qud}$ zP(1Y@^j}cgga3!81)*iGp1duzBJ|{&WY;Ply*0UpD-A3c)tG&W+RBtYjHC|8I<9 z7-ynZ?=SpEtMmG)b%G|Saca-@>S?|`a@;v-Kc97u$EbIsIF8buTOR8J3d*xsTH!nV7_WFwwOo^Ubq~L+rKp&Y9I3Tdnh(?eiO}_+8cw+fmYr zl9tETvXU0p&ztR|TW8JoxY_=+^kwH;bE}GM%r(uoPsQr2*sg0xyE@G#@0Mnku2t=< vsIW4&h3Lw9Sl!6BSVv0n&sD@kr7XA2wSg^iyCNtyi{^mO<6 literal 0 HcmV?d00001 diff --git a/osinaweb/billing/migrations/__pycache__/0041_orderitem_active.cpython-312.pyc b/osinaweb/billing/migrations/__pycache__/0041_orderitem_active.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f13b1cdf65d23fad2d6c94b58b2564a359b1e890 GIT binary patch literal 806 zcmY*X&x_MQ6n>MW(>kpO{M0*guZ>fld{2T?;J}H1ka#52JdJ<`&wy*kz;z@8x@ualXZiwr`p9r9zZ7w_!VZIe!m=Qa z(t?IDN0Ii{JpksC%)1ht0)j_4cp4{t;^`WoF(?IJZ2>8Rs~R0#`#-N3H+bcoo@tB9 zd37aA&ND}*V-?oRl_Dvx+6{yVqJD9=-G0#a6O34hKF`r-nI9({lOV&;$B3&0lS>#U zSXlo`1!cV~c!vkC)ijQWEEic}M7a=-E^n`H?5m+Nr()$WK*2jwhv}Dj-!E)mPUX2k ziEF<9HfN%gAsNS^JR754fN7!(F3cyKAE+6Lp=j-C91CPonJVmfh)cJ>!dzK!IdtEo zn51r;23ao--TkDI03_3dfBb#i-BZ;k7% zFZiwbqyFfkYFPG6r*-<_d2(|#vf~(qwGg+K*(!iy$jPQ4sA(FS!h9XSSp!lbWP1y(ui{ zac}!CDBXkqho^$jGFMOD0$maIAkHKW)j7O;-}^Q1eUopSn-0h`{d4#DBLeuLNPWx| zSRP4m4iqSgAVxllHD5!Z!84%RDNvoEA+C$o->F_B6HXis(jX5Lo(UW$ zlto#8T?1gP$g(HFIWX`M1z)3RfP7s8W(>=L|1AMI230XUy!O9eF=|lb!klVV3i&|XI6QoCk0dE&X_&K^1pPdG$AnpWghj`U&>&~8WR2O2 z0{%uAd>lotE;m$L5gx=$`jj<~Ll)7lYYU5%enNyph|C*DOyUhf-j0Jv~F zFLZ4izkg9UVDEl%=2mNFwH7hX8Y{UyxE>L+n=|;cD^?sUN#KdDRkV#AD*W- z>yBO55Oy`$0qvDqlnPXL?x?gf_m)Ig)}u<$qqHTd{Fx!!m8Q@ULccK}_Y!X)eCEuz N_GVjqzd(|*`Y#f##vA|u literal 0 HcmV?d00001 diff --git a/osinaweb/billing/models.py b/osinaweb/billing/models.py index a96052b8..6522c06d 100644 --- a/osinaweb/billing/models.py +++ b/osinaweb/billing/models.py @@ -40,6 +40,7 @@ class Order(models.Model): business = models.ForeignKey(Business, on_delete=models.SET_NULL, null=True, blank=True) status = models.CharField(max_length=200, choices=STATUS, default='None') order_id = models.CharField(max_length=100, null=True, blank=True) + due_date = models.DateField(null=True, blank=True) @property def get_cart_total(self): orderitems = self.orderitem_set.all() diff --git a/osinaweb/billing/templates/add_templates/add-order.html b/osinaweb/billing/templates/add_templates/add-order.html index bcc9a220..c927ca21 100644 --- a/osinaweb/billing/templates/add_templates/add-order.html +++ b/osinaweb/billing/templates/add_templates/add-order.html @@ -34,8 +34,7 @@
diff --git a/osinaweb/billing/templates/listing_pages/orders.html b/osinaweb/billing/templates/listing_pages/orders.html index dc13d514..1f27d697 100644 --- a/osinaweb/billing/templates/listing_pages/orders.html +++ b/osinaweb/billing/templates/listing_pages/orders.html @@ -86,7 +86,7 @@ {% if order.status == 'Pending' and not order.invoice %} - + diff --git a/osinaweb/billing/urls.py b/osinaweb/billing/urls.py index 1de7f5b8..83109ae9 100644 --- a/osinaweb/billing/urls.py +++ b/osinaweb/billing/urls.py @@ -14,7 +14,6 @@ urlpatterns = [ # DETAILS path('invoice-details//', views.invoice_details, name='invoicedetails'), - path('fetch-customer-items//', views.fetch_customer_items, name='fetch_customer_items'), path('fetch-customer-businesses//', views.fetch_customer_businesses, name='fetch_customer_businesses'), ] diff --git a/osinaweb/billing/views.py b/osinaweb/billing/views.py index 38056455..dd31953c 100644 --- a/osinaweb/billing/views.py +++ b/osinaweb/billing/views.py @@ -85,3 +85,4 @@ def fetch_customer_businesses(request, customer_id): business_data = None return JsonResponse({'businesses': business_data}) + diff --git a/osinaweb/customercore/__pycache__/custom_context.cpython-312.pyc b/osinaweb/customercore/__pycache__/custom_context.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a4d040255473cd080929396b04f73693542400fe GIT binary patch literal 879 zcma)4&x_MQ6rM@5O{#WVt)S?#DcHk~;AU@?wa9`(@lr)ygk`m)$?Q5IP3p|Vwa|is zpjScIyEoZ-_fJqfn5xhcdh_IMp|{0@lQh|0_TYoO`QESZy?K*w`TQv$c#cIDC?me*+4ui|xdW@g8pJDXr;IoES~hb2)y&S3BJ>=X2r^PB5eAMBnJm84>Cw7+=-``Qlhv zeA9c?8!43^N@bvp(8dsLj8J`u>R%px-~PHCp!zSgH7;G+uf3~{O8T&*zf~vN%1B!q zYHK5{I@GG4d9e97(5gSRCxNd2iml?CY7cQ0nLO z^mPWUeJ)*zU1ONv_&`^fZ2mlSe@P`=9Tx*xums(;7$uwtmOpzwxku+A7e!pc@#zl4 zCb&4_R;lYmkeJ|BV8>lcIRM>()d?_(3a(Mti6Aw>r4g5Le7XZ`6WluD1nhPwGKwJM zfYner+{&hfb8Mwqn>&(>gL8It;ExsfQf~(|2ow#aRV0oyv*B7c-?=t+ef1W>bX1RWBS>%0 zE2@fWQF&Z2IMk^;qQCxdePlcBsG=S>6d7iZq!xOSk-M*`MuCW;0*X0%hMWk|zNx5+ zp-2W4DJCC4`LNMMt>2&?v8c13j@Uj>lhkTMXlgHX4gY60Q`C4IXXy|{GR3P39+e%W z?TctCA{onDZZkDIHpm$4x#4rg3Elk0RU;vMU4S+z()P4@^8ue)_tOWFr`nM*NgbMD zR`_;#6IH{1i2fdZFWfB4o-zxkOz_gn@Ke^*!U-HKZuJ(otb0%T+}2uYK9X8>2z4B?dQRn{vH2XXJ delta 182 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 R%XG&sIr)bQ^b+;%e*=4N@E!mF delta 4133 zcmds4eQZk`+Q<73b5(0q`t!dYlsxrp!K^z?0z3&-F zu#>c+YtbrEdaJ@#s?trGh)4w+`=~Zeqgz>#rmZlxg5F)0{X z*gyMkS9-s9&bjBFd*8d~oO|xkuaUD)JAP@mR|wE<|F~sOefXFoKwQUKzBD6SCDUQy z4E8|VX#?I|#@m6nl<^MWE6R8$@YXWk1-z|{cLQ%P<2}GT%J=~<2%KdCpX53$?DR{5 zWJp%-tb|^7S#Oo(f!=`R1+12QfHjkbh@X9z>|#+7y{G!vDd&&rC* zR*PYFQ}p-~qQnk|-0Ml&=mW#g(seIW9&-gldFZ1Sf!E1i*z9mr}AGO`}zXE(3*n z)MRnX$kK|=@33AcyRd_X0W@(>f+}iZPSY3XY(}*fgjNJTu?Z+XZ*gXOT1iaEscbZp zjHMLX2K{T;SM9Ht=Imh4I)V>B=pW+nc#KMm!`or_MtGmFpnr;Np@ zEJerCike96U9_|c3~a*ot2{dGs+hXt^tEjF|%uF zf6-Wr?>{Yz&ACF6P8bly&sdA#0f_4WicJIp9rVsC?51mPe@>UvOZt<#yg@}*<1Gi? zpEI06Eoh@cMBFh)G+jc95Y3QK<%x)nc0rG3j8Ddsvck@}E9D3Z98bvcET!-}`ml$V zcD%6FBHwDwgf^lHi5sDh!ob2N3#;*8-1|k6Q!D^o&Z&!nitO~NT ze!tt6v&>hNbR9Vd>h=&pvgQc?t+t#YXU{`I36eW!M|@k9JSS~=r$tcl zAMrLGX0cV?dT-7-?<<*gsg1>c$)9tLH?fZcK?4xYsJy0fAH)b9#*U)e(mU@~aaVYg zstyY|_jnthB5;Njr2VDTTa@HIIS+dw;D5BbB=M>k9=u64Id6hUmGia51&#`33k>pg zeH;kQER6_Bbugm7d_<$5b`&i(33PehS7sxeD}6i>%4QBp%kH-m*F7UhLf$v+8(n-K zAP0nl`e%d##1LuNF~!o=n|r6MBT7PzrzgUru_Wz=X*DzVTJ*n%ku~f{r)2Qx8en+7 zi|90wr!(%K%vIAxrr6e+7Qp9g))?-QRS|Z&=GVX;s2#RoOh_>`HpPBbn{I@$!vmD2X(T{{xcm^?77B)O(+i=u9w^OP z_}&bK6NlD;guNG9&hCa*1)fDk%;}n?G)2TuZLGVlr=6$%r%?m{8r_D#qh93pG_hcC z80F*adv%XnFzaYUR{ZSpMt?Izav_f0iBv*O#8f#NACu$z(piBWFD*+ezCp@@S}Rm7Q6nV)|xG5{Usd% z`jS}$j4x(4ScD*ya^fdCrY-xKj();UHEh<=H`t#WsP4I8wyQDE&NheYUL7$ADxPt? zNzP)7fCsvACbrP%d%Z=Rv8&5VDiH7Bww`(KQou|K5CC|{@dg3Vl6OeHrBKZ|ie{%k z15(a^v9=flj%f!E0(c)F_F@!7{5$AYcC2NLjI(l+vy zrBxt}5Q_WwC-jbjLr*HSmaUGo&cr}OcO&cqn6j1}WqlZ21qT#dZ4XkIT4@p?gAhmH zag{&{b9mwWH$%k8DjeXNK9xS8*)mxgAB!n)n#NSkf*q2aRAZV^8p_HjGs8)npir>T zG#Wvlr4&HZLm3fq7D|XLO2-jY-j$_E{#o=zlpSJkt_YJ!_QMtR5jz|MX&Rl76(zP; zrqj@`V4cBFpCy1`?P&{G-+-QWbmMOJX@{Tv9O^^Rb4lj1Lr$-HiaOu%d)xIY)?wqI5x$A=Er9#B2YAi3J3ATO zLuEO-c&DJJK@2rxVZThcVS^9cFe7eQq?TRS^dw0#e_wd!aWq<0^u=g0y*H7H;#Csz zpTsYW{LaU(TKwKavDl(`@t}BFpm+h`HFF^y$C1SYmtr2H=uCWtbA`(RKcnxNdnVvM znUpus3M@@v@sJSNU;07;sJ3<0w{%9bo!rp_xxmQ<58K<{MjF`Jex=VsIv2Zux*gDy l6?bd`vE3knTe_~LaY)`iNb1NYa(gqWC(U=ZAo459zX4ASu*m=b diff --git a/osinaweb/customercore/templates/add_templates/customer-add-ticket.html b/osinaweb/customercore/templates/add_templates/customer-add-ticket.html new file mode 100644 index 00000000..04029264 --- /dev/null +++ b/osinaweb/customercore/templates/add_templates/customer-add-ticket.html @@ -0,0 +1,61 @@ +{% extends "customer_main.html" %} +{%load static%} + +{% block content %} + +
+
+

+ Open Ticket +

+ +
+ {% csrf_token %} + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+ + Upload + Document(s) + +
+
+
+ +
+ +
+
+
+
+ + + + +{% endblock %} \ No newline at end of file diff --git a/osinaweb/customercore/templates/details_templates/inner-customer-ticket.html b/osinaweb/customercore/templates/details_templates/inner-customer-ticket.html new file mode 100644 index 00000000..d8287579 --- /dev/null +++ b/osinaweb/customercore/templates/details_templates/inner-customer-ticket.html @@ -0,0 +1,175 @@ +{% extends "customer_main.html" %} +{%load static%} + +{% block content %} + +
+
+
+

Ticket: #2226663535

+ +
+
+

Closed by Linode at 20-4-24 16:30

+
+
+ + +
+ +
+
+
+ +
+
+ + +
+
+

Ositcom + Ltd + commented 2024-04-17 12:19

+ + + + + + + +
+ +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus non purus consectetur + magna sodales fringilla. Suspendisse non imperdiet metus. Curabitur feugiat tristique + varius. Curabitur fermentum sapien nisi, sed suscipit odio luctus sed. Mauris pretium risus + a tincidunt facilisis. Aliquam quis odio in mi aliquet scelerisque et ut urna. Ut ultrices + turpis odio, id hendrerit lectus dignissim in. Donec at tortor quis dui auctor sodales porta + et purus. Aliquam at nunc sit amet tortor lacinia porttitor. Proin auctor, eros ac + sollicitudin iaculis, felis quam vulputate ante, eu varius dolor arcu non enim. Vestibulum + ornare dapibus risus, id eleifend ipsum. Aliquam metus urna, bibendum quis cursus vitae, + placerat sit amet felis. Aliquam tellus ex, pretium id gravida id, vulputate et velit. + Phasellus leo felis, lobortis ut dolor eget, viverra aliquet ligula. Aliquam molestie ac + eros et fermentum. +

+ +
+
+
+ + + +
+ + + + +
+
+
+ +
+
+ + +
+ + + +
+
+ + + + + +
+ + +
+ +
+ +
+
+
+
+ + + + + + + + +{% endblock %} \ No newline at end of file diff --git a/osinaweb/customercore/templates/invoice-payment.html b/osinaweb/customercore/templates/invoice-payment.html new file mode 100644 index 00000000..7501569a --- /dev/null +++ b/osinaweb/customercore/templates/invoice-payment.html @@ -0,0 +1,117 @@ +{% extends "customer_main.html" %} +{%load static%} + +{% block modules_section %} + +{% endblock modules_section %} + +{% block content %} + + + + + + +
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+ + +
+ + +
+

Due Date: {{invoice.order.due_date}}

+

Invoice ${{invoice.invoice_number}}

+
+ +
+

Bill To:

+

{{invoice.order.customer.user.first_name}} {{invoice.order.customer.user.last_name}}

+

{{invoice.order.customer.mobile_number}}

+

{{invoice.order.customer.user.email}}

+
+ +
+

Invoice Items

+
+ + +
+
    + {% for item in invoice.order.orderitem_set.all %} +
  • {{item.item.title}}
  • + {% endfor %} +
+ +
+

Total: ${{invoice.order.get_cart_total}}

+
+
+
+ +
+

Payment Powered By

+ +
+
+ + + + +
+ + +
+
+
+
+
+
+ + + + + + + + + + + + + + +{% endblock %} \ No newline at end of file diff --git a/osinaweb/customercore/templates/listing_pages/customer-invoices.html b/osinaweb/customercore/templates/listing_pages/customer-invoices.html index 76e45116..99b091b6 100644 --- a/osinaweb/customercore/templates/listing_pages/customer-invoices.html +++ b/osinaweb/customercore/templates/listing_pages/customer-invoices.html @@ -13,21 +13,22 @@ - Due Date + ID - Title + Due Date - Description + Items Status - + Amount @@ -38,35 +39,58 @@ + {% for invoice in invoices %} -

20-2-2024

+

{{invoice.invoice_number}}

-

Invoice 1

+

{{invoice.order.due_date}}

-

Invoice description section

+
+
    + {% for item in invoice.order.orderitem_set.all %} +
  • {{item.item.title}}
  • + {% endfor %} +
+
- -

Pending

+ +

{{invoice.order.status}}

-

200

+

${{invoice.order.get_cart_total}}

-
- + + + {% if not invoice.order.status == 'Completed' %} + + + + {% endif %}
+ {% endfor %} diff --git a/osinaweb/customercore/templates/listing_pages/customer-orders.html b/osinaweb/customercore/templates/listing_pages/customer-orders.html index 891afe32..42e44180 100644 --- a/osinaweb/customercore/templates/listing_pages/customer-orders.html +++ b/osinaweb/customercore/templates/listing_pages/customer-orders.html @@ -41,17 +41,17 @@ {% for order in orders %} -

{{order.order_id}}

+

{{order.order_id}}

{% for item in order.orderitem_set.all %} -

{{item.item.title}}

+

{{item.item.title}}

{% endfor %} -

${{order.get_cart_total}}

+

${{order.get_cart_total}}

diff --git a/osinaweb/customercore/templates/listing_pages/customer-tickets.html b/osinaweb/customercore/templates/listing_pages/customer-tickets.html new file mode 100644 index 00000000..0de1c871 --- /dev/null +++ b/osinaweb/customercore/templates/listing_pages/customer-tickets.html @@ -0,0 +1,95 @@ +{% extends "customer_main.html" %} +{%load static%} + +{% block content %} + +
+
+

My Tickets

+ + +
+
+
+

Open Ticktes

+

Closed Ticktes

+
+ + + + + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Subject + + Ticket ID + + Regarding + + Date Created + + Last Updated + + Updated By +
+ +

My Account Balance

+
+
+

22666766

+
+

Django

+
+

20-2-2024

+
+

20-2-2024

+
+

Ositcom Ltd

+
+
+
+ +
+
+ +{% endblock %} \ No newline at end of file diff --git a/osinaweb/customercore/templates/payment.html b/osinaweb/customercore/templates/payment.html index c7b23be0..cd609d27 100644 --- a/osinaweb/customercore/templates/payment.html +++ b/osinaweb/customercore/templates/payment.html @@ -15,8 +15,10 @@
+ +
+ class="w-full flex flex-col items-center justify-between rounded-tl-md rounded-lb-none xxlg1:rounded-l-md h-full rounded-tr-md xxlg1:rounded-tr-none gap-8 overflow-hidden relative bg-gradient-to-b from-gray-400 via-gray-500 to-blue-950">
@@ -31,28 +33,46 @@
- +
+ -
-

{{item.title}}

-

${{item.amount}}

+
+ - +
+

{{item.title}}

+

$

+ + +
+ +
+

Payment Powered By

+ +
-
-
+
+ +
@@ -60,8 +80,8 @@
- + @@ -69,7 +89,12 @@ + + + + + {% endblock %} \ No newline at end of file diff --git a/osinaweb/customercore/urls.py b/osinaweb/customercore/urls.py index fe75ce60..9e9c0252 100644 --- a/osinaweb/customercore/urls.py +++ b/osinaweb/customercore/urls.py @@ -3,14 +3,22 @@ from . import views urlpatterns = [ - # LISTING path('redirect-osimenu/', views.redirect_osimenu, name='redirectosimenu'), path('redirect-osicard/', views.redirect_osicard, name='redirectosicard'), + # ADD + path('customer-add-ticket/', views.customer_add_ticket, name='customeraddticket'), + + # LISTING path('my-invoices/', views.customer_invoices, name='customerinvoices'), path('products/', views.all_products, name='products'), path('my-orders/', views.customer_orders, name='customerorders'), + path('my-tickets/', views.customer_tickets, name='customertickets'), + + + # DETAILS + path('inner-customer-ticket/', views.inner_customer_ticket, name='innercustomerticket'), # PRODUCTS URL @@ -27,4 +35,7 @@ urlpatterns = [ path('payment/osimenu-basic/', views.buy_free_osimenu, name='buyfreeosimenu'), path('payment/osicard-basic/', views.buy_free_osicard, name='buyfreeosicard'), + + path('invoice-payment//', views.invoice_payment, name='invoicepayment'), + path('initiate_invoice_checkout/', views.initiate_invoice_checkout, name='initiateinvoicecheckout'), ] diff --git a/osinaweb/customercore/views.py b/osinaweb/customercore/views.py index 694ce424..979dc12d 100644 --- a/osinaweb/customercore/views.py +++ b/osinaweb/customercore/views.py @@ -27,13 +27,27 @@ def redirect_osicard(request): +# ADD @customer_login_required -def customer_invoices(request, *args, **kwargs): +def customer_add_ticket(request, *args, **kwargs): context = { } + return render(request, 'add_templates/customer-add-ticket.html', context) + + + +# LISTING +@customer_login_required +def customer_invoices(request, *args, **kwargs): + invoices = Invoice.objects.filter(order__customer = request.user.customerprofile) + + context = { + 'invoices' : invoices, + } + return render(request, 'listing_pages/customer-invoices.html', context) @@ -61,6 +75,27 @@ def customer_orders(request, *args, **kwargs): return render(request, 'listing_pages/customer-orders.html', context) +@customer_login_required +def customer_tickets(request, *args, **kwargs): + + context = { + + } + + return render(request, 'listing_pages/customer-tickets.html', context) + + + + +# DETAILS +def inner_customer_ticket(request, *args, **kwargs): + + context = { + + } + + return render(request, 'details_templates/inner-customer-ticket.html', context) + @@ -128,10 +163,13 @@ def dedicated_servers_plans(request, *args, **kwargs): def payment(request, item_id): item = get_object_or_404(Item, id=item_id) cycles = RecurringCycle.objects.filter(item = item) + + selected_cycle = None context = { 'item' : item, 'cycles' : cycles, + 'selected_cycle': selected_cycle, } return render(request, 'payment.html', context) @@ -356,4 +394,70 @@ def buy_free_osicard(request): response = requests.post(api_url, json=api_data) print(response) - return redirect('customerorders') \ No newline at end of file + return redirect('customerorders') + + +@customer_login_required +def invoice_payment(request, invoice_id): + invoice = get_object_or_404(Invoice, id = invoice_id) + + context = { + 'invoice' : invoice, + } + + return render(request, 'invoice-payment.html', context) + + +@customer_login_required +def initiate_invoice_checkout(request): + api_username = 'merchant.TEST06127800' + api_password = '37846250a67c70e7fe9f82cf6ca81f93' + merchant_id = 'TEST06127800' + merchant_name = 'Ositcom Sal' + + customer = request.user.customerprofile + + data = json.loads(request.body) + invoice_id = data.get('invoice_id') + + invoice = get_object_or_404(Invoice, id=invoice_id) + + + order = invoice.order + order_id = order.order_id + + price = order.get_cart_total + + + payload = { + 'apiOperation': 'INITIATE_CHECKOUT', + 'apiUsername': api_username, + 'apiPassword': api_password, + 'merchant': merchant_id, + 'interaction.operation': 'PURCHASE', + 'interaction.merchant.name': merchant_name, + 'order.id': order_id, + 'order.amount': price, + 'order.currency': 'USD', + 'order.description': 'description_of_order', + 'order.notificationUrl' : 'https://newosina.osinode.com/webhooks/', + 'interaction.returnUrl' : f"https://newosina.osinode.com/check-order-status/{merchant_id}/{order_id}/" + } + + try: + response = requests.post('https://creditlibanais-netcommerce.gateway.mastercard.com/api/nvp/version/78', data=payload) + + print('Response Content:', response.text) + + if response.status_code == 200: + response_data = response.text + parsed_data = dict(item.split('=') for item in response_data.split('&')) + session_id = parsed_data.get('session.id') + return JsonResponse({'session_id': session_id}, status=200) + + else: + print('Response Status Code:', response.status_code) + return JsonResponse({'error': 'Failed to initiate checkout'}, status=500) + except Exception as e: + print('Exception:', e) + return JsonResponse({'error': 'Internal Server Error'}, status=500) \ No newline at end of file diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3 index 6948f832669e68b5b463b9bdf2efe4bbdd01901a..4008f8341b6b67f7c382e7f6b2bba96089c4066e 100644 GIT binary patch delta 5792 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 diff --git a/osinaweb/osinacore/__pycache__/urls.cpython-312.pyc b/osinaweb/osinacore/__pycache__/urls.cpython-312.pyc index 89278a3a2c81acd08e075576774abb560b091a9b..d3725d1ce27d02dbecac954609cd560452d7efbb 100644 GIT binary patch delta 1434 zcmZvbOH3PA6ozecvBBUHV>5nWh7$CxLMm7!qsX2 zrLQ5|xU==CS5bF9sO}Hdi@VQt>f(_}qe(};+3;she>J>D=7xjqjeFUH{m@&3TAlvT z9M{@g)Wtw1d$7KpQ>f`Z{mt}LryV|BIp@;q@;3gVId>k$_*@%)uH8kvf(?ve@kk z`b)2=Z#=dYdrSRXzp#i=kQiA0XNxle(5OJM(O2n}11Twx66f|X%9AEQ&5*MfqoomU zMA*VgQxnVoYjHXNo};;5;qckflcVY+Mia!$@q9OiX4m+9b5A6LPJ`^FO5@r^}ld^^$f-xM;#%K9oH%$rBUfvlz`0 zH=quR`YTyEI3opT#DyG2_lbw)f44FPF!Vu7XK}u?%q>?O7)6K|WFN@xa=mQ#Np@f5 zTZ~4CA3y+rqnIeAxRme^p85jF{UCRg+hj*Tas*D?7{$o|fFOYOVz#u)?N%;hG)zJu zhZWg+Rv!d?h~I0o=;^D!2xTD(>agM#8=d8Z>>89@gJSF&M%T%gfMOIm%2ByJB(;Z5 z9$++1E&;g=lRtWdD*#3Szy}X-0bv-U02u{&OiNpND{Zo$mHe!jxQ)@u0!e6rj;oa3 zLs)W!PYUo&Cn&q7GP+CRQXnplFJQDtu2VRv!cHM7cSoh}XmtvsNs^>2#jh~T(iE+y zRi8&_lRJl`&Y`LYp791{Gb&TIlk8l5)yJxOzMeMA3^^)%5L$m z874PR>pS2(`x7ivutI^2^NP+;tu(+ssqdTe)5<^pA3JBE7%Q6bEpxGj?L9Zqn3Ve_+Q>V#gniojAn7Z8xz(;(Yicg@#Z!X-N)tXhR8V zP(V~wT@FZv3tr73mXOf)fNCi{1ak2SaRmD`Zzvs8J zyU#TJ$%Nxahr@2tKi^kIceZ7RSNQDf=%1F9*;MPQmX8D=lj+E8e9MBKo2#o_ul=XE zY8}IaR`>YYbNf-(nc6pMmfebxoL;NzP>H{_9@{t4wY1)_yJo{mw=+?*?e3heH1^Nm z`u7YE946C7`lGG*_KCgcCv@`rxf$VP<@^_BVd~`9e!qaN19$uV`mgo_unfWy#GeoB zTEno7;J*e+LL8Sa%J#Azz#YE-4gT$7U{UHb|BQN`h_YMtCOa2W9W>6m^zawdquQb^ zmln^FcurlcP;`@7boj$+ve=%u8$mGB?B?-Ycxsw9y4Jx}X+o6zwptgi|h&AJoqa z0?h+0m?goin!8TX8Vg8x+vTf6hw%Td7lC*b;y}})d1Ay9Ydxe$Vo`t?034(wmy{2w z{utvBCmUD77Pq3E^TO%3{AF!a34i(CByUq(W0{?I{TeI zI@ej5+p1y1N?r?RNjTenKv98R=g6@B zu=w2H<+ytaXUOo3y1<{vI~?!fFWutOyL`XL5Anh@y$AHTmpv3r!nsdBXx!1n7!hOb W9xYoW*&^*L5mV{o-u7 z&iPK?yaX3kA>-ThbhClJnAsV)KKN2bKJ5IUs@hno+&Au;HN49beItXkZvD^NJKg4N z*M^MNYTTPvn^zbP#nn(G=!^M-O1xeTjZG?Q98(=7naLXqafISXfG4~KsrP?k{odj} zo8-o)+g`_Ob$;8YB#It_xRIc&tW0cXMyDClwCVb0upMLaPB)!q$kpZ>_9Vd<9a-{EMDEw> zI$8jac9y{_+T6AVu>C^p|C~jq8Q#{GI*kCo;c{24{5ugxF{gVgTD>lteOyufp>W)% zDpRqrU%l0U+6@7p@K)qytoOmU!HLTh<14)#hy#__(lvk|c6VDp<8yEioJpdJ?JEpd zsRR!B4>G^QmhFd4=g69=#7kAV`*%1@*VyG8S7}pPT=fS6H*;Jk;k-7yBMs6|v(JkJ zhb3_uAMNp3{$xg{|HcbFc3Gmru4wYka>!j{>Bh|+;xDphswmqg^z`N?|HA?RPWIa6 zB-)hF4)mUpU=7Fn8`D2$@g#xMNO|7q|GG4VToz6KSWJnGuiq?t{buV2z-K+pMakqN zbVsuqRsCU~8k$l>Dzj!>^7!NeGH+<@4<3-xPjLpm31v8iE4zB&ORO1mW)-owE*7&@ zg36#%E+w-Raqy}n61dOnkZnXX9y;y?sK67u{Za*>d$ zp1+k%qHN0#Ra3UK;X2FhY!2)iZjha{*`v)2`@pJ8chOoLqRor48dAfGD8|IYTTHrE zjP)ZWavgc>)pm`v8MA&MznK(!&sKY1nLQ>>;=xBWYd%NF;q>VQPRn}H8gO#73K|hd z%i$jUc(hw?CBKjczIhY4aX~o(HTYbh7_#x5K+xJr;-Yyh8i^=lYA6~J?{PpkI)X0f zz(BAPw&7f`U-ppSoOUtzz9c0K_`*b$JV4AbJnk*Tg^4WKt^GLRl%CT65A42&z#^H6F)QX>1VCVwDPhij+U0|xm!b4SZ&dba!l0j#L>^XU>Fxv7CDDW zD;YEusjLPVvDp!38C>d@s`a^W3TM9DE3Ob>svnnb*WoG_1Wo5vmN7(BRd7GRxLrKX zEW;Z0&&Dx zUA>7+sxK*XnHAXGk`Qw!ysyr-?9<%mxE*^_yK|U|N8vQ8xaBoiZ6{5R=Hi36C5kC@ zV)3{CT*v-CRyWJl= zHS+9iFDK7k?Mw3Bd*c2!AKq#=MSzNf>ScQZ3_DfC%@0su2hqVk#39Hkor^8e1M+bQqf4vK@7DPqodlRH(6^{ve(jf*xSX+Wbcl>Dw5Yj z@;b-~2A+3&yyZU}@eE5IOUc70d7vauisYA-{7jNxM)LJbzDCJ6Bl&Mh{#lZL$xx20 f;2Jd21+Fe4=$o^7M#HM~B$f}n0k4XDR}60fZ22x( diff --git a/osinaweb/osinacore/add/__pycache__/urls.cpython-312.pyc b/osinaweb/osinacore/add/__pycache__/urls.cpython-312.pyc index eb73bc8add8f48601b6c8d070153450c424864e8..1cd61b4cbdb8f9cf6a99febc154e6cb71bdbf14d 100644 GIT binary patch delta 198 zcmdljGE-FjG%qg~0}x!}&`f*6#=!6x#DM{6DC6^vjq1J3222d8j46hx%vpLc1qeFD zXbszHW(YrBJW8U{Skq+l9_G(X(pB7vDJi-onaSCyCHl8GfgA|iPg8R9CbkepZZ4ou zJVb0VD@Qe#InWeFATHj$xr<{dqufmvjtR delta 104 zcmbO!x?4p3G%qg~0}z~yP)l3E#=!6x#DM`RDC6^ljq1J39O+_F;+2M)Mw_27e`aF# q)0Ei!i7kY2au7!qmnl#sBM=v_+6TcEVj0T1eY)t%Y4enn!7x!w#Sct8jGl}i6d0JqJ~FW}x-x!dhBLv& F005AcK2iVx delta 117 zcmeyrmT}n{M!wU$yj%=Ga56$I?Vi&_J_*Ko6V=}_%1#zzG-Q;U?7>*aQYok@zxftp zNFb*slb@d^qo1bA=BL5ZjEXB6id=wNi`0O`FAkgB{FKt1RJ)=FKrSN?7w_Jz7P^Cx N`y&$%qbDO+DFCp!A8P;r diff --git a/osinaweb/osinacore/add/urls.py b/osinaweb/osinacore/add/urls.py index 7af80a63..1b3c12d1 100644 --- a/osinaweb/osinacore/add/urls.py +++ b/osinaweb/osinacore/add/urls.py @@ -27,7 +27,7 @@ urlpatterns = [ path('reference/', views.add_reference_modal, name='addreferencemodal'), path('tag/', views.add_tag_modal, name='addtagmodal'), path('reaction///', views.add_reaction, name='add_reaction'), - + path('add-ticket/', views.add_ticket, name='addticket'), ] \ No newline at end of file diff --git a/osinaweb/osinacore/add/views.py b/osinaweb/osinacore/add/views.py index 554278de..8b21c8a6 100644 --- a/osinaweb/osinacore/add/views.py +++ b/osinaweb/osinacore/add/views.py @@ -593,7 +593,17 @@ def add_reaction(request, status_id, emoji): # If the user hasn't reacted yet, create a new reaction new_reaction = Reaction.objects.create(status=status, emoji=emoji, user=user) return JsonResponse({'message': 'Reaction added successfully.'}) + + + +@staff_login_required +def add_ticket(request, *args, **kwargs): + + context = { + + } + return render(request, 'add_templates/add-ticket.html', context) diff --git a/osinaweb/osinacore/templates/add_templates/add-ticket.html b/osinaweb/osinacore/templates/add_templates/add-ticket.html new file mode 100644 index 00000000..2029ef5c --- /dev/null +++ b/osinaweb/osinacore/templates/add_templates/add-ticket.html @@ -0,0 +1,62 @@ +{% extends "add-edit-main.html" %} +{%load static%} +{% block content %} + +
+
+

+ Add Ticket +

+ +
+ {% csrf_token %} + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+ + Upload + Document(s) + +
+
+
+ +
+ +
+
+
+
+ + + + + + +{% endblock %} \ No newline at end of file diff --git a/osinaweb/osinacore/templates/customer_index.html b/osinaweb/osinacore/templates/customer_index.html index 92882248..7a4e8ac3 100644 --- a/osinaweb/osinacore/templates/customer_index.html +++ b/osinaweb/osinacore/templates/customer_index.html @@ -59,37 +59,32 @@

Tickets

-
+
- - @@ -98,40 +93,29 @@ - - @@ -197,6 +181,64 @@
- Client - - Last Update + Subject - Last Reply + Ticket ID - Subject + Regarding - Department + Date Created - Status + + Last Updated - Actions + Updated By
-

Emile Elliye

+ +

My Account Balance

+
-

20-1-2024

+

22666766

-

20-2-2024

+

Django

-

Add Customer Template

+

20-2-2024

-

Informatique

-
-

Closed

+

20-2-2024

-
- -
- -
-
-
- -
-
+

Ositcom Ltd

+ + + +
+

Other Ways to Get Help

+ +
+
+
+ + + +
+ +

Guides & Tutorials

+ +

View Osina guides and tutorials for all experience levels.

+
+ +
+
+ + + +
+ +

Community Q&A

+ +

Ask questions, find answers, and connect with other members of the Ositcom community.

+
+ + +
+
+ + + +
+ +

Ositcom Status Page

+ +

Get Updates on Ositcom incidents and maintenance.

+
+ +
+
+ + + + +
+ +

Customer Support

+ +

View or open Ositcom Support tickets.

+
+
+
diff --git a/osinaweb/osinacore/templates/customer_main.html b/osinaweb/osinacore/templates/customer_main.html index bd445bd5..9d50451a 100644 --- a/osinaweb/osinacore/templates/customer_main.html +++ b/osinaweb/osinacore/templates/customer_main.html @@ -50,12 +50,14 @@

Projects

-
- - - -

Tickets

-
+ +
+ + + +

Tickets

+
+
@@ -208,17 +210,18 @@
-
-
- - +
diff --git a/osinaweb/osinacore/templates/details_templates/project-details.html b/osinaweb/osinacore/templates/details_templates/project-details.html index 9f92763c..ddc8f97f 100644 --- a/osinaweb/osinacore/templates/details_templates/project-details.html +++ b/osinaweb/osinacore/templates/details_templates/project-details.html @@ -86,13 +86,13 @@

Client: {{project.customer.user.first_name}} + class="text-secondosiblue text-xl font-semibold">{{project.customer.user.first_name}} {{project.customer.user.last_name}}

Project Manager: {{project.manager.user.first_name}} + class="text-secondosiblue text-xl font-semibold">{{project.manager.user.first_name}} {{project.manager.last_name}}

@@ -100,7 +100,7 @@

Member(s): {% for member in project.members.all %} - + {{member.user.first_name}} {{member.user.last_name}} {% if not forloop.last %}, {% endif %} {% endfor %}

@@ -109,7 +109,7 @@

Type: {% for type in project.project_type.all %} - + {{type.name}} {% if not forloop.last %}, {% endif %} {% endfor %}

@@ -134,12 +134,12 @@

Start Date: {{project.start_date}}

+ class="text-secondosiblue text-xl font-semibold startDate">{{project.start_date}}

End Date: {{project.end_date}}

+ class="text-secondosiblue text-xl font-semibold endDate">{{project.end_date}}

@@ -147,7 +147,7 @@

Project Details:

-

+

{{project.details}}

@@ -215,7 +215,7 @@ {% for requirement in project.projectrequirement_set.all %} -

{{requirement.content}}

+

{{requirement.content}}

@@ -226,7 +226,7 @@ class="fas fa-angle-double-right"> {% endfor %} {%else%} -

None

+

None

{% endif %} @@ -255,7 +255,7 @@ {% endfor %} {% else %} - + No Requirements at the moment @@ -308,21 +308,21 @@ {% for credential in project.projectcredential_set.all %} -

{{credential.emailorusername}}

+

{{credential.emailorusername}}

- {{credential.password}} + {{credential.password}} - {{credential.usedfor}} + {{credential.usedfor}} {% endfor %} {% else %} - + No Available Credentials @@ -375,21 +375,21 @@ {% for file in project.projectfile_set.all %} -

{{file.name}}

+

{{file.name}}

- {{file.file}} + {{file.file}} - {{file.date}} + {{file.date}} {% endfor %} {% else %} - + No Available Files diff --git a/osinaweb/osinacore/templates/details_templates/ticket-details.html b/osinaweb/osinacore/templates/details_templates/ticket-details.html new file mode 100644 index 00000000..624dcf24 --- /dev/null +++ b/osinaweb/osinacore/templates/details_templates/ticket-details.html @@ -0,0 +1,179 @@ +{% extends "main.html" %} +{%load static%} +{% block content %} + +
+
+

Ticket: #2226663535

+ +
+
+

Closed by Linode at 20-4-24 16:30

+
+
+ + +
+ +
+
+
+ +
+
+ + +
+
+

Ositcom + Ltd + commented 2024-04-17 12:19

+ + + + + + + +
+ +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus non purus consectetur + magna sodales fringilla. Suspendisse non imperdiet metus. Curabitur feugiat tristique + varius. Curabitur fermentum sapien nisi, sed suscipit odio luctus sed. Mauris pretium risus + a tincidunt facilisis. Aliquam quis odio in mi aliquet scelerisque et ut urna. Ut ultrices + turpis odio, id hendrerit lectus dignissim in. Donec at tortor quis dui auctor sodales porta + et purus. Aliquam at nunc sit amet tortor lacinia porttitor. Proin auctor, eros ac + sollicitudin iaculis, felis quam vulputate ante, eu varius dolor arcu non enim. Vestibulum + ornare dapibus risus, id eleifend ipsum. Aliquam metus urna, bibendum quis cursus vitae, + placerat sit amet felis. Aliquam tellus ex, pretium id gravida id, vulputate et velit. + Phasellus leo felis, lobortis ut dolor eget, viverra aliquet ligula. Aliquam molestie ac + eros et fermentum. +

+ +
+
+
+ + + +
+
+
+ +
+
+ +
+
+

Scott + Customer Support commented 2024-04-17 12:19

+ + + + + + + +
+ +
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus non purus consectetur + magna sodales fringilla. Suspendisse non imperdiet metus. Curabitur feugiat tristique + varius. Curabitur fermentum sapien nisi, sed suscipit odio luctus sed. Mauris pretium risus + a tincidunt facilisis. Aliquam quis odio in mi aliquet scelerisque et ut urna. Ut ultrices + turpis odio, id hendrerit lectus dignissim in. Donec at tortor quis dui auctor sodales porta + et purus. +

+ +
+ How + did I do? + +
+
+ +
+ +
+ +
+ +
+ +
+
+
+
+
+
+ + + + +
+
+
+ +
+
+ + +
+ + + +
+
+ + + + + +
+ + + + +
+
+
+
+
+ + + + + + +{% endblock %} \ No newline at end of file diff --git a/osinaweb/osinacore/templates/listing_pages/tickets.html b/osinaweb/osinacore/templates/listing_pages/tickets.html new file mode 100644 index 00000000..cc2d83d0 --- /dev/null +++ b/osinaweb/osinacore/templates/listing_pages/tickets.html @@ -0,0 +1,134 @@ +{% extends "main.html" %} +{%load static%} +{% block content %} + + +
+
+

Tags

+ + +
+
+
+ + +
+
+ +
+ + +
+
+
+

Open Ticktes

+

Closed Ticktes

+
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Subject + + Ticket ID + + Regarding + + Date Created + + Last Updated + + Updated By + + Actions +
+

My + Account Balance

+
+

22666766

+
+

Django

+
+

20-2-2024

+
+

20-2-2024

+
+

Ositcom Ltd

+
+ +
+
+
+
+
+ + +{% endblock %} \ No newline at end of file diff --git a/osinaweb/osinacore/templates/main.html b/osinaweb/osinacore/templates/main.html index 48ea1443..c7a00beb 100644 --- a/osinaweb/osinacore/templates/main.html +++ b/osinaweb/osinacore/templates/main.html @@ -163,7 +163,7 @@
- +

Tickets

@@ -452,7 +452,7 @@
- +

My Tickets

@@ -637,35 +637,51 @@
-
-
-
-
- user-image -
-
-
-

{{request.user.first_name}} {{request.user.last_name}}

- - +
+ +
+
+

1

+
+
+ + +
- -
diff --git a/osinaweb/osinacore/urls.py b/osinaweb/osinacore/urls.py index 845fa47b..114350c5 100644 --- a/osinaweb/osinacore/urls.py +++ b/osinaweb/osinacore/urls.py @@ -38,6 +38,7 @@ urlpatterns = [ #Listing Templates path('customers/', views.customers, name='customers'), + path('tickets/', views.tickets, name='tickets'), path('businesses/', views.businesses, name='businesses'), path('staffs/', views.staffs, name='users'), path('my-projects/', views.my_projects, name='my-projects'), @@ -53,6 +54,7 @@ urlpatterns = [ #Details Templates path('customers//', views.customerdetails, name='customerdetails'), + path('ticket-details/', views.ticket_details, name='ticketdetails'), path('businesses//', views.businessdetails, name='businessdetails'), path('staffs//', views.staffdetails, name='userdetails'), path('projectdetails//', views.projectdetails, name='detailed-project'), diff --git a/osinaweb/osinacore/views.py b/osinaweb/osinacore/views.py index d8750480..0bce1001 100644 --- a/osinaweb/osinacore/views.py +++ b/osinaweb/osinacore/views.py @@ -255,6 +255,16 @@ def customers(request, *args, **kwargs): return render(request, 'listing_pages/customers.html', context) +@staff_login_required +def tickets(request, *args, **kwargs): + + context = { + + } + + return render(request, 'listing_pages/tickets.html', context) + + @staff_login_required def businesses(request): businesses = Business.objects.all().order_by('-business_id') @@ -439,6 +449,17 @@ def customerdetails(request, customer_id): } return render(request, 'details_templates/customer-details.html', context) + +@staff_login_required +def ticket_details(request): + + context = { + + } + + return render(request, 'details_templates/ticket-details.html', context) + + @staff_login_required def businessdetails(request, business_id): business = get_object_or_404(Business, business_id=business_id) diff --git a/osinaweb/osinaweb/__pycache__/settings.cpython-312.pyc b/osinaweb/osinaweb/__pycache__/settings.cpython-312.pyc index 56e0940ac8d40b4b5e365bfbe9adebb175a9d419..a7f0ce1038d95c588a8633731ad5e65e58391a18 100644 GIT binary patch delta 71 zcmdlXeP5dIG%qg~0}upF(MS^!*vQw)#>hT-3Y#jYYI13DNq%l>(dOA~T5MvR%6uP~ axkb1>@(Z)FeP9;lWoqF3pf~w8&s_kYWfRH( delta 67 zcmcaFy+fMsG%qg~0}z~yP)obbzmcz%jhU@VY4Srh$;s>4xHdmv<6#ryQ0Du<%q7D0 Wkza_F?E|w2FH-~O2c5}GymtYEC=#Lo diff --git a/osinaweb/static/dist/output.css b/osinaweb/static/dist/output.css index 35f92c80..81bf2392 100644 --- a/osinaweb/static/dist/output.css +++ b/osinaweb/static/dist/output.css @@ -702,6 +702,10 @@ video { right: -2.5rem; } +.-right-2 { + right: -0.5rem; +} + .-right-40 { right: -10rem; } @@ -722,6 +726,10 @@ video { top: -3rem; } +.-top-2 { + top: -0.5rem; +} + .-top-\[54px\] { top: -54px; } @@ -794,6 +802,10 @@ video { right: 1.25rem; } +.right-\[-5px\] { + right: -5px; +} + .top-0 { top: 0px; } @@ -822,6 +834,10 @@ video { top: 1.25rem; } +.top-\[-5px\] { + top: -5px; +} + .top-\[14px\] { top: 14px; } @@ -1076,6 +1092,14 @@ video { height: 150px; } +.h-\[16px\] { + height: 16px; +} + +.h-\[20px\] { + height: 20px; +} + .h-\[210px\] { height: 210px; } @@ -1174,6 +1198,10 @@ video { max-height: 50px; } +.min-h-\[200px\] { + min-height: 200px; +} + .w-1 { width: 0.25rem; } @@ -1182,6 +1210,10 @@ video { width: 2.5rem; } +.w-14 { + width: 3.5rem; +} + .w-4 { width: 1rem; } @@ -1226,6 +1258,10 @@ video { width: 150px; } +.w-\[16px\] { + width: 16px; +} + .w-\[180px\] { width: 180px; } @@ -1330,6 +1366,10 @@ video { width: 85%; } +.w-\[90\%\] { + width: 90%; +} + .w-\[95\%\] { width: 95%; } @@ -1439,6 +1479,16 @@ video { animation: bounceX 4s infinite; } +@keyframes spin { + to { + transform: rotate(360deg); + } +} + +.animate-spin { + animation: spin 1s linear infinite; +} + .cursor-default { cursor: default; } @@ -1695,6 +1745,10 @@ video { border-bottom-left-radius: 0.375rem; } +.rounded-bl-none { + border-bottom-left-radius: 0px; +} + .rounded-bl-xl { border-bottom-left-radius: 0.75rem; } @@ -1711,6 +1765,10 @@ video { border-top-left-radius: 0.375rem; } +.rounded-tl-none { + border-top-left-radius: 0px; +} + .rounded-tr-md { border-top-right-radius: 0.375rem; } @@ -2301,6 +2359,14 @@ video { --tw-gradient-to: #fff var(--tw-gradient-to-position); } +.fill-osiblue { + fill: #20336b; +} + +.fill-secondosiblue { + fill: #374a7a; +} + .stroke-black { stroke: #000; } @@ -2483,6 +2549,10 @@ video { padding-top: 0.75rem; } +.pt-5 { + padding-top: 1.25rem; +} + .pt-9 { padding-top: 2.25rem; } @@ -2606,6 +2676,10 @@ video { text-transform: uppercase; } +.leading-7 { + line-height: 1.75rem; +} + .leading-8 { line-height: 2rem; } @@ -3156,6 +3230,11 @@ video { color: rgb(146 156 183 / var(--tw-text-opacity)); } +.hover\:text-gray-200:hover { + --tw-text-opacity: 1; + color: rgb(229 231 235 / var(--tw-text-opacity)); +} + .hover\:text-gray-500:hover { --tw-text-opacity: 1; color: rgb(107 114 128 / var(--tw-text-opacity)); @@ -3206,7 +3285,18 @@ video { color: rgb(255 255 255 / var(--tw-text-opacity)); } +@media (prefers-color-scheme: dark) { + .dark\:text-gray-600 { + --tw-text-opacity: 1; + color: rgb(75 85 99 / var(--tw-text-opacity)); + } +} + @media (min-width: 650px) { + .s\:mt-10 { + margin-top: 2.5rem; + } + .s\:mt-5 { margin-top: 1.25rem; } @@ -3235,6 +3325,10 @@ video { height: 55px; } + .s\:h-\[60px\] { + height: 60px; + } + .s\:h-\[90px\] { height: 90px; } @@ -3267,10 +3361,22 @@ video { width: 500px; } + .s\:w-\[50px\] { + width: 50px; + } + .s\:w-\[550px\] { width: 550px; } + .s\:w-\[60px\] { + width: 60px; + } + + .s\:w-\[85\%\] { + width: 85%; + } + .s\:w-\[90px\] { width: 90px; } @@ -3585,6 +3691,10 @@ video { height: 500px; } + .xxlg1\:h-full { + height: 100%; + } + .xxlg1\:w-\[74\.5\%\] { width: 74.5%; } @@ -3604,6 +3714,24 @@ video { .xxlg1\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } + + .xxlg1\:rounded-l-md { + border-top-left-radius: 0.375rem; + border-bottom-left-radius: 0.375rem; + } + + .xxlg1\:rounded-r-md { + border-top-right-radius: 0.375rem; + border-bottom-right-radius: 0.375rem; + } + + .xxlg1\:rounded-bl-none { + border-bottom-left-radius: 0px; + } + + .xxlg1\:rounded-tr-none { + border-top-right-radius: 0px; + } } @media (min-width: 1390px) { @@ -3640,6 +3768,10 @@ video { width: 550px; } + .xll\:w-\[75\%\] { + width: 75%; + } + .xll\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } diff --git a/osinaweb/static/images/.DS_Store b/osinaweb/static/images/.DS_Store index fbab9770edbebe82034c0d1e4dbff0468574077d..01ade923bf546f7c2ca7749cbd309814c9351bec 100644 GIT binary patch delta 744 zcmZp1XmOa}&nUGqU^hRb)MOrkE~ez_$uk6G*p^Iwt>W=|@-6{681tTh0^@|u{{T8hZ9L7CAavP_H)ldDAJCf^ge zDr#hDqN8AJX;!PFP;F>nXs)ARYG^R|y`b^r-=dmK(;rQ~Eg~m^Y@&tq8=zB;IzlB< z;8r0^OkN?z$M|6KEfM+2*Tnei`58(X3K(*L&P!xSVMqnyc%XB0fxL7euQ(^&FgQ6s zw*cs1AW*#vBnaq0c2J}W#6h@q`NAy9%||$wur`>kf(&Hm8B8pkvzcAu8_VP@!Gh7? L!yW24gKs7PSryJM delta 323 zcmZp1XmOa}&nUhzU^hRb_+%b|E+z(s$uk6G*rZ;{r5(C9d6$43jCoH$fstYJe*p<* zB?b^+WyoYmX2@sAV<^tecX3I|$xi}`a=7hmI&tI5WJ?hlHYhV%L>6Rfm57{^Fi>?W zLkU=4E<-MmT?AyOGUNcwNe5y*AeqUK=9!b93^h-Hfq}7`fq`A`KNv7fE)9lpfw7@L;llm=1!ez+aGI7@VA+TL5-5&>4kddK*iW7&o&^ Qd}EosU1S?&2FWu505+jwq5uE@ diff --git a/osinaweb/static/images/icons/happy-icon.png b/osinaweb/static/images/icons/happy-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1f02dceecb40b6c5bcd6ffefa04caad7c15a60e7 GIT binary patch literal 944 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%3?x6Bmj(hUmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fHRz`$4%;1l91Jkv#Pp_}|d zH=C`Vwp%?F7r8lZ^H5&o>blLtb-RbkB3F;?9-iAh)E2q=>~Qzp;jXdRHDHH(;7)hV z#jc?{-NJUchwXOPUhEpV(=BqBThuQ1@U5=iv#o~K-BmSAIG;^AcT=`%~-=a#tJ)nJKB>TcK6J+5hcUA$kBSaQ~e>whC_}v%bl7IJG2~juwCxddf1`uh=bh@|%}@m#vdWsAVXx>`faU!Ug9fA^X#!jbtw zL3rQ}nFnhZer(W>a2NdGxMO4ICPkKs72K{mOr0gtu3C(eZHb>`Ex+~aO1{yW@?)M? zulDqUty%oxT4j!lRXOI~OE3}CnS61lg|rP0pM8XMqkdTvbb4BT7;dOH!?pi&B9UgOP!eiLQa6uAxDQp@o$Z r5E*J47+4t?WX!4LL(!0%pOTqYiCcr@!GoKC8W=oX{an^LB{Ts5eiLas literal 0 HcmV?d00001 diff --git a/osinaweb/static/images/icons/neutral-icon.png b/osinaweb/static/images/icons/neutral-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bedd7864963f182425d802531d3f8c28e4692dfc GIT binary patch literal 892 zcmZ`$ZA_DA6n(%+Erd#~0}9BX1*y2=+d>9u(WTI0>nNkFCd?6RDKH@cH&)!*C0o^o z#Lchh=Ey>fIv1B1bW$Cex=q;_`=B5Nq+}bkm3{*)9|`7BpS#ze`>~sI&&jzr=g+;z zs;hP<#;3(2gc4Osc@3@H=e=Pa%`3&78d_d>Tc(yFbmLUQQ~i3{XBm_=YJ|*N5wchj z!t}@zK&X>KD5OJ3(v48cJ3Y5Gr3l5;Raa^ikN;rc(KtNHAT#Un116be!YmVyB@h=2 zTpPi~!efcV%>nmjJhqW|xZvSp2b*{@;ZY`baL6M*%<+L{Uk-Tr*pW=;1VFWJhG^P#Tq;%AQ3G@_Ts6060L>ko7lOXEY-nM9d^Dtg%VQu2T(cUV38K-^V>udF4X&WkKlNr9Iv|M>~SG+8gNe&@)-@%z^Lr^)`Q1 zFFkZCc46daP5;^l55kV=mhz9IR_?04#Qf{=F6#VU-Bv^QNWI9mZ8+s%_h81ktM3oD zGQ)O8v#o1kkz@O7fF$%o+^q5R-CxdB_R_b@H7aV2je28~#L&@13ldY}A|WLbiYTq9 rL?Wgk+D=gtiaO9^V*Mx3cCfLf+4TPb?*03HbO5OoRq|_Px+DJraq_DO literal 0 HcmV?d00001 diff --git a/osinaweb/static/images/icons/unhappy-icon.png b/osinaweb/static/images/icons/unhappy-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..192a8992546c06f834650b0110c90f9a7a8ae693 GIT binary patch literal 920 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%3?x6Bmj(hUmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fHRz`&Rq;1lAyRZx7th}3my z#T(L!2SlZB$|~KIQ#vRneM>?4pt#I!C6$8`GIvx}4@t`0RaZMCC3{a({hpTkeJ%9| zTIz?SW$)>z-`CN&sja?CRq>RD%3&GV`+AxW^fl|HB_!F|?f7_)X{tQb*SxQ11$RRq=(h;Y%08<7$d8T@7Ek z868(wdgWpK+QaySy3%V;lQ&)_Cp47bdYiuWF*~8D{La^WrO43kd+V~l~l#M9T6{RJbJkc{XDF%x5;w1KCKV~EE2+~d!q9SbFneQfub z)MN4O)W+`}$!=~bu4!h169xbNFWhsX`~LHt^Iq@U#~@)r(Q;uTZNW^D$8= z<{8&Bd=l<1*w|3peTB+c;9Ie1PbNwAHRRblGMr(8?D*6y^w zxFXc6HAZi8li2l_yl#_kHa*_)?t|FolNlFY7wAUhmbG7g`mN$^U;E*kd*!yDe!1cH zng^eST@)m^1Ri>PF_hvIZVWJR5U7(s^2mRQi_z3NzvYuUgO4RoIJr;e>8IADms>-0 zo)o8~8waf0BO99i^;n|R*Qlv)yd-C>{l2(t`E5JD?U&VdUu}u2caY-ye}2LJ=8Hd= zQ*D|~ei2T!YP|V}JJqiF=qKsaoefv3nm5HAEc@KN>E@xl|J|GJ|7EbP0l+XkKOYp31qoSA)Q1vw4DG(45kOV+b z*-iJ-+gV#>_4$dbr9)g$Qc+$IsaC#DYsBUPfuXJr9TgZCRtv3z8yOZ9JYMvy|FZhN z`*>PT4Bsp&9=pfmWg^x!r)$|~iEn1r^Aa6u$Cm@-zxK@tGV062$Hx-`^k3Tn1kr=w z0pt09;{j)eeL14S5_T2wklc> zpFdx!VVeSsEZAsFB{Q{emjuG6Hm%HnK1A;?)hN$Mm1k+l2l(F=6s( zBF0SE{QIv~J!%>?AI$ajIx^%WxFQOPVSX6Dko={|&r;!v6NhuDPnAQ`C4ZG!u(XGW z|4IXr50ot_z={^FpECz&&?L_lF5^Z6iDG2^YH6(dyS~QN>EzT%_4Reu>p6)0!ixMt z878htfo=?Y&wGCl+v(`&xH S%n+~*tJtfCmq}~VCcYmh$1Ka;wgSelK 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 O0000iPLu0Ra5) z2j2q#_=8Xe0FMyL0N@cq82~&&CRzi@s8- zrd+&8; z@jm)9KUn;~+GTlhW!W~f)qFB5@pmueoDJdkcF5D#@6Y);*#;+}EMMwSDRmuO3zYXp z{_>;xbX%%!1_AV5?z6m5o(8jX(t*;)`Z}^hQ*uoDLN?6u zLI-o1yQiLS`DI;GmOx%48pzx94`G(&h0)bkdMf`!6v+ForCmZOU){_15w$EY^xf>& zNCSDBKBqord9euO_qU_UgT9!0cvb0kcqsb=kPF(#>mzcbE9Hz3L>Hr70Pl8lzI<&-)pI>mvNWS1?`ReUP3T3z2gaiw0~-WywR2OEf}^v<+9de46&U#0i~Z+lBOmKdNAsI4;w17$&Dzadv1NBRr-{somk8OI&!Q2M4iA~$@yUd*PP0#R-Da3Ht1aseJ96BJ3W?0&UvhB(B)^z%3 z+p@f+zF``2s+bzqBSt7N{RD=1G2cO}XL11I8YY*jAZ@*DZ$hFPng1O{uxK_yX ziBLj$-5D>9LYYu$PuUpwgSYJS%v%Gi+Z2jaH5~hz8-$w7|o$BP8 zROq{^p6ftXgmNolm~MQ|wFGqO&15|@kQ!kX1ao}W62@6)yd2n$Lq3O4ZeB{uKVF+I zTj&FsKHVpnp_KZjlo~6g-gU;y%R0k&gPL;lbVz+j=y7$B5e zB8$Yoi)7q#DWPwr{&XL-ScKO96Tw`et=Jjh10?;V`zAqakdyRBfZT7J4Gm~jZB zFIpxix$ZSjWuiq-UYA?{`YOpyV)sU6TvT|gdl{8Mof$6(WsgWe&q5hCXEAK57t4^q z)qJubm{AAH7idyc%UbGSrj!BK2xXuGf*Gz+z5ptUw3PA9gU@hGuVOoUjZg+0a2?ET zuO_&fPrRM%ljX%M=7-FbF91gzmNG`t8$^N#Wxydv!K{1QpZQ+WL?{D}Nig%!4pyis zH$ZBQCN;Vz#;t};&(_THLeJE^PrWT*hEQ%sU-qyo>zmB-L%{TfRUX zFnSZ|9%)HmoTxFQ49XYoaVK$H@^=jMm~oCxD5tm^vx(nAc{QKVX8(`hO&-CFQ*1(+ z6YI2N0i5~+z|@a_hXiwKyPBf}<4~4`*g3(DIMFLky|si*q9Ms1xQSMv!EK#w4pvCS%!rGzo0C3lQV zJkT2?crjb^TRD$l#)kEfIG!Ny__CT$&IXV47G12j8w!1#eR|2|5X?|j$0OQ;l=>8LIIrdSt{4VqhG0hJRpK^_dS`i|gXTtdOwg}xgsuBSh6L&| z#mqKvr2KQIUs+zDOfs~W#->)>TQuCXG?d=E$VMi*t5Lo z1-`ZX&pLa15@0(amgU7|Alm^geWdQI9p$q^XA(R2Y7fPxB0LU$=$tg$K)Bpeg M07*qoM6N<$f?a0TumAu6 diff --git a/osinaweb/static/images/ositcom_logos/osinawhite.png b/osinaweb/static/images/ositcom_logos/osinawhite.png index aa2f5a9c194b12c3d6c68cc425273b2919de08bb..a9ed6e46b636388f3b1c11f95af25b6c8471f569 100644 GIT binary patch literal 1941 zcmV;G2Wt3M4yJ--4_-T*097ZD-d-@U!P-RCo-VSqcaoUMn|-fwpw z-QC?GA|mbjrt1cXh{Ql)D?yUp>^1#m>YUfv7Lb=$Vsp01r^u18wp*tWv<74WvkbDshS zHO_0>4)9mSb3OylE1t833H4W)unooO{Bc?4;D3Jo;TRaT+9F_MG9BOlyv#7d2op4+ z_F{`X1-<~k0B04>J0r|LPP;66>V12=zd!%zW8k*!C2&H&d$Q~7&mZsRkDG$yN0`^O zQ$;t(2AH>wu?FpZe^7o5@{lltHnWNO13c`u8MW+VLMJ9Czz4z%+WTGse^YOWsdYtR zdq`Msftxxjam)boHam2im?4rriYaj4vgpyr;4x-M#=Ac(d0{)igsm)WW8OmN*(08J z0zc8u-YvutxI38MUTn57J$bL>h3%MlLZgZ@VH=aZt{c!m=z$w!&}Me#4{sEOtvoc& z`QCv3m3B2X?z#aDg&Me7X;;jumeaK=FKk;cjp(UuOsK9B<27@BSGNV(-RzKrRN7Tn zm)Bsn`~`(=J?pN`&}AdUsuRKrTrcm)N8~|SWL}+Zo$=aps@0-)Z3Mix_1oda$uJ!hPwg9}=K!qKAYh=D@8pE6tTUv+TN*EPp|( ze$}&X%vQn>+K_^{HQSg>ljSek?%7HhE-D`HVx=_KV(#HeGiR&5sIZk)#$7kS6AE0Z zW97_B4I_x;(~yExalSE`rmMc8uoWqGf@cNt;-wim)kO+hiAB+}dqqxA?W*KETGy)u zg{{Qnl4d(KY+*`|6u7d=`Nm|Ly9%DdR$}s+W;eSOxU$MMC00mO*h*{;P~eI^*T8sV zGA%5BRM<+46u4qT>7WJG*>-IYziV2PdmmkG^X^Kv4_V!^t}Jk$Q*xt03Cbs6uWZnQ z!nSMM_`U5=wtV96^N-h<*)eB?5xfdqscMF)I;gxQl!g)PO1f@9%YMYHl9p1uV?|$R zNI}Xv2S#;*7Syw~E$zAij%)&dQhj@OU)k#6eoymyUh&Hev%`394Q&|;Tf0)=D}E0R z*mR8P&8OWq!wQ>23JTnQyTII|NH!+ZkG7svVQXIk>~`Ga9j6Zg7phBXJ6;efhB z0#E37;AZXjkg~p4`e1hjn-sS89TQL3LO5f$nddYcgY9$RZV|yIk!^?S zI=Vq--xa1TBo>>56}UGvuP(>}*Jf`_dQM^6jy+77R4hW<98`fT)+ub;af_L(5K9kt z+;sz5puiQY6t?ZT#k{?KhN;hcu#dcWPk}4e=muH)5*CvkMwso+NB2JWar4LlW&%T5 zPm2%ftt@b3y=f+vC~V!jnm?@7?zLnLeCfIo9S>R_M@;BsV>yO z&3-Q*?cncJ;!-q>AW}~jOd3*-j-=x8 zhnRX>34@I>TnU`Q){d$(sC=9?Ce0{tCD*!PgrUnuhy=ptyZO?wbzz&jY=lTaF7d0J zOFUtF7-2}imfNel4(sxGYt?VY^ElTf*EfeV$S+Y~R~! ziWe@rZh(grxbi=FrC%}aG*H!Y*e-uA0w!=Zq#!_k*ru);(L>9_2(g!OC0#ebV+vdW z^20W9)rg*1^_Dqt-3ZUb{>P?>0#_8aHLP0rJ0ad}Z)W(v7`hJ>xRJ{X+beYAW0iHm z5^LbZ`g_-*z>QeZ+6YH38qp&Y){kW$5nu0ihW?LKbqc)hx)I`DQP?J!fDu!jag_7@ z6tm_*Ob*eF)H>d=C=HWHlv(xb5O~veLp=8hGg+gk#On;MIB zRLU-~cm#Zh>E(WHtu_An1Uv&?P`;M-BW5PuZ-iH?e2w|NhG?wT1_f?Js>~ouF}>VF z%yiBX=0!ImoK>t6OsHPbtQzAMIG#U-EUwppeoci<=Z|a)_O#;pb#Ac6Rz{ZHFx$^P zN_y|n-Q8W+Z4eO&o_1;w5ph6aDs`B-7hiRIRg00000NkvXXu0mjfT)VO2 literal 1845 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 z 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 literal 0 HcmV?d00001 diff --git a/osinaweb/static/images/uploaded_images/unhappy-icon.png b/osinaweb/static/images/uploaded_images/unhappy-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..192a8992546c06f834650b0110c90f9a7a8ae693 GIT binary patch literal 920 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%3?x6Bmj(hUmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fHRz`&Rq;1lAyRZx7th}3my z#T(L!2SlZB$|~KIQ#vRneM>?4pt#I!C6$8`GIvx}4@t`0RaZMCC3{a({hpTkeJ%9| zTIz?SW$)>z-`CN&sja?CRq>RD%3&GV`+AxW^fl|HB_!F|?f7_)X{tQb*SxQ11$RRq=(h;Y%08<7$d8T@7Ek z868(wdgWpK+QaySy3%V;lQ&)_Cp47bdYiuWF*~8D{La^WrO43kd+V~l~l#M9T6{RJbJkc{XDF%x5;w1KCKV~EE2+~d!q9SbFneQfub z)MN4O)W+`}$!=~bu4!h169xbNFWhsX`~LHt^Iq@U#~@)r(Q;uTZNW^D$8= z<{8&Bd=l<1*w|3peTB+c;9Ie1PbNwAHRRblGMr(8?D*6y^w zxFXc6HAZi8li2l_yl#_kHa*_)?t|FolNlFY7wAUhmbG7g`mN$^U;E*kd*!yDe!1cH zng^eST@)m^1Ri>PF_hvIZVWJR5U7(s^2mRQi_z3NzvYuUgO4RoIJr;e>8IADms>-0 zo)o8~8waf0BO99i^;n|R*Qlv)yd-C>{l2(t`E5JD?U&VdUu}u2caY-ye}2LJ=8Hd= zQ*D|~ei2T!YP|V}JJqiF=qKsaoefv3nm5HAEc@KN>E@xl|J|GJ|7EbP0l+XkKO { + if (!response.ok) { + throw new Error('Network response was not ok'); + } + return response.json(); + }) + .then(data => { + console.log("Session ID: " + data.session_id); + // Update Checkout session with the fetched session ID and show the embedded page + Checkout.configure({ + session: { + id: data.session_id, + } + }); + $('#paymentContent').empty(); + Checkout.showEmbeddedPage('#paymentContent'); + sessionStorage.clear(); + + paymentLoader.classList.add('hidden'); + }) + .catch(error => { + console.error('There was a problem with the fetch operation:', error); + + paymentLoader.classList.add('hidden'); + }); +} + +function getCookie(name) { + let cookieValue = null; + if (document.cookie && document.cookie !== '') { + const cookies = document.cookie.split(';'); + for (let i = 0; i < cookies.length; i++) { + const cookie = cookies[i].trim(); + if (cookie.substring(0, name.length + 1) === (name + '=')) { + cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); + break; + } + } + } + return cookieValue; +} + +initiateInvoiceCheckout(invoice_id); diff --git a/osinaweb/static/js/customer_dashboard/payment-pricing.js b/osinaweb/static/js/customer_dashboard/payment-pricing.js new file mode 100644 index 00000000..1f60b40a --- /dev/null +++ b/osinaweb/static/js/customer_dashboard/payment-pricing.js @@ -0,0 +1,13 @@ +// TO CHANGE THE PRICE BASED ON THE CHOSEN CYCLE FROM THE SELECT TAG +function updateCyclePrice() { + var selectedOption = document.getElementById('cycle').options[document.getElementById('cycle').selectedIndex]; + var cyclePrice = parseFloat(selectedOption.getAttribute('data-cycle-price')); + document.getElementById('cyclePrice').textContent = cyclePrice.toFixed(2); +} + +document.getElementById('cycle').addEventListener('change', updateCyclePrice); + +// Trigger the change event when the page loads to display the cycle price of the selected option by default +window.addEventListener('load', function () { + updateCyclePrice(); +}); \ No newline at end of file diff --git a/osinaweb/static/js/customer_dashboard/payment.js b/osinaweb/static/js/customer_dashboard/payment.js index 6b5e47b4..b59adbfb 100644 --- a/osinaweb/static/js/customer_dashboard/payment.js +++ b/osinaweb/static/js/customer_dashboard/payment.js @@ -1,4 +1,5 @@ const paymentContent = document.getElementById('paymentContent'); +const paymentLoader = document.getElementById('paymentLoader'); const item_id = document.getElementById('itemId').textContent; function initiateCheckout(item_id, selectedCycleId) { @@ -8,13 +9,15 @@ function initiateCheckout(item_id, selectedCycleId) { console.log('CSRF Token:', csrftoken); + paymentLoader.classList.remove('hidden'); + fetch('/initiate_checkout/', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRFToken': csrftoken, }, - body: JSON.stringify({ item_id: item_id, cycle_id: selectedCycleId }), // Include selected cycle ID in the request body + body: JSON.stringify({ item_id: item_id, cycle_id: selectedCycleId }), }) .then(response => { if (!response.ok) { @@ -23,7 +26,6 @@ function initiateCheckout(item_id, selectedCycleId) { return response.json(); }) .then(data => { - // Handle success response console.log("Session ID: " + data.session_id); // Update Checkout session with the fetched session ID and show the embedded page Checkout.configure({ @@ -34,9 +36,13 @@ function initiateCheckout(item_id, selectedCycleId) { $('#paymentContent').empty(); Checkout.showEmbeddedPage('#paymentContent'); sessionStorage.clear(); + + paymentLoader.classList.add('hidden'); }) .catch(error => { console.error('There was a problem with the fetch operation:', error); + + paymentLoader.classList.add('hidden'); }); } diff --git a/osinaweb/static/js/customer_dashboard/ticket-details.js b/osinaweb/static/js/customer_dashboard/ticket-details.js new file mode 100644 index 00000000..adaf9764 --- /dev/null +++ b/osinaweb/static/js/customer_dashboard/ticket-details.js @@ -0,0 +1,28 @@ +document.addEventListener("DOMContentLoaded", function () { + const toggleButtons = document.querySelectorAll('.toggleReply'); + + toggleButtons.forEach(button => { + button.addEventListener('click', function () { + const replyContainer = this.closest('.replyContainer'); + const reply = replyContainer.querySelector('.reply'); + const arrowUp = replyContainer.querySelector('.arrowUp'); + const arrowDown = replyContainer.querySelector('.arrowDown'); + + reply.classList.toggle('hidden'); + + if (reply.classList.contains('hidden')) { + arrowUp.classList.add('hidden'); + arrowDown.classList.remove('hidden'); + } else { + arrowUp.classList.remove('hidden'); + arrowDown.classList.add('hidden'); + } + + if (!reply.classList.contains('hidden')) { + replyContainer.classList.add('shadow-md'); + } else { + replyContainer.classList.remove('shadow-md'); + } + }); + }); +});