Linux websever 5.15.0-153-generic #163-Ubuntu SMP Thu Aug 7 16:37:18 UTC 2025 x86_64
Apache/2.4.52 (Ubuntu)
: 192.168.3.70 | : 192.168.1.99
Cant Read [ /etc/named.conf ]
8.1.2-1ubuntu2.23
urlab
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
var /
www /
html /
coursewise /
assets /
[ HOME SHELL ]
Name
Size
Permission
Action
AcademicTools-tj30wEj0.js
7.55
KB
-rwxr-xr-x
AcademicTools-tj30wEj0.js.map
14.63
KB
-rwxr-xr-x
AddCourse-BTNu-pnI.js
10.08
KB
-rwxr-xr-x
AddCourse-BTNu-pnI.js.map
35.84
KB
-rwxr-xr-x
AdminFeedbackManagement-DsTd1C...
13.52
KB
-rwxr-xr-x
AdminFeedbackManagement-DsTd1C...
45.25
KB
-rwxr-xr-x
CourseReviews-CLlzbLuT.js
27.45
KB
-rwxr-xr-x
CourseReviews-CLlzbLuT.js.map
112.09
KB
-rwxr-xr-x
Dewan-B5d13VSK.png
819.07
KB
-rwxr-xr-x
Dewan-Bniqtmij.js
102
B
-rwxr-xr-x
Dewan-Bniqtmij.js.map
197
B
-rwxr-xr-x
EditCourse-DeWQqcol.js
9.65
KB
-rwxr-xr-x
EditCourse-DeWQqcol.js.map
34.87
KB
-rwxr-xr-x
MyCourses-BA9wctPB.js
8.48
KB
-rwxr-xr-x
MyCourses-BA9wctPB.js.map
31.95
KB
-rwxr-xr-x
Rajput-BnxWGXCy.js
104
B
-rwxr-xr-x
Rajput-BnxWGXCy.js.map
200
B
-rwxr-xr-x
Rajput-CE3gMniE.png
908.11
KB
-rwxr-xr-x
Settings-BGf6-NRc.js
2.09
KB
-rwxr-xr-x
Settings-BGf6-NRc.js.map
5.35
KB
-rwxr-xr-x
TimetableClashChecker-gskbNvYE...
32.74
KB
-rwxr-xr-x
TimetableClashChecker-gskbNvYE...
137.78
KB
-rwxr-xr-x
UserManagement-pl4YxOXe.js
2.17
KB
-rwxr-xr-x
UserManagement-pl4YxOXe.js.map
5.49
KB
-rwxr-xr-x
academic-components-DF0R8Z3x.j...
670.84
KB
-rwxr-xr-x
academic-components-DF0R8Z3x.j...
1.87
MB
-rwxr-xr-x
admin-components-DUStTukf.js
1.36
MB
-rwxr-xr-x
admin-components-DUStTukf.js.m...
5.5
MB
-rwxr-xr-x
apple-touch-icon-CvbJoadU.png
20.94
KB
-rwxr-xr-x
browser-DyVnc2OH.js
392
B
-rwxr-xr-x
browser-DyVnc2OH.js.map
404
B
-rwxr-xr-x
favicon-16x16-CXk8OJVQ.png
734
B
-rwxr-xr-x
favicon-32x32-BMg2Kocu.png
1.78
KB
-rwxr-xr-x
favicon-hhFM0i7Z.ico
15.04
KB
-rwxr-xr-x
geminiService-khxcBfs7.js
2.36
KB
-rwxr-xr-x
geminiService-khxcBfs7.js.map
6.73
KB
-rwxr-xr-x
index-BbxTXAhJ.css
45.32
KB
-rwxr-xr-x
index-DN1SJQ1D.js
73.27
KB
-rwxr-xr-x
index-DN1SJQ1D.js.map
215.58
KB
-rwxr-xr-x
index.es-B3idowhG.js
155.35
KB
-rwxr-xr-x
index.es-B3idowhG.js.map
624.87
KB
-rwxr-xr-x
kunal-UYflGF6w.jpg
9.22
MB
-rwxr-xr-x
kunal-ozIpZZVI.js
102
B
-rwxr-xr-x
kunal-ozIpZZVI.js.map
197
B
-rwxr-xr-x
pdf-vendor-Bz5wMm03.js
317.87
KB
-rwxr-xr-x
pdf-vendor-Bz5wMm03.js.map
976.2
KB
-rwxr-xr-x
purify.es-CQJ0hv7W.js
21.35
KB
-rwxr-xr-x
purify.es-CQJ0hv7W.js.map
88.01
KB
-rwxr-xr-x
react-vendor-BFYHlx6n.js
160.29
KB
-rwxr-xr-x
react-vendor-BFYHlx6n.js.map
687.16
KB
-rwxr-xr-x
sarthak-CfXTejkX.png
764.15
KB
-rwxr-xr-x
sarthak-Cq6ZcrGb.js
106
B
-rwxr-xr-x
sarthak-Cq6ZcrGb.js.map
203
B
-rwxr-xr-x
site-BwHFeIBa.webmanifest
263
B
-rwxr-xr-x
supabase-vendor-DtZyL83W.js
105.45
KB
-rwxr-xr-x
supabase-vendor-DtZyL83W.js.ma...
449.41
KB
-rwxr-xr-x
ui-vendor-DSJ4jbeb.js
44.26
KB
-rwxr-xr-x
ui-vendor-DSJ4jbeb.js.map
190.96
KB
-rwxr-xr-x
useToast-Bg1woyD1.js
414
B
-rwxr-xr-x
useToast-Bg1woyD1.js.map
1.83
KB
-rwxr-xr-x
xlsx-vendor-D_ykzFJ-.js
276.48
KB
-rwxr-xr-x
xlsx-vendor-D_ykzFJ-.js.map
1.37
MB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : CourseReviews-CLlzbLuT.js
import{s as _,E as Qe,j as e,B as y,ar as Xe,C as W,n as B,F,H as O,L as d,a as S,ah as Y,aN as Ke,a$ as Ze,J as k,T as t,o as er,b0 as oe,b1 as le,V as u,D as f,b2 as P,b3 as ae,b4 as ne,b5 as ce,b6 as de,b7 as ue,b8 as E,b9 as L,a0 as he,c as $,d as U,I as rr,aH as sr,S as xe,a2 as ir,a3 as tr,a4 as or,a5 as lr,a6 as ar,ab as Ce,aI as nr,ba as Re,aJ as cr,A as dr,U as _e,W as ze,X as We,Y as ke,Z as Te,$ as Ae,av as ur,N as pe,P as ge,bb as hr,a1 as De}from"./admin-components-DUStTukf.js";import{r as h,d as me,L as xr}from"./react-vendor-BFYHlx6n.js";import{u as pr,N as gr}from"./academic-components-DF0R8Z3x.js";import{u as mr}from"./useToast-Bg1woyD1.js";import"./supabase-vendor-DtZyL83W.js";import"./pdf-vendor-Bz5wMm03.js";import"./xlsx-vendor-D_ykzFJ-.js";import"./ui-vendor-DSJ4jbeb.js";const M={async getAllCourses(){const{data:l,error:o}=await _.from("courses_iiitd").select("uuid, course_name, course_code, dept_acronym").order("course_code");if(o)throw o;return l||[]},async getCourseReviews(l){const{data:o,error:a}=await _.from("course_reviews").select(` *, course:courses_iiitd(uuid, course_code, course_name, dept_acronym), user:users(full_name, profile_picture_url) `).eq("course_uuid",l).order("created_at",{ascending:!1});if(a)throw a;return o||[]},async getUserReviews(l){const{data:o,error:a}=await _.from("course_reviews").select(` *, course:courses_iiitd(uuid, course_code, course_name, dept_acronym) `).eq("user_id",l).order("created_at",{ascending:!1});if(a)throw a;return o||[]},async getUserReviewsForCourseCodes(l,o){if(!o.length)return[];const{data:a,error:c}=await _.from("course_reviews").select("*, course:courses_iiitd(course_code)").eq("user_id",l).in("course.course_code",o);if(c)throw c;return a||[]},async createReview(l){const{data:o,error:a}=await _.from("course_reviews").insert([l]).select().single();if(a)throw a;return o},async updateReview(l,o){const{data:a,error:c}=await _.from("course_reviews").update(o).eq("id",l).select().single();if(c)throw c;return a},async deleteReview(l){const{error:o}=await _.from("course_reviews").delete().eq("id",l);if(o)throw o},async getTagCategories(){const{data:l,error:o}=await _.from("course_tag_categories").select("*").order("category_name");if(o)throw o;return(l||[]).map(a=>({...a,tags:Array.isArray(a.tags)?a.tags:JSON.parse(a.tags)}))},async getSuggestedTags(l){const{data:o,error:a}=await _.from("course_reviews").select("tags").eq("course_uuid",l);if(a)throw a;const c=o.reduce((x,g)=>(Array.isArray(g.tags)&&g.tags.forEach(j=>{x[j]=(x[j]||0)+1}),x),{});return Object.entries(c).sort(([,x],[,g])=>g-x).map(([x])=>x).slice(0,10)},async getCourseStatistics(l){const{data:o,error:a}=await _.from("course_reviews").select("rating, difficulty").eq("course_uuid",l);if(a)throw a;const c=o.length;if(c===0)return{avgRating:0,totalReviews:0,ratingDistribution:[0,0,0,0,0],difficultyDistribution:{very_easy:0,easy:0,moderate:0,hard:0,very_hard:0}};const g=o.reduce((C,K)=>C+K.rating,0)/c,j=[0,0,0,0,0];o.forEach(C=>{j[C.rating-1]++});const X={very_easy:0,easy:0,moderate:0,hard:0,very_hard:0};return o.forEach(C=>{C.difficulty&&X[C.difficulty]++}),{avgRating:g,totalReviews:c,ratingDistribution:j,difficultyDistribution:X}},async getCompletedTranscriptCourses(l){const{data:o,error:a}=await _.from("transcripts").select("semester, courses").eq("user_id",l).order("semester");if(a)throw a;if(!o)return[];const c=[];return o.forEach(x=>{Array.isArray(x.courses)&&x.courses.forEach(g=>{g.status==="completed"&&c.push({...g,semester:x.semester})})}),c}},N=({rating:l,size:o="md",onChange:a,interactive:c=!1})=>{const[x,g]=h.useState(0);return e.jsx(d,{spacing:1,children:[1,2,3,4,5].map(j=>e.jsx(P,{boxSize:o==="sm"?3:o==="lg"?6:4,color:j<=(x||l)?"yellow.400":"gray.300",cursor:c?"pointer":"default",onMouseEnter:()=>c&&g(j),onMouseLeave:()=>c&&g(0),onClick:()=>c&&a&&a(j),className:c?"transform transition-all hover:scale-110":""},j))})},I=({difficulty:l})=>{if(!l)return null;const o={Easy:{color:"green",label:"Easy"},Medium:{color:"blue",label:"Medium"},Hard:{color:"orange",label:"Hard"}},{color:a,label:c}=o[l];return e.jsx(f,{colorScheme:a,variant:"subtle",px:2,py:1,borderRadius:"full",children:c})},Q=l=>l.replace(/-Lecture-$/i,"").replace(/-Lecture$/i,"").replace(/-Lab-$/i,"").replace(/-Lab$/i,"").trim(),jr=[{key:"completed",label:"Completed Courses"},{key:"all",label:"All Courses"}],_r=()=>{const{session:l}=pr(),{showToast:o}=mr(),{isOpen:a,onOpen:c,onClose:x}=Qe(),[g,j]=h.useState(!1),[X,C]=h.useState(!1),[K,Z]=h.useState(!0),[T,Fe]=h.useState([]),[m,ee]=h.useState(""),[V,Ee]=h.useState([]),[w,je]=h.useState(null),[Le,Me]=h.useState([]),[re,He]=h.useState([]),[b,Be]=h.useState({avgRating:0,totalReviews:0,ratingDistribution:[0,0,0,0,0]}),[z,Ye]=h.useState(""),[se,Ie]=h.useState(""),[J,fe]=h.useState("departments"),[n,A]=h.useState({rating:0,difficulty:"",review:"",semester:1,tags:[]}),[we,Pe]=h.useState([]),[Ne,be]=h.useState(!1),[G,qe]=h.useState("completed"),Oe=me.useMemo(()=>{const r=new Map;return T.forEach(s=>{s.dept_acronym&&r.set(s.dept_acronym,s.dept_acronym)}),Array.from(r.values()).sort()},[T]),ve=me.useMemo(()=>{const r={};return T.forEach(s=>{const i=s.dept_acronym||"Other";r[i]||(r[i]=[]),r[i].push(s)}),Object.entries(r).sort(([s],[i])=>s.localeCompare(i)).map(([s,i])=>({department:s,courses:i.sort((p,R)=>p.course_code.localeCompare(R.course_code))}))},[T]),ye=me.useMemo(()=>{let r=[...T];if(z){const s=z.toLowerCase();r=r.filter(i=>i.course_name.toLowerCase().includes(s)||i.course_code.toLowerCase().includes(s))}return se&&(r=r.filter(s=>s.dept_acronym===se)),r.sort((s,i)=>s.course_code.localeCompare(i.course_code))},[T,z,se]);h.useEffect(()=>{(async()=>{Z(!0);try{const[s,i]=await Promise.all([M.getAllCourses(),M.getTagCategories()]);Fe(s),Me(i)}catch(s){console.error("Error initializing component:",s),o("Failed to load initial data","error")}finally{Z(!1)}})()},[]),h.useEffect(()=>{m&&ie()},[]),h.useEffect(()=>{m&&ie()},[m]),h.useEffect(()=>{(async()=>{if(l?.user?.id){be(!0);try{const s=await M.getCompletedTranscriptCourses(l.user.id),i=s.map(H=>H.course_code),p=await M.getUserReviewsForCourseCodes(l.user.id,i),R=s.map(H=>{const v=p.find(q=>q.course?.course_code===H.course_code&&q.semester===H.semester);return{...H,review:v}});Pe(R)}catch{o("Failed to load completed courses or reviews","error")}finally{be(!1)}}})()},[l?.user?.id]);const ie=async()=>{Z(!0);try{const[r,s]=await Promise.all([M.getCourseReviews(m),M.getSuggestedTags(m)]);Ee(r),He(s);const i=r.length,p=r.reduce((v,q)=>v+q.rating,0),R=i>0?p/i:0,H=[0,0,0,0,0];if(r.forEach(v=>{H[v.rating-1]++}),Be({avgRating:R,totalReviews:i,ratingDistribution:H}),l?.user?.id){const v=r.find(q=>q.user_id===l.user?.id);je(v||null),v&&A({rating:v.rating,difficulty:v.difficulty||"",review:v.review,semester:v.semester,tags:v.tags||[]})}}catch(r){console.error("Error loading course data:",r),o("Failed to load course reviews","error")}finally{Z(!1)}},Se=()=>{if(!l){o("Please sign in to write a review","info");return}w?(j(!0),A({rating:w.rating,difficulty:w.difficulty||"",review:w.review,semester:w.semester,tags:w.tags||[]})):(j(!1),A({rating:0,difficulty:"",review:"",semester:1,tags:[]})),c()},te=r=>{A(s=>({...s,tags:s.tags.includes(r)?s.tags.filter(i=>i!==r):[...s.tags,r]}))},$e=async()=>{if(!(!m||!l?.user?.id)){if(n.rating===0){o("Please provide a rating","warning");return}try{g&&w?(await M.updateReview(w.id,{rating:n.rating,difficulty:n.difficulty||null,review:n.review,semester:n.semester,tags:n.tags}),o("Your review has been updated","success")):(await M.createReview({course_uuid:m,user_id:l.user.id,rating:n.rating,difficulty:n.difficulty||null,review:n.review,semester:n.semester,tags:n.tags}),o("Your review has been submitted","success")),x(),await ie()}catch(r){console.error("Error submitting review:",r),o("Failed to submit review","error")}}},Ue=async()=>{if(w)try{await M.deleteReview(w.id),o("Your review has been deleted","success"),C(!1),je(null),await ie()}catch(r){console.error("Error deleting review:",r),o("Failed to delete review","error")}},Ve=()=>e.jsx(u,{align:"start",spacing:1,width:"100%",children:[5,4,3,2,1].map(r=>{const s=b.ratingDistribution[r-1],i=b.totalReviews>0?s/b.totalReviews*100:0;return e.jsxs(d,{width:"100%",spacing:3,children:[e.jsx(t,{width:"15px",fontWeight:"medium",fontSize:"sm",children:r}),e.jsx(P,{color:"yellow.400",boxSize:3}),e.jsx(y,{width:"100%",height:"8px",bg:"gray.100",borderRadius:"full",overflow:"hidden",children:e.jsx(y,{width:`${i}%`,height:"100%",bg:"yellow.400",borderRadius:"full",transition:"width 0.5s ease-in-out"})}),e.jsx(t,{width:"30px",fontSize:"xs",color:"gray.500",children:s})]},r)})}),Je=r=>{ee(""),A({rating:0,difficulty:"",review:"",semester:r.semester,tags:[]});const s=T.find(i=>i.course_code===r.course_code);s&&ee(s.uuid),j(!1),c()},D=V.find(r=>r.user_id===l?.user?.id),Ge=V.filter(r=>r.user_id!==l?.user?.id);return e.jsxs(e.Fragment,{children:[e.jsx(gr,{}),e.jsx(y,{className:"min-h-screen bg-gradient-to-br from-indigo-50 to-purple-50 pb-16",children:e.jsx(Xe,{maxW:"7xl",py:8,children:e.jsx(W,{className:"bg-white shadow-2xl rounded-2xl overflow-hidden border border-indigo-50 relative",children:e.jsxs(B,{p:[4,8],children:[e.jsxs(F,{align:"center",justify:"space-between",mb:8,children:[e.jsxs(F,{align:"center",gap:6,children:[e.jsx(O,{size:"xl",color:"purple.700",fontWeight:"extrabold",letterSpacing:"tight",children:"Course Reviews"}),e.jsx(d,{spacing:4,children:jr.map(r=>e.jsx(S,{onClick:()=>qe(r.key),colorScheme:G===r.key?"purple":"gray",variant:G===r.key?"solid":"ghost",size:"lg",fontWeight:"bold",borderRadius:"full",boxShadow:G===r.key?"md":void 0,as:Y.button,whileHover:{scale:1.08},whileTap:{scale:.97},children:r.label},r.key))})]}),e.jsx(xr,{to:"/academic-tools",children:e.jsx(S,{leftIcon:e.jsx(Ke,{}),colorScheme:"purple",variant:"solid",borderRadius:"full",px:6,py:2,fontWeight:"bold",boxShadow:"md",bgGradient:"linear(to-r, purple.400, purple.600)",color:"white",as:Y.button,whileHover:{scale:1.07,x:-4,boxShadow:"0 8px 32px rgba(128,0,255,0.15)"},_hover:{bg:"purple.500"},children:"Back to Academic Tools"})})]}),e.jsxs(Ze,{mode:"wait",children:[G==="completed"&&e.jsx(Y.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},transition:{duration:.3},children:e.jsx(W,{className:"mb-8 bg-white shadow-md rounded-xl border border-indigo-50",boxShadow:"lg",_hover:{boxShadow:"2xl",transform:"scale(1.01)"},transition:"all 0.2s",children:e.jsxs(B,{children:[e.jsx(O,{size:"md",color:"purple.700",mb:4,children:"Your Completed Courses"}),Ne?e.jsx(k,{height:"40px",width:"100%"}):we.length===0?e.jsx(t,{color:"gray.500",children:"No completed courses found in your transcript."}):e.jsx(er,{columns:{base:1,md:2,lg:3},spacing:6,children:we.map(r=>e.jsxs(oe,{trigger:"hover",placement:"auto",children:[e.jsx(le,{children:e.jsx(Y.div,{whileHover:{scale:1.03,boxShadow:"0 8px 32px rgba(128,0,255,0.10)"},children:e.jsx(W,{borderRadius:"2xl",borderWidth:"1px",borderColor:r.review?"purple.200":"gray.100",boxShadow:"md",p:4,_hover:{boxShadow:"xl"},children:e.jsx(B,{children:e.jsxs(u,{align:"start",spacing:2,children:[e.jsxs(d,{children:[e.jsx(t,{fontWeight:"bold",fontSize:"lg",children:r.course_code}),e.jsxs(f,{colorScheme:"purple",variant:"solid",fontSize:"sm",px:2,py:1,borderRadius:"md",children:["Semester ",r.semester]})]}),e.jsx(t,{color:"gray.700",fontSize:"md",children:Q(r.course_name)}),r.review&&e.jsxs(d,{mt:2,children:[e.jsx(P,{color:"yellow.400",boxSize:4}),e.jsx(t,{fontWeight:"bold",children:r.review.rating.toFixed(1)}),e.jsx(I,{difficulty:r.review.difficulty}),e.jsx(f,{colorScheme:"purple",variant:"subtle",children:"Reviewed"})]}),!r.review&&e.jsx(S,{colorScheme:"green",size:"md",variant:"solid",borderRadius:"lg",fontWeight:"bold",px:6,py:2,as:Y.button,whileHover:{scale:1.07},whileTap:{scale:.97},onClick:()=>Je(r),children:"Write a Review"})]})})})},r.course_code+"-"+r.semester)}),r.review&&e.jsxs(ae,{p:4,borderRadius:"xl",boxShadow:"2xl",minW:"350px",children:[e.jsx(ne,{}),e.jsx(ce,{}),e.jsx(de,{fontWeight:"bold",color:"purple.700",children:"Your Review & Analytics"}),e.jsx(ue,{children:e.jsxs(u,{align:"start",spacing:2,children:[e.jsxs(d,{children:[e.jsx(N,{rating:r.review.rating,size:"sm"}),e.jsx(t,{fontWeight:"bold",ml:1,children:r.review.rating.toFixed(1)}),e.jsx(I,{difficulty:r.review.difficulty})]}),e.jsx(t,{children:r.review.review}),r.review.tags&&r.review.tags.length>0&&e.jsx(E,{spacing:2,mt:2,children:r.review.tags.map(s=>e.jsx(L,{children:e.jsx(f,{colorScheme:"purple",variant:"subtle",rounded:"full",px:3,py:1,fontSize:"xs",children:s})},s))}),e.jsx(he,{my:2}),e.jsx(t,{fontSize:"sm",color:"gray.500",children:"Course Analytics"}),e.jsxs(d,{children:[e.jsx(P,{color:"yellow.400",boxSize:3}),e.jsxs(t,{fontWeight:"bold",children:["Avg: ",b.avgRating.toFixed(1)]}),e.jsxs(t,{color:"gray.500",children:["(",b.totalReviews," reviews)"]})]})]})})]})]}))})]})})},"completed"),G==="all"&&e.jsx(Y.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:-20},transition:{duration:.3},children:e.jsxs(u,{spacing:8,align:"stretch",children:[e.jsx(t,{color:"gray.600",fontSize:"lg",children:"Read reviews from students who have taken these courses or share your own experience to help others make informed decisions."}),e.jsx(W,{variant:"outline",p:5,borderRadius:"xl",borderColor:"purple.100",children:e.jsx($,{children:e.jsxs(u,{align:"stretch",spacing:4,children:[e.jsx(U,{fontSize:"lg",fontWeight:"bold",color:"purple.700",children:"Select a Course"}),e.jsxs(F,{direction:{base:"column",md:"row"},gap:4,mb:2,children:[e.jsxs(F,{flex:1,position:"relative",children:[e.jsx(rr,{placeholder:"Search by course name or code...",value:z,onChange:r=>Ye(r.target.value),pl:10,bg:"gray.50",borderColor:"gray.200",_focus:{borderColor:"purple.400",boxShadow:"0 0 0 1px var(--chakra-colors-purple-400)"},size:"md"}),e.jsx(y,{position:"absolute",left:3,top:"50%",transform:"translateY(-50%)",children:e.jsx(sr,{color:"gray.400"})})]}),e.jsx(xe,{placeholder:"All Departments",value:se,onChange:r=>Ie(r.target.value),maxW:{base:"100%",md:"180px"},bg:"gray.50",borderColor:"gray.200",size:"md",_focus:{borderColor:"purple.400",boxShadow:"0 0 0 1px var(--chakra-colors-purple-400)"},children:Oe.map(r=>e.jsx("option",{value:r,children:r},r))}),e.jsxs(d,{spacing:2,children:[e.jsx(S,{colorScheme:J==="list"?"purple":"gray",variant:J==="list"?"solid":"outline",onClick:()=>fe("list"),size:"sm",children:"List View"}),e.jsx(S,{colorScheme:J==="departments"?"purple":"gray",variant:J==="departments"?"solid":"outline",onClick:()=>fe("departments"),size:"sm",children:"By Department"})]})]}),e.jsx(y,{maxH:"500px",overflowY:"auto",border:"1px",borderColor:"gray.200",borderRadius:"md",p:2,bg:"white",children:K?e.jsxs(u,{spacing:2,p:2,children:[e.jsx(k,{height:"40px",width:"100%"}),e.jsx(k,{height:"40px",width:"100%"}),e.jsx(k,{height:"40px",width:"100%"})]}):ye.length===0?e.jsx(y,{p:4,textAlign:"center",children:e.jsx(t,{color:"gray.500",children:"No courses found matching your search"})}):J==="list"?e.jsx(u,{align:"stretch",spacing:1,children:ye.map(r=>{const s=V.find(i=>i.course?.uuid===r.uuid&&i.user_id===l?.user?.id);return e.jsxs(oe,{trigger:"hover",placement:"auto",children:[e.jsx(le,{children:e.jsxs(y,{p:2,borderRadius:"md",cursor:"pointer",onClick:()=>ee(r.uuid),bg:m===r.uuid?"purple.100":"transparent",_hover:{bg:m===r.uuid?"purple.100":"gray.50"},transition:"background 0.2s",children:[e.jsxs(F,{justify:"space-between",align:"center",children:[e.jsx(t,{fontWeight:"bold",children:Q(r.course_name)}),e.jsxs(d,{children:[e.jsx(f,{colorScheme:"purple",variant:"subtle",children:r.dept_acronym}),e.jsx(t,{color:"gray.600",fontSize:"sm",children:r.course_code})]})]}),s&&e.jsxs(d,{mt:2,children:[e.jsx(P,{color:"yellow.400",boxSize:4}),e.jsx(t,{fontWeight:"bold",children:s.rating.toFixed(1)}),e.jsx(I,{difficulty:s.difficulty}),e.jsx(f,{colorScheme:"purple",variant:"subtle",children:"Reviewed"})]})]},r.uuid)}),s&&e.jsxs(ae,{p:4,borderRadius:"xl",boxShadow:"2xl",minW:"350px",children:[e.jsx(ne,{}),e.jsx(ce,{}),e.jsx(de,{fontWeight:"bold",color:"purple.700",children:"Your Review & Analytics"}),e.jsx(ue,{children:e.jsxs(u,{align:"start",spacing:2,children:[e.jsxs(d,{children:[e.jsx(N,{rating:s.rating,size:"sm"}),e.jsx(t,{fontWeight:"bold",ml:1,children:s.rating.toFixed(1)}),e.jsx(I,{difficulty:s.difficulty})]}),e.jsx(t,{children:s.review}),s.tags&&s.tags.length>0&&e.jsx(E,{spacing:2,mt:2,children:s.tags.map(i=>e.jsx(L,{children:e.jsx(f,{colorScheme:"purple",variant:"subtle",rounded:"full",px:3,py:1,fontSize:"xs",children:i})},r.uuid+"-"+i))}),e.jsx(he,{my:2}),e.jsx(t,{fontSize:"sm",color:"gray.500",children:"Course Analytics"}),e.jsxs(d,{children:[e.jsx(P,{color:"yellow.400",boxSize:3}),e.jsxs(t,{fontWeight:"bold",children:["Avg: ",b.avgRating.toFixed(1)]}),e.jsxs(t,{color:"gray.500",children:["(",b.totalReviews," reviews)"]})]})]})})]})]},r.uuid)})}):e.jsxs(ir,{variant:"soft-rounded",colorScheme:"purple",size:"sm",children:[e.jsx(tr,{overflowX:"auto",py:2,className:"flex-nowrap whitespace-nowrap",css:{scrollbarWidth:"thin","&::-webkit-scrollbar":{height:"6px"},"&::-webkit-scrollbar-thumb":{backgroundColor:"rgba(155, 155, 155, 0.5)",borderRadius:"3px"}},children:ve.map(({department:r})=>e.jsx(or,{px:4,children:r},r))}),e.jsx(lr,{children:ve.map(({department:r,courses:s})=>e.jsx(ar,{p:2,children:e.jsxs(u,{align:"stretch",spacing:1,maxH:"400px",overflowY:"auto",children:[s.filter(i=>!z||Q(i.course_name).toLowerCase().includes(z.toLowerCase())||i.course_code.toLowerCase().includes(z.toLowerCase())).map(i=>{const p=V.find(R=>R.course?.uuid===i.uuid&&R.user_id===l?.user?.id);return e.jsxs(oe,{trigger:"hover",placement:"auto",children:[e.jsx(le,{children:e.jsxs(y,{p:2,borderRadius:"md",cursor:"pointer",onClick:()=>ee(i.uuid),bg:m===i.uuid?"purple.100":"transparent",_hover:{bg:m===i.uuid?"purple.100":"gray.50"},transition:"background 0.2s",children:[e.jsxs(F,{justify:"space-between",align:"center",children:[e.jsx(t,{fontWeight:"bold",children:Q(i.course_name)}),e.jsxs(d,{children:[e.jsx(f,{colorScheme:"purple",variant:"subtle",children:i.dept_acronym}),e.jsx(t,{color:"gray.600",fontSize:"sm",children:i.course_code})]})]}),p&&e.jsxs(d,{mt:2,children:[e.jsx(P,{color:"yellow.400",boxSize:4}),e.jsx(t,{fontWeight:"bold",children:p.rating.toFixed(1)}),e.jsx(I,{difficulty:p.difficulty}),e.jsx(f,{colorScheme:"purple",variant:"subtle",children:"Reviewed"})]})]},i.uuid)}),p&&e.jsxs(ae,{p:4,borderRadius:"xl",boxShadow:"2xl",minW:"350px",children:[e.jsx(ne,{}),e.jsx(ce,{}),e.jsx(de,{fontWeight:"bold",color:"purple.700",children:"Your Review & Analytics"}),e.jsx(ue,{children:e.jsxs(u,{align:"start",spacing:2,children:[e.jsxs(d,{children:[e.jsx(N,{rating:p.rating,size:"sm"}),e.jsx(t,{fontWeight:"bold",ml:1,children:p.rating.toFixed(1)}),e.jsx(I,{difficulty:p.difficulty})]}),e.jsx(t,{children:p.review}),p.tags&&p.tags.length>0&&e.jsx(E,{spacing:2,mt:2,children:p.tags.map(R=>e.jsx(L,{children:e.jsx(f,{colorScheme:"purple",variant:"subtle",rounded:"full",px:3,py:1,fontSize:"xs",children:R})},i.uuid+"-"+R))}),e.jsx(he,{my:2}),e.jsx(t,{fontSize:"sm",color:"gray.500",children:"Course Analytics"}),e.jsxs(d,{children:[e.jsx(P,{color:"yellow.400",boxSize:3}),e.jsxs(t,{fontWeight:"bold",children:["Avg: ",b.avgRating.toFixed(1)]}),e.jsxs(t,{color:"gray.500",children:["(",b.totalReviews," reviews)"]})]})]})})]})]},i.uuid)}),s.filter(i=>!z||Q(i.course_name).toLowerCase().includes(z.toLowerCase())||i.course_code.toLowerCase().includes(z.toLowerCase())).length===0&&e.jsx(y,{p:4,textAlign:"center",children:e.jsx(t,{color:"gray.500",children:"No courses found matching your search"})})]})},r))})]})}),m&&e.jsx(y,{mt:2,children:e.jsxs(t,{fontSize:"sm",color:"gray.600",children:["Selected Course: ",e.jsxs(t,{as:"span",fontWeight:"bold",color:"purple.700",children:[T.find(r=>r.uuid===m)?.course_code," - ",T.find(r=>r.uuid===m)?.course_name]})]})}),!m&&e.jsx(Ce,{children:"Select a course to see what others are saying"})]})})}),m&&e.jsxs(F,{direction:{base:"column",lg:"row"},gap:8,align:"start",children:[e.jsxs(u,{width:{base:"100%",lg:"30%"},spacing:6,align:"stretch",children:[e.jsx(W,{borderRadius:"xl",overflow:"hidden",boxShadow:"md",border:"1px solid",borderColor:"purple.100",children:e.jsx(B,{children:e.jsxs(u,{spacing:5,align:"center",children:[e.jsx(O,{size:"md",color:"purple.700",children:"Course Rating"}),e.jsxs(F,{direction:"column",align:"center",justify:"center",py:4,children:[e.jsx(O,{size:"3xl",fontWeight:"bold",color:"purple.700",children:b.avgRating.toFixed(1)}),e.jsx(N,{rating:Math.round(b.avgRating),size:"lg"}),e.jsxs(t,{color:"gray.500",fontSize:"sm",mt:2,children:["Based on ",b.totalReviews," ",b.totalReviews===1?"review":"reviews"]})]}),e.jsx(Ve,{})]})})}),e.jsx(W,{borderRadius:"xl",overflow:"hidden",boxShadow:"md",border:"1px solid",borderColor:"purple.100",children:e.jsx(B,{children:e.jsxs(u,{spacing:5,align:"stretch",children:[e.jsx(O,{size:"md",color:"purple.700",children:"Popular Tags"}),re.length>0?e.jsx(E,{children:re.map(r=>e.jsx(L,{children:e.jsx(f,{colorScheme:"purple",rounded:"full",px:3,py:1,fontSize:"sm",children:r})},r))}):e.jsx(t,{color:"gray.500",children:"No tags yet"})]})})}),e.jsx(S,{colorScheme:"purple",size:"lg",onClick:Se,leftIcon:w?e.jsx(nr,{}):e.jsx(Re,{}),className:"transform transition-all hover:scale-105 w-full",children:w?"Edit Your Review":"Write a Review"}),w&&e.jsx(S,{variant:"outline",colorScheme:"red",onClick:()=>C(!0),leftIcon:e.jsx(cr,{}),size:"md",children:"Delete Your Review"})]}),e.jsxs(u,{width:{base:"100%",lg:"70%"},spacing:5,align:"stretch",children:[e.jsx(O,{size:"md",color:"gray.700",children:"Student Reviews"}),D&&e.jsx(Y.div,{whileHover:{boxShadow:"md",transform:"translateY(-2px)"},children:e.jsx(W,{borderRadius:"lg",borderWidth:"2px",borderColor:"purple.400",boxShadow:"lg",bg:"purple.50",children:e.jsx(B,{children:e.jsxs(u,{align:"stretch",spacing:2,children:[e.jsxs(d,{justify:"space-between",children:[e.jsx(t,{fontWeight:"bold",color:"purple.700",children:"Your Review"}),e.jsx(f,{colorScheme:"purple",variant:"solid",children:"You"})]}),e.jsxs(d,{children:[e.jsx(N,{rating:D.rating,size:"sm"}),e.jsx(t,{fontWeight:"bold",ml:1,children:D.rating.toFixed(1)}),e.jsx(I,{difficulty:D.difficulty})]}),e.jsx(t,{children:D.review}),D.tags&&D.tags.length>0&&e.jsx(E,{spacing:2,children:D.tags.map(r=>e.jsx(L,{children:e.jsx(f,{colorScheme:"purple",variant:"subtle",rounded:"full",px:3,py:1,fontSize:"xs",children:r})},r))})]})})})},D.id),K?Array.from({length:3}).map((r,s)=>e.jsx(W,{boxShadow:"sm",borderRadius:"lg",children:e.jsx(B,{children:e.jsxs(u,{align:"stretch",spacing:4,children:[e.jsxs(d,{children:[e.jsx(k,{height:"40px",width:"40px",borderRadius:"full"}),e.jsxs(u,{align:"start",spacing:0,children:[e.jsx(k,{height:"20px",width:"150px"}),e.jsx(k,{height:"16px",width:"80px"})]})]}),e.jsx(k,{height:"20px",width:"120px"}),e.jsx(k,{height:"60px"}),e.jsx(k,{height:"24px",width:"80%"})]})})},s)):V.length===0?e.jsx(W,{p:8,textAlign:"center",borderRadius:"lg",children:e.jsxs(u,{spacing:4,children:[e.jsx(t,{color:"gray.500",children:"No reviews yet for this course"}),e.jsx(S,{colorScheme:"purple",onClick:Se,leftIcon:e.jsx(Re,{}),children:"Be the first to review"})]})}):Ge.map(r=>e.jsx(Y.div,{whileHover:{boxShadow:"md",transform:"translateY(-2px)"},children:e.jsx(W,{borderRadius:"lg",borderWidth:"1px",borderColor:r.user_id===l?.user?.id?"purple.200":"transparent",children:e.jsx(B,{children:e.jsxs(u,{align:"stretch",spacing:4,children:[e.jsxs(F,{justify:"space-between",align:"center",children:[e.jsxs(d,{spacing:3,children:[e.jsx(dr,{size:"md",name:r.user?.full_name||"Anonymous",src:r.user?.profile_picture_url}),e.jsxs(u,{align:"start",spacing:0,children:[e.jsx(t,{fontWeight:"bold",children:r.user?.full_name||"Anonymous"}),e.jsxs(t,{fontSize:"sm",color:"gray.500",children:["Semester ",r.semester]})]})]}),e.jsxs(d,{children:[e.jsx(N,{rating:r.rating,size:"sm"}),e.jsx(t,{fontWeight:"bold",ml:1,children:r.rating.toFixed(1)})]})]}),e.jsx(d,{children:e.jsx(I,{difficulty:r.difficulty})}),e.jsx(t,{children:r.review}),r.tags&&r.tags.length>0&&e.jsx(E,{spacing:2,children:r.tags.map(s=>e.jsx(L,{children:e.jsx(f,{colorScheme:"purple",variant:"subtle",rounded:"full",px:3,py:1,fontSize:"xs",children:s})},s))})]})})})},r.id))]})]})]})},"all")]})]})})})}),e.jsxs(_e,{isOpen:a,onClose:x,size:"xl",scrollBehavior:"inside",children:[e.jsx(ze,{backdropFilter:"blur(4px)"}),e.jsxs(We,{borderRadius:"xl",children:[e.jsx(ke,{color:"purple.700",children:g?"Edit Your Review":"Write a Course Review"}),e.jsx(Te,{}),e.jsx(Ae,{children:e.jsxs(u,{spacing:6,align:"stretch",children:[e.jsxs($,{isRequired:!0,children:[e.jsx(U,{color:"purple.700",children:"Rating"}),e.jsxs(d,{spacing:2,align:"center",children:[e.jsx(N,{rating:n.rating,onChange:r=>A({...n,rating:r}),interactive:!0,size:"lg"}),e.jsx(t,{ml:2,fontWeight:n.rating>0?"bold":"normal",color:n.rating>0?"purple.700":"gray.400",children:n.rating>0?`${n.rating} stars`:"Select rating"})]})]}),e.jsxs($,{children:[e.jsx(U,{color:"purple.700",children:"Difficulty Level"}),e.jsxs(xe,{value:n.difficulty,onChange:r=>A({...n,difficulty:r.target.value}),placeholder:"Select difficulty level",children:[e.jsx("option",{value:"Easy",children:"Easy"}),e.jsx("option",{value:"Medium",children:"Medium"}),e.jsx("option",{value:"Hard",children:"Hard"})]})]}),e.jsxs($,{isRequired:!0,children:[e.jsx(U,{color:"purple.700",children:"Semester Taken"}),e.jsx(xe,{value:n.semester,onChange:r=>A({...n,semester:parseInt(r.target.value)}),children:[1,2,3,4,5,6,7,8].map(r=>e.jsxs("option",{value:r,children:["Semester ",r]},r))})]}),e.jsxs($,{children:[e.jsx(U,{color:"purple.700",children:"Review"}),e.jsx(ur,{value:n.review,onChange:r=>A({...n,review:r.target.value}),placeholder:"Share your experience with this course, what you liked, what could be improved, tips for future students...",rows:5,resize:"vertical"})]}),e.jsxs($,{children:[e.jsx(U,{color:"purple.700",children:"Tags"}),e.jsx(Ce,{mb:3,children:"Select tags that best describe this course (max 10)"}),e.jsxs(u,{spacing:4,align:"stretch",maxH:"300px",overflowY:"auto",pr:2,children:[re.length>0&&e.jsxs(y,{mb:2,children:[e.jsx(t,{fontSize:"sm",fontWeight:"bold",color:"purple.700",mb:2,children:"Popular Tags:"}),e.jsx(E,{spacing:2,children:re.map(r=>e.jsx(L,{children:e.jsx(pe,{size:"md",variant:n.tags.includes(r)?"solid":"outline",colorScheme:"purple",cursor:"pointer",onClick:()=>te(r),children:e.jsx(ge,{children:r})})},r))})]}),Le.map(r=>e.jsxs(y,{mb:3,children:[e.jsxs(t,{fontSize:"sm",fontWeight:"bold",color:"purple.700",mb:2,children:[r.category_name,":"]}),e.jsx(E,{spacing:2,children:r.tags.map(s=>e.jsx(L,{children:e.jsx(pe,{size:"md",variant:n.tags.includes(s)?"solid":"outline",colorScheme:"purple",cursor:"pointer",onClick:()=>te(s),children:e.jsx(ge,{children:s})})},s))})]},r.id))]}),n.tags.length>0&&e.jsxs(y,{mt:4,children:[e.jsxs(t,{fontSize:"sm",fontWeight:"bold",color:"purple.700",mb:2,children:["Selected Tags (",n.tags.length,"/10):"]}),e.jsx(E,{spacing:2,children:n.tags.map(r=>e.jsx(L,{children:e.jsxs(pe,{size:"md",variant:"solid",colorScheme:"purple",children:[e.jsx(ge,{children:r}),e.jsx(hr,{onClick:()=>te(r)})]})},r))})]})]})]})}),e.jsxs(De,{children:[e.jsx(S,{variant:"ghost",mr:3,onClick:x,children:"Cancel"}),e.jsx(S,{colorScheme:"purple",onClick:$e,isDisabled:n.rating===0,children:g?"Update Review":"Submit Review"})]})]})]}),e.jsxs(_e,{isOpen:X,onClose:()=>C(!1),isCentered:!0,children:[e.jsx(ze,{backdropFilter:"blur(4px)"}),e.jsxs(We,{borderRadius:"xl",children:[e.jsx(ke,{color:"red.500",children:"Delete Review"}),e.jsx(Te,{}),e.jsx(Ae,{children:e.jsx(t,{children:"Are you sure you want to delete your review? This action cannot be undone."})}),e.jsxs(De,{children:[e.jsx(S,{variant:"ghost",mr:3,onClick:()=>C(!1),children:"Cancel"}),e.jsx(S,{colorScheme:"red",onClick:Ue,children:"Delete"})]})]})]})]})};export{_r as default}; //# sourceMappingURL=CourseReviews-CLlzbLuT.js.map
Close