managerexport.php 408 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851
  1. <?php
  2. /****************************
  3. * File : managerexport.php
  4. * Author : Cygnusa
  5. * @2018
  6. ****************************/
  7. //SECURITY
  8. if (!defined('APPLICATION_PATH')) {
  9. exit('No direct script access allowed');
  10. }
  11. class managerexport
  12. {
  13. //FUNCTION LISTS
  14. public function __construct($parent)
  15. {
  16. //GET PAGE MESSAGE
  17. $this->page_data = globalfunc::getMessage($parent, $parent->lang, 'managerexport');
  18. if (count($parent->params) == 0) {
  19. // $this->dashboardfunc($parent);
  20. } else {
  21. $qry_params = explode("?", $parent->params[0]);
  22. $parameter_val = strtolower($qry_params[0]);
  23. switch ($parameter_val) {
  24. case "salesreportexport":
  25. case "certifieddsereportexport":
  26. case "assessmentreportexport":
  27. case "salesleaderboardexport":
  28. case "assessmentleaderboardexport":
  29. case "registrationreportexport":
  30. case "coursereportexport":
  31. case "salestargetreportexport":
  32. case "surveyuserreportexport":
  33. case "managertargetsample":
  34. case "newregistrationreportexport":
  35. case "newcoursereportexport":
  36. case "newsalesreportexport":
  37. case "newcertifieddsereportexport":
  38. case "newassessmentreportexport":
  39. case "newsalestargetreportexport":
  40. case "newsalesleaderboardexport":
  41. case "newassessmentleaderboardexport":
  42. case "asmassessmentreport":
  43. case "rmassessmentreport":
  44. case "zmassessmentreport":
  45. case "trainerassessmentreport":
  46. case "surveyreportexport":
  47. case "dealersalestargetreportexport":
  48. case "managersalestargetreportexport":
  49. case "zmcoursereport":
  50. case "trainercoursereport":
  51. case "rmcoursereport":
  52. case "amcoursereport":
  53. case "dealercoursereport":
  54. case "ilearnreport":
  55. $this->$parameter_val($parent);
  56. break;
  57. default:
  58. break;
  59. }
  60. }
  61. $parent->response(array('response' => 'failed', 'message' => 'PAGE NOT FOUND'), 404);
  62. }
  63. private function getmanagerconditon_arr($parent)
  64. {
  65. projectfunc::authorizedRole($parent, array('3', '4', '5', '6', '7', '14'));
  66. $zmemail = escape_str($parent->_request["zmemail"]);
  67. $rmemail = escape_str($parent->_request["rmemail"]);
  68. $amemail = escape_str($parent->_request["amemail"]);
  69. $dealer_cond = array();
  70. if ($parent->current_user_role == '3') {
  71. $REQUEST_KEYS = array('zmemail' => 'string');
  72. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  73. if ($zmemail != 'all' && $zmemail != '') {
  74. $dealer_cond[] = "zm_email='" . $zmemail . "'";
  75. }
  76. if ($rmemail != 'all' && $rmemail != '') {
  77. $dealer_cond[] = "rm_email='" . $rmemail . "'";
  78. }
  79. if ($amemail != 'all' && $amemail != '') {
  80. $dealer_cond[] = "am_email='" . $amemail . "'";
  81. }
  82. } else if ($parent->current_user_role == '4') {
  83. $REQUEST_KEYS = array('rmemail' => 'string');
  84. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  85. $dealer_cond[] = "zm_email='" . $parent->current_user_data->emailid . "'";
  86. if ($rmemail != 'all' && $rmemail != '') {
  87. $dealer_cond[] = "rm_email='" . $rmemail . "'";
  88. }
  89. if ($amemail != 'all' && $amemail != '') {
  90. $dealer_cond[] = "am_email='" . $amemail . "'";
  91. }
  92. } else if ($parent->current_user_role == '5') {
  93. $REQUEST_KEYS = array('rmemail' => 'string');
  94. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  95. $get_trainer_str = "SELECT h.zone FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.userid='" . $parent->current_user_id . "' AND u.role='5' LIMIT 1";
  96. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  97. $dealer_cond[] = (count($trainer_arr) > 0) ? "zone='" . $trainer_arr[0]->zone . "'" : "zone='0'";
  98. if ($rmemail != 'all' && $rmemail != '') {
  99. $dealer_cond[] = "rm_email='" . $rmemail . "'";
  100. }
  101. if ($amemail != 'all' && $amemail != '') {
  102. $dealer_cond[] = "am_email='" . $amemail . "'";
  103. }
  104. } else if ($parent->current_user_role == '6') {
  105. //$REQUEST_KEYS=array('amemail'=>'string');
  106. //globalfunc::mandatoryKey($parent,$REQUEST_KEYS);
  107. $dealer_cond[] = "rm_email='" . $parent->current_user_data->emailid . "'";
  108. if ($amemail != 'all' && $amemail != '') {
  109. $dealer_cond[] = "am_email='" . $amemail . "'";
  110. }
  111. } else if ($parent->current_user_role == '7') {
  112. $dealer_cond[] = "am_email='" . $parent->current_user_data->emailid . "'";
  113. } else if ($parent->current_user_role == '14') {
  114. $dealer_cond[] = "dealer_code='" . $parent->current_user_data->dealer_code . "'";
  115. }
  116. return $dealer_cond;
  117. }
  118. /* /////////////////////////////// SALES REPORT EXPORT //////////////////////////////////////////////// */
  119. private function salesreportexport($parent)
  120. {
  121. globalfunc::checkMethodType($parent, array('POST'));
  122. globalfunc::checkParamCount($parent, 3);
  123. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  124. $year_data = escape_str($parent->params[1]);
  125. $last_data = escape_str($parent->params[2]);
  126. $last_data_arr = explode('?', $last_data);
  127. $month_data = escape_str(trim($last_data_arr[0]));
  128. //$limit_str=globalfunc::setPageLimit($parent,$parent->params[2]);
  129. //$limit_cond=($limit_str)?" LIMIT ".$limit_str:'';
  130. //Excel class library
  131. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  132. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  133. $objPHPExcel = new PHPExcel();
  134. $objPHPExcel->setActiveSheetIndex(0);
  135. //EXCEL HEADER
  136. $row = 2;
  137. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "Month & Year: " . date('M Y', strtotime($year_data . "-" . $month_data . "-01")));
  138. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":C" . $row);
  139. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  140. $row += 2;
  141. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "SALES REPORT");
  142. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":J" . $row);
  143. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  144. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  145. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  146. $row += 2;
  147. //$bordercells_arr=array("A".$row,"B".$row,"C".$row,"D".$row,"E".$row,"F".$row,"G".$row,"H".$row,"I".$row,"J".$row);
  148. //projectfunc::setCellBorder($bordercells_arr,$objPHPExcel);
  149. //$objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  150. //SET HEADER
  151. $header_arr = array('SMPIN', 'DSE Name', 'Mobile', 'Dealer Name', 'Location', 'Target', 'Achieved', 'Percentage');
  152. //GET MODEL
  153. $query_modelarr = $parent->selectQuery(TABLE_MODEL, "model_id, model_name", "model_is_target=1 AND user_type=0 ORDER BY model_id", "");
  154. if ($query_modelarr['nr']) {
  155. foreach ($query_modelarr['result'] as $res_model) {
  156. //$header_arr[]=$res_model->model_name." (Achieved/Target)";
  157. $header_arr[] = $res_model->model_name . " \n Target";
  158. $header_arr[] = $res_model->model_name . " \n Achieved";
  159. $header_arr[] = $res_model->model_name . " \n %";
  160. }
  161. }
  162. $header_arr[] = 'ZM';
  163. $header_arr[] = 'RM';
  164. $header_arr[] = 'AM';
  165. $i = 0;
  166. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  167. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  168. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  169. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('25');
  170. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('20');
  171. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  172. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  173. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  174. if ($query_modelarr['nr']) {
  175. foreach ($query_modelarr['result'] as $res_model) {
  176. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('10');
  177. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('10');
  178. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('10');
  179. }
  180. }
  181. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  182. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  183. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  184. $i = 0;
  185. foreach ($header_arr as $val) {
  186. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  187. $m = $i - 1;
  188. $bordercells_arr[] = getColumnFromNumber($m) . $row;
  189. }
  190. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  191. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  192. //AREA MANAGER SELF
  193. if ($parent->current_user_role == '7') {
  194. $role = $parent->current_user_role;
  195. $userdata = projectfunc::getuserdata($parent, $parent->current_user_id);
  196. $emailid = $userdata->emailid;
  197. } else {
  198. //AREA MANAGER LEVEL REPORT
  199. $role = '7';
  200. //FIELDS VALIDATION
  201. $REQUEST_KEYS = array('area' => 'string');
  202. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  203. $area_manager = escape_str($parent->_request["area"]);
  204. $emailid = $area_manager;
  205. }
  206. $user_cond = "";
  207. switch ($role) {
  208. case '3': //HO Manager
  209. $user_cond .= "";
  210. break;
  211. case '4': //Zonal Manager
  212. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE zm_email='" . $emailid . "' AND status='1' AND is_deleted='0')";
  213. break;
  214. case '5': //Trainer
  215. $get_trainer_str = "SELECT h.* FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.emailid='" . $emailid . "' LIMIT 1";
  216. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  217. $zone_cond .= (count($trainer_arr) > 0) ? " zone='" . $trainer_arr[0]->zone . "'" : " zone='0'";
  218. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE " . $zone_cond . " AND status='1' AND is_deleted='0')";
  219. break;
  220. case '6': //Regional Manager
  221. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE rm_email='" . $emailid . "' AND status='1' AND is_deleted='0')";
  222. break;
  223. case '7': //Area Manager
  224. if ($parent->current_user_role == '14') {
  225. $dealer_code_cond = " AND dealer_code='" . $parent->current_user_data->dealer_code . "'";
  226. }
  227. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE am_email='" . $emailid . "' " . $dealer_code_cond . " AND status='1' AND is_deleted='0')";
  228. break;
  229. // case '9': break;
  230. // case '10': break;
  231. // case '11': break;
  232. // case '12': break;
  233. // case '13': break;
  234. default:$parent->response(array('response' => 'failed', 'message' => 'Sorry No access'), 401);
  235. break;
  236. }
  237. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[2]);
  238. $order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  239. if (isset($filter_arr) && isset($filter_arr['sort'])) {
  240. //1-Dealer
  241. //2-Location
  242. //3-AM
  243. //4-RM
  244. //5-ZM
  245. switch ($filter_arr['sort']) {
  246. case '1':$order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  247. break;
  248. case '2':$order_by_cond = "ORDER BY d.city,u.fname ASC ";
  249. break;
  250. case '3':$order_by_cond = "ORDER BY d.am_email,u.fname ASC ";
  251. break;
  252. case '4':$order_by_cond = "ORDER BY d.rm_email,u.fname ASC ";
  253. break;
  254. case '5':$order_by_cond = "ORDER BY d.zm_email,u.fname ASC ";
  255. break;
  256. default:$order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  257. break;
  258. }
  259. }
  260. if (isset($parent->_request["search"])) {
  261. $search_txt = escape_str($parent->_request["search"]);
  262. $user_cond .= " AND (u.fname LIKE '%" . $search_txt . "%' OR u.lname LIKE '%" . $search_txt . "%' OR u.emp_code LIKE '%" . $search_txt . "%' OR d.dealer_name LIKE '%" . $search_txt . "%' OR d.zm_name LIKE '%" . $search_txt . "%' OR d.rm_name LIKE '%" . $search_txt . "%' OR d.am_name LIKE '%" . $search_txt . "%' OR d.city LIKE '%" . $search_txt . "%' )";
  263. }
  264. $get_user_str = "SELECT u.userid,u.fname,u.lname,u.smpin,u.emp_code,u.mobileno,d.city,u.dealer_code,d.dealer_name,d.zm_name,d.rm_name,d.am_name FROM " . TABLE_USER . " u LEFT JOIN " . DMS_EMPLOYEE . " e ON u.smpin=e.smpin LEFT JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code WHERE u.status='1' AND u.is_deleted='0' AND u.role>7 AND u.role<14 " . $user_cond . $order_by_cond;
  265. $user_arr = $parent->getQueryValue($get_user_str);
  266. if (count($user_arr) > 0) {
  267. foreach ($user_arr as $mkey => $res_user) {
  268. //TARGET
  269. $user_target = projectfunc::userSalesTarget($parent, $res_user->userid, '', $year_data, $month_data);
  270. //ACHIEVED
  271. $user_achieved = projectfunc::userSalesAchieved($parent, $res_user->userid, '', $year_data, $month_data);
  272. $i = 0;
  273. $row++;
  274. if (empty($res_user->smpin)) {
  275. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  276. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  277. } else {
  278. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->smpin);
  279. }
  280. if (empty($res_user->fname)) {
  281. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  282. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  283. } else {
  284. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->fname . " " . $res_user->lname);
  285. }
  286. if (empty($res_user->mobileno)) {
  287. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  288. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  289. } else {
  290. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobileno);
  291. }
  292. if (empty($res_user->dealer_name)) {
  293. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  294. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  295. } else {
  296. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_name);
  297. }
  298. if (empty($res_user->city)) {
  299. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  300. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  301. } else {
  302. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->city);
  303. }
  304. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $user_target);
  305. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $user_achieved);
  306. $percentage = ($user_target > 0) ? round(($user_achieved / $user_target) * 100) : 0;
  307. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $percentage);
  308. if ($query_modelarr['nr']) {
  309. foreach ($query_modelarr['result'] as $res_model) {
  310. $model_user_target = projectfunc::userSalesTarget($parent, $res_user->userid, $res_model->model_name, $year_data, $month_data);
  311. //ACHIEVED
  312. $model_user_achieved = projectfunc::userSalesAchieved($parent, $res_user->userid, $res_model->model_name, $year_data, $month_data);
  313. //$objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++).$row,$model_user_achieved."/".$model_user_target);
  314. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $model_user_target);
  315. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $model_user_achieved);
  316. $modelpercentage = ($model_user_target > 0) ? round(($model_user_achieved / $model_user_target) * 100) : 0;
  317. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $modelpercentage);
  318. }
  319. }
  320. if (empty($res_user->zm_name)) {
  321. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  322. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  323. } else {
  324. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->zm_name);
  325. }
  326. if (empty($res_user->rm_name)) {
  327. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  328. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  329. } else {
  330. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->rm_name);
  331. }
  332. if (empty($res_user->am_name)) {
  333. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  334. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  335. } else {
  336. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->am_name);
  337. }
  338. }
  339. }
  340. //LOG
  341. $logstr = 'MANAGER SALES REPORT EXPORT';
  342. globalfunc::insertUserLog($parent, $logstr);
  343. $objPHPExcel->getActiveSheet()->setTitle('MANAGER SALES REPORT');
  344. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  345. $fpath = "../../" . S3_REPORT_URL;
  346. $filename = "manager_sales_report_" . uniqid() . ".xlsx";
  347. $objWriter->save($fpath . $filename);
  348. //CONNECT S3
  349. $s3 = awsfileserver::connectS3();
  350. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  351. //delete report
  352. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  353. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  354. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  355. }
  356. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  357. /* /////////////////////////////// CERTIFIED DSE REPORT EXPORT //////////////////////////////////////////////// */
  358. private function certifieddsecolor($parent, $value)
  359. {
  360. switch ($value) {
  361. case '0':$color_value = 'DCDCDC';
  362. break;
  363. case '1':$color_value = 'FFA500';
  364. break;
  365. case '2':$color_value = 'FF0000';
  366. break;
  367. case '3':$color_value = '008000';
  368. break;
  369. default:$color_value = 'DCDCDC';
  370. break;
  371. }
  372. return $color_value;
  373. }
  374. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  375. /* /////////////////////////////// CERTIFIED DSE REPORT EXPORT //////////////////////////////////////////////// */
  376. private function certifieddsereportexport($parent)
  377. {
  378. globalfunc::checkMethodType($parent, array('POST'));
  379. globalfunc::checkParamCount($parent, 1);
  380. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  381. //Excel class library
  382. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  383. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  384. $objPHPExcel = new PHPExcel();
  385. $objPHPExcel->setActiveSheetIndex(0);
  386. //EXCEL HEADER
  387. $row += 2;
  388. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "CERTIFIED DSE REPORT");
  389. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":K" . $row);
  390. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  391. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  392. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  393. $row += 2;
  394. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row, "I" . $row, "J" . $row, "K" . $row, "L" . $row);
  395. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  396. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  397. //SET HEADER
  398. $header_arr = array('SMPIN', 'DSE Name', 'Mobile', 'Dealer Name', 'Location', 'Certification', 'ZM', 'RM', 'AM');
  399. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('15');
  400. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth('30');
  401. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('15');
  402. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth('25');
  403. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth('20');
  404. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth('5');
  405. $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth('5');
  406. $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth('5');
  407. $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth('5');
  408. $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth('30');
  409. $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth('30');
  410. $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth('30');
  411. $i = 0;
  412. foreach ($header_arr as $val) {
  413. $i = ($i == '5') ? '8' : $i;
  414. if ($i == 4) {
  415. $objPHPExcel->getActiveSheet()->mergeCells("E" . $row . ":H" . $row);
  416. $objPHPExcel->getActiveSheet()->getStyle("E" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  417. }
  418. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  419. }
  420. //AREA MANAGER SELF
  421. if ($parent->current_user_role == '7') {
  422. $role = $parent->current_user_role;
  423. $userdata = projectfunc::getuserdata($parent, $parent->current_user_id);
  424. $emailid = $userdata->emailid;
  425. } else {
  426. //AREA MANAGER LEVEL REPORT
  427. $role = '7';
  428. //FIELDS VALIDATION
  429. $REQUEST_KEYS = array('area' => 'string');
  430. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  431. $area_manager = escape_str($parent->_request["area"]);
  432. $emailid = $area_manager;
  433. }
  434. $user_cond = "";
  435. switch ($role) {
  436. case '3': //HO Manager
  437. $user_cond .= "";
  438. break;
  439. case '4': //Zonal Manager
  440. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE zm_email='" . $emailid . "' AND status='1' AND is_deleted='0')";
  441. break;
  442. case '5': //Trainer
  443. $get_trainer_str = "SELECT h.* FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.emailid='" . $emailid . "' LIMIT 1";
  444. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  445. $zone_cond .= (count($trainer_arr) > 0) ? " zone='" . $trainer_arr[0]->zone . "'" : " zone='0'";
  446. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE " . $zone_cond . " AND status='1' AND is_deleted='0')";
  447. break;
  448. case '6': //Regional Manager
  449. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE rm_email='" . $emailid . "' AND status='1' AND is_deleted='0')";
  450. break;
  451. case '7': //Area Manager
  452. if ($parent->current_user_role == '14') {
  453. $dealer_code_cond = " AND dealer_code='" . $parent->current_user_data->dealer_code . "'";
  454. }
  455. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE am_email='" . $emailid . "'" . $dealer_code_cond . " AND status='1' AND is_deleted='0' )";
  456. break;
  457. default:$parent->response(array('response' => 'failed', 'message' => 'Sorry No access'), 401);
  458. break;
  459. }
  460. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[0]);
  461. $order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  462. if (isset($filter_arr) && isset($filter_arr['sort'])) {
  463. //1-Dealer
  464. //2-Location
  465. //3-AM
  466. //4-RM
  467. //5-ZM
  468. switch ($filter_arr['sort']) {
  469. case '1':$order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  470. break;
  471. case '2':$order_by_cond = "ORDER BY d.city,u.fname ASC ";
  472. break;
  473. case '3':$order_by_cond = "ORDER BY d.am_email,u.fname ASC ";
  474. break;
  475. case '4':$order_by_cond = "ORDER BY d.rm_email,u.fname ASC ";
  476. break;
  477. case '5':$order_by_cond = "ORDER BY d.zm_email,u.fname ASC ";
  478. break;
  479. default:$order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  480. break;
  481. }
  482. }
  483. if (isset($parent->_request["search"])) {
  484. $search_txt = escape_str($parent->_request["search"]);
  485. $user_cond .= " AND (u.fname LIKE '%" . $search_txt . "%' OR u.lname LIKE '%" . $search_txt . "%' OR u.emp_code LIKE '%" . $search_txt . "%' OR d.dealer_name LIKE '%" . $search_txt . "%' OR d.zm_name LIKE '%" . $search_txt . "%' OR d.rm_name LIKE '%" . $search_txt . "%' OR d.am_name LIKE '%" . $search_txt . "%' OR d.city LIKE '%" . $search_txt . "%' )";
  486. }
  487. $get_user_str = "SELECT u.userid,u.fname,u.lname,u.smpin,u.emp_code,u.mobileno,d.city,u.dealer_code,d.dealer_name,d.zm_name,d.rm_name,d.am_name FROM " . TABLE_USER . " u LEFT JOIN " . DMS_EMPLOYEE . " e ON u.smpin=e.smpin LEFT JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code WHERE u.status='1' AND u.is_deleted='0' AND u.role>7 AND u.role<14 " . $user_cond . $order_by_cond;
  488. $user_arr = $parent->getQueryValue($get_user_str);
  489. if (count($user_arr) > 0) {
  490. foreach ($user_arr as $mkey => $res_user) {
  491. $learning_arr = projectfunc::userLearningLevel($parent, $res_user->userid);
  492. //0-Not Started Grey
  493. //1-Current Orange
  494. //2-Failed Red,
  495. //3-Completed Green
  496. $i = 0;
  497. $row++;
  498. if (empty($res_user->smpin)) {
  499. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  500. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  501. } else {
  502. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->smpin);
  503. }
  504. if (empty($res_user->fname)) {
  505. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  506. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  507. } else {
  508. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->fname . " " . $res_user->lname);
  509. }
  510. if (empty($res_user->mobileno)) {
  511. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  512. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  513. } else {
  514. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobileno);
  515. }
  516. if (empty($res_user->dealer_name)) {
  517. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  518. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  519. } else {
  520. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_name);
  521. }
  522. if (empty($res_user->city)) {
  523. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  524. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  525. } else {
  526. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->city);
  527. }
  528. $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i) . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  529. $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i) . $row)->getFont()->setBold(true);
  530. $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i) . $row)->getFont()->setSize(14)->getColor()->setRGB($this->certifieddsecolor($parent, $learning_arr['basic']));
  531. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, 'B');
  532. $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i) . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  533. $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i) . $row)->getFont()->setBold(true);
  534. $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i) . $row)->getFont()->setSize(14)->getColor()->setRGB($this->certifieddsecolor($parent, $learning_arr['bronze']));
  535. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, 'B');
  536. $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i) . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  537. $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i) . $row)->getFont()->setBold(true);
  538. $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i) . $row)->getFont()->setSize(14)->getColor()->setRGB($this->certifieddsecolor($parent, $learning_arr['silver']));
  539. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, 'S');
  540. $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i) . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  541. $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i) . $row)->getFont()->setBold(true);
  542. $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i) . $row)->getFont()->setSize(14)->getColor()->setRGB($this->certifieddsecolor($parent, $learning_arr['gold']));
  543. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, 'G');
  544. if (empty($res_user->zm_name)) {
  545. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  546. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  547. } else {
  548. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->zm_name);
  549. }
  550. if (empty($res_user->rm_name)) {
  551. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  552. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  553. } else {
  554. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->rm_name);
  555. }
  556. if (empty($res_user->am_name)) {
  557. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  558. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  559. } else {
  560. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->am_name);
  561. }
  562. }
  563. }
  564. //LOG
  565. $logstr = 'CERTIFIED DSE REPORT EXPORT';
  566. globalfunc::insertUserLog($parent, $logstr);
  567. $objPHPExcel->getActiveSheet()->setTitle('CERTIFIED DSE REPORT');
  568. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  569. $fpath = "../../" . S3_REPORT_URL;
  570. $filename = "certified_dse_report_" . uniqid() . ".xlsx";
  571. $objWriter->save($fpath . $filename);
  572. //CONNECT S3
  573. $s3 = awsfileserver::connectS3();
  574. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  575. //delete report
  576. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  577. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  578. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  579. }
  580. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  581. /* /////////////////////////////// ASSESSMENT REPORT EXPORT //////////////////////////////////////////////// */
  582. private function assessmentreportexport($parent)
  583. {
  584. globalfunc::checkMethodType($parent, array('POST'));
  585. globalfunc::checkParamCount($parent, 1);
  586. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  587. //FIELDS VALIDATION
  588. $REQUEST_KEYS = array('assessmentid' => 'integer');
  589. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  590. $assessmentid = escape_str($parent->_request["assessmentid"]);
  591. //Excel class library
  592. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  593. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  594. $objPHPExcel = new PHPExcel();
  595. $objPHPExcel->setActiveSheetIndex(0);
  596. //EXCEL HEADER
  597. $row += 2;
  598. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "ASSESSMENT REPORT");
  599. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":H" . $row);
  600. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  601. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  602. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  603. $row += 2;
  604. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row, "I" . $row);
  605. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  606. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  607. //SET HEADER
  608. $header_arr = array('SMPIN', 'DSE Name', 'Mobile', 'Dealer Name', 'Location', 'Score', 'ZM', 'RM', 'AM');
  609. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('15');
  610. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth('30');
  611. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('15');
  612. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth('25');
  613. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth('20');
  614. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth('10');
  615. $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth('30');
  616. $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth('30');
  617. $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth('30');
  618. $i = 0;
  619. foreach ($header_arr as $val) {
  620. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  621. }
  622. $role = $parent->current_user_role;
  623. $userdata = projectfunc::getuserdata($parent, $parent->current_user_id);
  624. $user_cond = "";
  625. //AREA MANAGER SELF
  626. if ($parent->current_user_role == '7') {
  627. $role = $parent->current_user_role;
  628. $userdata = projectfunc::getuserdata($parent, $parent->current_user_id);
  629. $emailid = $userdata->emailid;
  630. } else {
  631. //AREA MANAGER LEVEL REPORT
  632. $role = '7';
  633. //FIELDS VALIDATION
  634. $REQUEST_KEYS = array('area' => 'string');
  635. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  636. $area_manager = escape_str($parent->_request["area"]);
  637. $emailid = $area_manager;
  638. }
  639. if ($parent->current_user_role == '14') {
  640. $dealer_code_cond = " AND dealer_code='" . $parent->current_user_data->dealer_code . "'";
  641. }
  642. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE am_email='" . $emailid . "'" . $dealer_code_cond . " AND status='1' AND is_deleted='0')";
  643. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[0]);
  644. $order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  645. if (isset($filter_arr) && isset($filter_arr['sort'])) {
  646. //1-Dealer
  647. //2-Location
  648. //3-AM
  649. //4-RM
  650. //5-ZM
  651. switch ($filter_arr['sort']) {
  652. case '1':$order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  653. break;
  654. case '2':$order_by_cond = "ORDER BY d.city,u.fname ASC ";
  655. break;
  656. case '3':$order_by_cond = "ORDER BY d.am_email,u.fname ASC ";
  657. break;
  658. case '4':$order_by_cond = "ORDER BY d.rm_email,u.fname ASC ";
  659. break;
  660. case '5':$order_by_cond = "ORDER BY d.zm_email,u.fname ASC ";
  661. break;
  662. default:$order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  663. break;
  664. }
  665. }
  666. if (isset($parent->_request["search"])) {
  667. $search_txt = escape_str($parent->_request["search"]);
  668. $user_cond .= " AND (u.fname LIKE '%" . $search_txt . "%' OR u.lname LIKE '%" . $search_txt . "%' OR u.emp_code LIKE '%" . $search_txt . "%' OR d.dealer_name LIKE '%" . $search_txt . "%' OR d.zm_name LIKE '%" . $search_txt . "%' OR d.rm_name LIKE '%" . $search_txt . "%' OR d.am_name LIKE '%" . $search_txt . "%' OR d.city LIKE '%" . $search_txt . "%' )";
  669. }
  670. $get_user_str = "SELECT u.userid,u.fname,u.lname,u.smpin,u.emp_code,u.mobileno,d.city,u.dealer_code,d.dealer_name,d.zm_name,d.rm_name,d.am_name FROM " . TABLE_USER . " u JOIN " . TABLE_ASSESSMENT_USER . " as au ON u.userid=au.userid LEFT JOIN " . DMS_EMPLOYEE . " e ON u.smpin=e.smpin LEFT JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code WHERE u.status='1' AND u.is_deleted='0' AND u.role>7 AND u.role<14 AND au.assessmentid='" . $assessmentid . "' " . $user_cond . $order_by_cond;
  671. $user_arr = $parent->getQueryValue($get_user_str);
  672. if (count($user_arr) > 0) {
  673. foreach ($user_arr as $mkey => $res_user) {
  674. $learning_arr = projectfunc::userLearningLevel($parent, $res_user->userid);
  675. //0-Not Started Grey
  676. //1-Current Orange
  677. //2-Failed Red,
  678. //3-Completed Green
  679. $i = 0;
  680. $row++;
  681. if (empty($res_user->smpin)) {
  682. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  683. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  684. } else {
  685. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->smpin);
  686. }
  687. if (empty($res_user->fname)) {
  688. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  689. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  690. } else {
  691. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->fname . " " . $res_user->lname);
  692. }
  693. if (empty($res_user->mobileno)) {
  694. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  695. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  696. } else {
  697. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobileno);
  698. }
  699. if (empty($res_user->dealer_name)) {
  700. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  701. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  702. } else {
  703. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_name);
  704. }
  705. if (empty($res_user->city)) {
  706. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  707. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  708. } else {
  709. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->city);
  710. }
  711. $exam_highscore_str = "SELECT * FROM " . TABLE_ASSESSMENT_USER . " WHERE assessmentid='" . $assessmentid . "' AND userid='" . $res_user->userid . "' LIMIT 1";
  712. $exam_highscore_arr = $parent->getQueryValue($exam_highscore_str);
  713. $highscore = (count($exam_highscore_arr) > 0) ? $exam_highscore_arr[0]->highscore : '0';
  714. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $highscore . "%");
  715. if (empty($res_user->zm_name)) {
  716. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  717. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  718. } else {
  719. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->zm_name);
  720. }
  721. if (empty($res_user->rm_name)) {
  722. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  723. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  724. } else {
  725. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->rm_name);
  726. }
  727. if (empty($res_user->am_name)) {
  728. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  729. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  730. } else {
  731. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->am_name);
  732. }
  733. }
  734. }
  735. //LOG
  736. $logstr = 'ASSESSMENT REPORT EXPORT';
  737. globalfunc::insertUserLog($parent, $logstr);
  738. $objPHPExcel->getActiveSheet()->setTitle('ASSESSMENT REPORT');
  739. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  740. $fpath = "../../" . S3_REPORT_URL;
  741. $filename = "assessment_report_" . uniqid() . ".xlsx";
  742. $objWriter->save($fpath . $filename);
  743. //CONNECT S3
  744. $s3 = awsfileserver::connectS3();
  745. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  746. //delete report
  747. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  748. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  749. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  750. }
  751. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  752. /* /////////////////////////////// SALES LEADERBOARD REPORT EXPORT //////////////////////////////////////////////// */
  753. private function salesleaderboardexport($parent)
  754. {
  755. globalfunc::checkMethodType($parent, array('POST'));
  756. globalfunc::checkParamCount($parent, 3);
  757. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  758. //FIELDS VALIDATION
  759. $REQUEST_KEYS = array('email' => 'string');
  760. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  761. $email = escape_str($parent->_request["email"]);
  762. $year_data = escape_str($parent->params[1]);
  763. $last_data = escape_str($parent->params[2]);
  764. $last_data_arr = explode('?', $last_data);
  765. $month_data = escape_str(trim($last_data_arr[0]));
  766. //Excel class library
  767. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  768. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  769. $objPHPExcel = new PHPExcel();
  770. $objPHPExcel->setActiveSheetIndex(0);
  771. //EXCEL HEADER
  772. $row = 2;
  773. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "Month & Year: " . date('M Y', strtotime($year_data . "-" . $month_data . "-01")));
  774. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":C" . $row);
  775. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  776. //EXCEL HEADER
  777. $row += 2;
  778. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "SALES LEADERBOARD REPORT");
  779. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":J" . $row);
  780. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  781. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  782. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  783. $row += 2;
  784. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row, "I" . $row, "J" . $row, "K" . $row);
  785. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  786. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  787. //SET HEADER
  788. $header_arr = array('SMPIN', 'DSE Name', 'Mobile', 'Dealer Name', 'Location', 'Sales', 'Rank', 'OutOf', 'ZM', 'RM', 'AM');
  789. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('15');
  790. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth('30');
  791. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('15');
  792. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth('25');
  793. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth('20');
  794. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth('10');
  795. $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth('10');
  796. $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth('10');
  797. $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth('30');
  798. $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth('30');
  799. $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth('30');
  800. $i = 0;
  801. foreach ($header_arr as $val) {
  802. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  803. }
  804. $user_cond = "";
  805. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[2]);
  806. $order_by_cond = " ORDER BY f.rank,d.dealer_name ASC";
  807. if (isset($filter_arr) && isset($filter_arr['sort'])) {
  808. //1-Dealer
  809. //2-Rank
  810. switch ($filter_arr['sort']) {
  811. case '1':$order_by_cond = " ORDER BY d.dealer_name,f.rank ASC ";
  812. break;
  813. case '2':$order_by_cond = " ORDER BY f.rank,d.dealer_name ASC ";
  814. break;
  815. default:$order_by_cond = " ORDER BY f.rank,d.dealer_name ASC ";
  816. break;
  817. }
  818. }
  819. if (isset($parent->_request["search"])) {
  820. $search_txt = escape_str($parent->_request["search"]);
  821. $user_cond .= " AND (u.fname LIKE '%" . $search_txt . "%' OR u.lname LIKE '%" . $search_txt . "%' OR u.emp_code LIKE '%" . $search_txt . "%' OR d.dealer_name LIKE '%" . $search_txt . "%' OR d.zm_name LIKE '%" . $search_txt . "%' OR d.rm_name LIKE '%" . $search_txt . "%' OR d.am_name LIKE '%" . $search_txt . "%' OR d.city LIKE '%" . $search_txt . "%' )";
  822. }
  823. if ($parent->current_user_role == '14') {
  824. $user_cond .= " AND u.dealer_code='" . $dealer_code . "'";
  825. }
  826. //GET MONTH RANGE
  827. $start_date = date('Y-m-d', strtotime($year_data . "-" . $month_data . "-01"));
  828. $end_date = date('Y-m-t', strtotime($year_data . "-" . $month_data . "-01"));
  829. $parent->executeQuery("SET @rownum := 0");
  830. $get_user_str = "SELECT f.*,u.fname,u.lname,u.mobileno,d.* FROM (SELECT @rownum := @rownum + 1 AS rank, salecount,targetcount,smpin,userid,last_sale,first_sale,sale_per FROM (SELECT c.*, CASE WHEN targetcount=0 THEN 0 ELSE (salecount/targetcount)*100 END as 'sale_per' FROM ( SELECT a.userid,a.smpin,a.salecount,b.targetcount,a.last_sale,a.first_sale FROM (SELECT COALESCE(COUNT(s.id),'0') as scount, COALESCE(SUM(s.sales_count),'0') as salecount, u.smpin,u.userid,MAX(s.sale_date) last_sale,MIN(s.sale_date) first_sale FROM " . TABLE_USER . " as u JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code LEFT JOIN (SELECT id,smpin,sale_date,sales_count FROM " . DMS_EMPLOYEE_SALES . " WHERE sale_date>='" . $start_date . "' AND sale_date<='" . $end_date . "') as s ON s.smpin=u.smpin WHERE u.is_deleted=0 AND u.role>7 AND u.role<14 AND d.am_email='" . $email . "' " . $area_cond . " GROUP BY u.smpin ) as a JOIN (SELECT COALESCE(SUM(t.target),'0') as targetcount,u.smpin,u.userid FROM " . TABLE_USER . " as u JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code LEFT JOIN (SELECT id,smpin,target FROM " . TABLE_USER_SALETARGET . " WHERE sale_month>='" . $start_date . "' AND sale_month<='" . $end_date . "')as t ON t.smpin=u.smpin WHERE u.is_deleted=0 AND u.role>7 AND u.role<14 AND d.am_email='" . $email . "' " . $area_cond . " GROUP BY u.smpin ) as b ON a.userid=b.userid )c ORDER BY cast(sale_per as SIGNED) DESC,cast(salecount as SIGNED) DESC,cast(targetcount as SIGNED) DESC,last_sale ASC,first_sale ASC,userid ASC)as a )as f JOIN " . TABLE_USER . " as u ON f.userid=u.userid LEFT JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code WHERE 1=1 " . $user_cond . $order_by_cond;
  831. $user_arr = $parent->getQueryValue($get_user_str);
  832. $get_user_count_str = "SELECT COUNT(u.userid)as user_count FROM (SELECT salecount,targetcount,smpin,userid,last_sale,first_sale,sale_per FROM (SELECT c.*, CASE WHEN targetcount=0 THEN 0 ELSE (salecount/targetcount)*100 END as 'sale_per' FROM ( SELECT a.userid,a.smpin,a.salecount,b.targetcount,a.last_sale,a.first_sale FROM (SELECT COALESCE(COUNT(s.id),'0') as scount, COALESCE(SUM(s.sales_count),'0') as salecount, u.smpin,u.userid,MAX(s.sale_date) last_sale,MIN(s.sale_date) first_sale FROM " . TABLE_USER . " as u JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code LEFT JOIN (SELECT id,smpin,sale_date,sales_count FROM " . DMS_EMPLOYEE_SALES . " WHERE sale_date>='" . $start_date . "' AND sale_date<='" . $end_date . "') as s ON s.smpin=u.smpin WHERE u.is_deleted=0 AND u.role>7 AND u.role<14 AND d.am_email='" . $email . "' " . $area_cond . " GROUP BY u.smpin ) as a JOIN (SELECT COALESCE(SUM(t.target),'0') as targetcount,u.smpin,u.userid FROM " . TABLE_USER . " as u JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code LEFT JOIN (SELECT id,smpin,target FROM " . TABLE_USER_SALETARGET . " WHERE sale_month>='" . $start_date . "' AND sale_month<='" . $end_date . "')as t ON t.smpin=u.smpin WHERE u.is_deleted=0 AND u.role>7 AND u.role<14 AND d.am_email='" . $email . "' " . $area_cond . " GROUP BY u.smpin ) as b ON a.userid=b.userid )c ORDER BY cast(sale_per as SIGNED) DESC,cast(salecount as SIGNED) DESC,cast(targetcount as SIGNED) DESC,last_sale ASC,first_sale ASC,userid ASC)as a )as f JOIN " . TABLE_USER . " as u ON f.userid=u.userid LEFT JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code WHERE 1=1 " . $user_cond . " LIMIT 1";
  833. if (count($user_arr) > 0) {
  834. $user_count_arr = $parent->getQueryValue($get_user_count_str);
  835. $outof = (count($user_count_arr) > 0) ? $user_count_arr[0]->user_count : '0';
  836. foreach ($user_arr as $mkey => $res_user) {
  837. $learning_arr = projectfunc::userLearningLevel($parent, $res_user->userid);
  838. $i = 0;
  839. $row++;
  840. if (empty($res_user->smpin)) {
  841. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  842. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  843. } else {
  844. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->smpin);
  845. }
  846. if (empty($res_user->fname)) {
  847. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  848. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  849. } else {
  850. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->fname . " " . $res_user->lname);
  851. }
  852. if (empty($res_user->mobileno)) {
  853. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  854. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  855. } else {
  856. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobileno);
  857. }
  858. if (empty($res_user->dealer_name)) {
  859. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  860. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  861. } else {
  862. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_name);
  863. }
  864. if (empty($res_user->city)) {
  865. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  866. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  867. } else {
  868. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->city);
  869. }
  870. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->salecount . "/" . $res_user->targetcount);
  871. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->rank);
  872. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $outof);
  873. if (empty($res_user->zm_name)) {
  874. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  875. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  876. } else {
  877. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->zm_name);
  878. }
  879. if (empty($res_user->rm_name)) {
  880. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  881. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  882. } else {
  883. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->rm_name);
  884. }
  885. if (empty($res_user->am_name)) {
  886. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  887. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  888. } else {
  889. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->am_name);
  890. }
  891. }
  892. }
  893. //LOG
  894. $logstr = 'SALES LEADERBOARD REPORT EXPORT';
  895. globalfunc::insertUserLog($parent, $logstr);
  896. $objPHPExcel->getActiveSheet()->setTitle('SALES LEADERBOARD REPORT');
  897. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  898. $fpath = "../../" . S3_REPORT_URL;
  899. $filename = "sales_leaderboard_report_" . uniqid() . ".xlsx";
  900. $objWriter->save($fpath . $filename);
  901. //CONNECT S3
  902. $s3 = awsfileserver::connectS3();
  903. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  904. //delete report
  905. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  906. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  907. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  908. }
  909. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  910. /* /////////////////////////////// ASSESSMENT LEADERBOARD REPORT EXPORT //////////////////////////////////////////////// */
  911. private function assessmentleaderboardexportold($parent)
  912. {
  913. globalfunc::checkMethodType($parent, array('POST'));
  914. globalfunc::checkParamCount($parent, 1);
  915. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  916. //FIELDS VALIDATION
  917. $REQUEST_KEYS = array('email' => 'string');
  918. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  919. $email = escape_str($parent->_request["email"]);
  920. //Excel class library
  921. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  922. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  923. $objPHPExcel = new PHPExcel();
  924. $objPHPExcel->setActiveSheetIndex(0);
  925. //EXCEL HEADER
  926. $row += 2;
  927. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "ASSESSMENT LEADERBOARD REPORT");
  928. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":J" . $row);
  929. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  930. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  931. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  932. $row += 2;
  933. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row, "I" . $row, "J" . $row, "K" . $row);
  934. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  935. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  936. //SET HEADER
  937. $header_arr = array('SMPIN', 'DSE Name', 'Mobile', 'Dealer Name', 'Location', 'Score', 'Position', 'Outof', 'ZM', 'RM', 'AM');
  938. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('15');
  939. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth('30');
  940. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('15');
  941. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth('25');
  942. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth('20');
  943. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth('10');
  944. $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth('10');
  945. $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth('10');
  946. $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth('30');
  947. $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth('30');
  948. $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth('30');
  949. $i = 0;
  950. foreach ($header_arr as $val) {
  951. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  952. }
  953. $role = $parent->current_user_role;
  954. $userdata = projectfunc::getuserdata($parent, $parent->current_user_id);
  955. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[2]);
  956. $order_by_cond = " ORDER BY f.rank,d.dealer_name ASC ";
  957. if (isset($filter_arr) && isset($filter_arr['sort'])) {
  958. //1-Dealer
  959. //2-Location
  960. switch ($filter_arr['sort']) {
  961. case '1':$order_by_cond = " ORDER BY d.dealer_name,f.rank ASC ";
  962. break;
  963. case '2':$order_by_cond = " ORDER BY f.rank,d.dealer_name ASC ";
  964. break;
  965. default:$order_by_cond = " ORDER BY f.rank,d.dealer_name ASC ";
  966. break;
  967. }
  968. }
  969. if (isset($parent->_request["search"])) {
  970. $search_txt = escape_str($parent->_request["search"]);
  971. $user_cond .= " AND (u.fname LIKE '%" . $search_txt . "%' OR u.lname LIKE '%" . $search_txt . "%' OR u.emp_code LIKE '%" . $search_txt . "%' OR d.dealer_name LIKE '%" . $search_txt . "%' OR d.zm_name LIKE '%" . $search_txt . "%' OR d.rm_name LIKE '%" . $search_txt . "%' OR d.am_name LIKE '%" . $search_txt . "%' OR d.city LIKE '%" . $search_txt . "%' )";
  972. }
  973. $get_dealer_str = "SELECT dealer_code,city,zone FROM " . DMS_DEALER . " WHERE am_email='" . $email . "' AND status='1' AND is_deleted='0' GROUP BY dealer_code ";
  974. $dealer_arr = $parent->getQueryValue($get_dealer_str);
  975. if (count($dealer_arr) > 0) {
  976. $zone_arr = array();
  977. $city_arr = array();
  978. foreach ($dealer_arr as $res_dealer) {
  979. if (!in_array($res_dealer->zone, $zone_arr)) {
  980. $zone_arr[] = $res_dealer->zone;
  981. }
  982. if (!in_array($res_dealer->city, $city_arr)) {
  983. $city_arr[] = $res_dealer->city;
  984. }
  985. $dealer_cond_arr[] = " filter_dealer LIKE '%" . $res_dealer->dealer_code . "%'";
  986. }
  987. $query_cond .= " AND ( filter_dealer='' OR " . @implode(" OR ", $dealer_cond_arr) . " ) ";
  988. if (count($zone_arr) > 0) {
  989. foreach ($zone_arr as $zone) {
  990. $zone_cond_arr[] = " filter_zone LIKE '%" . $zone . "%'";
  991. }
  992. $query_cond .= " AND (filter_zone='' OR " . @implode(" OR ", $zone_cond_arr) . " ) ";
  993. } else {
  994. $query_cond .= " AND (filter_zone='') ";
  995. }
  996. if (count($city_arr) > 0) {
  997. foreach ($city_arr as $city) {
  998. $city_cond_arr[] = " filter_region LIKE '%" . $city . "%'";
  999. }
  1000. $query_cond .= " AND (filter_region='' OR " . @implode(" OR ", $city_cond_arr) . " ) ";
  1001. } else {
  1002. $query_cond .= " AND (filter_region='') ";
  1003. }
  1004. } else {
  1005. $query_cond .= " AND (filter_dealer='' AND filter_region='' AND filter_zone='' ) ";
  1006. }
  1007. $outof = 0;
  1008. //GET ALL ASSESSMENT LIST WHICH PUBLISHED
  1009. $assessment_str = "SELECT a.* FROM `" . TABLE_ASSESSMENT . "` as a WHERE a.atype='0' AND a.assettypeid='1' AND a.publisheddate<='" . NOW . "' " . $query_cond;
  1010. $assessment_arr = $parent->getQueryValue($assessment_str);
  1011. $data_arr = array();
  1012. if (count($assessment_arr) > 0) {
  1013. foreach ($assessment_arr as $res_assess) {
  1014. $assessmentid_arr[] = $res_assess->assessmentid;
  1015. }
  1016. $parent->executeQuery("SET @rownum := 0");
  1017. $get_user_rank_str = "SELECT f.*,u.userid,u.fname,u.lname,u.mobileno,u.smpin,d.* FROM ( SELECT @rownum := @rownum + 1 AS rank,COALESCE(user_score,'0')as user_score,CASE WHEN user_score IS NULL THEN 0 ELSE (user_score/" . count($assessment_arr) . ") END as percentage_score,userid,total_time,last_modified FROM (SELECT SUM(highscore)as user_score,u.userid,COALESCE(ar.total_time,'0')as total_time,MAX(au.modified_on) as last_modified FROM " . TABLE_USER . " as u JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code JOIN (SELECT * FROM " . TABLE_ASSESSMENT_USER . " WHERE assessmentid IN (" . @implode(',', $assessmentid_arr) . ") AND highscorearid!=0 ) as au ON u.userid=au.userid LEFT JOIN (SELECT SUM(time_taken)as total_time,assessmentid,userid FROM " . TABLE_ASSESSMENTRESULT . " WHERE assessmentid IN (" . @implode(',', $assessmentid_arr) . ") GROUP BY userid )as ar ON u.userid=ar.userid WHERE u.role>7 AND u.role<14 AND u.is_deleted=0 AND d.am_email='" . $email . "' GROUP BY u.userid ORDER BY user_score DESC,ar.total_time ASC,last_modified ASC,u.userid ASC )as a )as f JOIN " . TABLE_USER . " as u ON f.userid=u.userid LEFT JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code WHERE 1=1 " . $user_cond . $order_by_cond;
  1018. $user_arr = $parent->getQueryValue($get_user_rank_str);
  1019. $get_user_count_str = "SELECT COUNT(u.userid)as user_count FROM ( SELECT COALESCE(user_score,'0')as user_score,CASE WHEN user_score IS NULL THEN 0 ELSE (user_score/" . count($assessment_arr) . ") END as percentage_score,userid,total_time,last_modified FROM (SELECT SUM(highscore)as user_score,u.userid,COALESCE(ar.total_time,'0')as total_time,MAX(au.modified_on) as last_modified FROM " . TABLE_USER . " as u JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code JOIN (SELECT * FROM " . TABLE_ASSESSMENT_USER . " WHERE assessmentid IN (" . @implode(',', $assessmentid_arr) . ") AND highscorearid!=0 ) as au ON u.userid=au.userid LEFT JOIN (SELECT SUM(time_taken)as total_time,assessmentid,userid FROM " . TABLE_ASSESSMENTRESULT . " WHERE assessmentid IN (" . @implode(',', $assessmentid_arr) . ") GROUP BY userid )as ar ON u.userid=ar.userid WHERE u.role>7 AND u.role<14 AND u.is_deleted=0 AND d.am_email='" . $email . "' GROUP BY u.userid ORDER BY user_score DESC,ar.total_time ASC,last_modified ASC,u.userid ASC )as a )as f JOIN " . TABLE_USER . " as u ON f.userid=u.userid LEFT JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code WHERE 1=1 " . $user_cond . " LIMIT 1";
  1020. if (count($user_arr) > 0) {
  1021. $user_count_arr = $parent->getQueryValue($get_user_count_str);
  1022. $outof = (count($user_count_arr) > 0) ? $user_count_arr[0]->user_count : '0';
  1023. foreach ($user_arr as $res_user) {
  1024. $i = 0;
  1025. $row++;
  1026. if (empty($res_user->smpin)) {
  1027. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1028. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1029. } else {
  1030. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->smpin);
  1031. }
  1032. if (empty($res_user->fname)) {
  1033. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1034. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1035. } else {
  1036. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->fname . " " . $res_user->lname);
  1037. }
  1038. if (empty($res_user->mobileno)) {
  1039. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1040. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1041. } else {
  1042. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobileno);
  1043. }
  1044. if (empty($res_user->dealer_name)) {
  1045. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1046. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1047. } else {
  1048. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_name);
  1049. }
  1050. if (empty($res_user->city)) {
  1051. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1052. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1053. } else {
  1054. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->city);
  1055. }
  1056. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->percentage_score . "%");
  1057. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->rank);
  1058. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $outof);
  1059. if (empty($res_user->zm_name)) {
  1060. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1061. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1062. } else {
  1063. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->zm_name);
  1064. }
  1065. if (empty($res_user->rm_name)) {
  1066. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1067. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1068. } else {
  1069. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->rm_name);
  1070. }
  1071. if (empty($res_user->am_name)) {
  1072. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1073. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1074. } else {
  1075. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->am_name);
  1076. }
  1077. }
  1078. }
  1079. }
  1080. //LOG
  1081. $logstr = 'ASSESSMENT LEADERBOARD REPORT EXPORT';
  1082. globalfunc::insertUserLog($parent, $logstr);
  1083. $objPHPExcel->getActiveSheet()->setTitle('ASSESSMENT LEADERBOARD REPORT');
  1084. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  1085. $fpath = "../../" . S3_REPORT_URL;
  1086. $filename = "assessment_leaderboard_report_" . uniqid() . ".xlsx";
  1087. $objWriter->save($fpath . $filename);
  1088. //CONNECT S3
  1089. $s3 = awsfileserver::connectS3();
  1090. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  1091. //delete report
  1092. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  1093. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  1094. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  1095. }
  1096. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  1097. /* /////////////////////////////// ASSESSMENT LEADERBOARD REPORT EXPORT //////////////////////////////////////////////// */
  1098. private function assessmentleaderboardexport($parent)
  1099. {
  1100. globalfunc::checkMethodType($parent, array('POST'));
  1101. globalfunc::checkParamCount($parent, 1);
  1102. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  1103. //FIELDS VALIDATION
  1104. $REQUEST_KEYS = array('email' => 'string');
  1105. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  1106. $email = escape_str($parent->_request["email"]);
  1107. if (count($parent->params) == 1) {
  1108. $get_dealer_str = "SELECT dealer_code,city,zone FROM " . DMS_DEALER . " WHERE am_email='" . $email . "' AND status='1' AND is_deleted='0' GROUP BY dealer_code ";
  1109. $dealer_arr = $parent->getQueryValue($get_dealer_str);
  1110. //AREA LEADERBOARD COND
  1111. //$dealer_code=$parent->current_user_data->dealer_code;
  1112. // $query_allareadealerarr=$parent->selectQuery(DMS_DEALER,"`dealer_code`,am_email "," dealer_code='".$dealer_code."' AND status='1' AND is_deleted='0'","1");
  1113. /*
  1114. $dealer_arr=array();
  1115. if($query_allareadealerarr['nr'])
  1116. {
  1117. $join_cond="JOIN ".DMS_DEALER." as d ON d.dealer_code=u.dealer_code ";
  1118. $area_cond=" and d.am_email ='".$query_allareadealerarr['result'][0]->am_email."'";
  1119. }else
  1120. {
  1121. $area_cond=" and u.dealer_code IN ('')";
  1122. }
  1123. */
  1124. $start_date = date('Y-m', strtotime(CUR_DATE)) . "-01";
  1125. $end_date = date('Y-m-t', strtotime(CUR_DATE));
  1126. $date_cond = " AND a.publisheddate>='" . $start_date . " 00:00:00' AND a.publisheddate<='" . $end_date . " 23:59:59'";
  1127. } else if (count($parent->params) == 2) {
  1128. //FOR PANINDIA,ZONE,REGION WISE LEADER BOARD
  1129. $dealer_code = $parent->current_user_data->dealer_code;
  1130. $type_data = explode('?', strtolower(escape_str($parent->params[1])));
  1131. switch ($type_data[0]) {
  1132. case "panindia":
  1133. $start_date = date('Y', strtotime(CUR_DATE)) . "-01-01";
  1134. $end_date = date('Y', strtotime(CUR_DATE)) . "-12-31";
  1135. //COND
  1136. $join_cond = 'JOIN ".DMS_DEALER." as d ON d.dealer_code=u.dealer_code ';
  1137. $area_cond = '';
  1138. $date_cond = " AND a.publisheddate>='" . $start_date . " 00:00:00' AND a.publisheddate<='" . $end_date . " 23:59:59'";
  1139. break;
  1140. case "zone":
  1141. $cur_month = date('m', strtotime(CUR_DATE));
  1142. /*if(in_array($cur_month,array('01','02','03','04','05','06')))
  1143. {
  1144. $start_date=date('Y', strtotime(CUR_DATE))."-01-01";
  1145. $end_date=date('Y',strtotime(CUR_DATE))."-06-30";
  1146. }else if(in_array($cur_month,array('07','08','09','10','11','12')))
  1147. {
  1148. $start_date=date('Y', strtotime(CUR_DATE))."-07-01";
  1149. $end_date=date('Y', strtotime(CUR_DATE))."-12-31";
  1150. }
  1151. */
  1152. $start_date = date('Y-m', strtotime(CUR_DATE)) . "-01";
  1153. $end_date = date('Y-m-t', strtotime(CUR_DATE));
  1154. $date_cond = " AND a.publisheddate>='" . $start_date . " 00:00:00' AND a.publisheddate<='" . $end_date . " 23:59:59'";
  1155. $get_dealer_str = "SELECT dealer_code,city,zone FROM " . DMS_DEALER . " WHERE zm_email='" . $email . "' AND status='1' AND is_deleted='0' GROUP BY dealer_code ";
  1156. $dealer_arr = $parent->getQueryValue($get_dealer_str);
  1157. if (count($dealer_arr) > 0) {
  1158. $join_cond = "JOIN " . DMS_DEALER . " as d ON d.dealer_code=u.dealer_code ";
  1159. $area_cond = " and d.zm_email ='" . $email . "'";
  1160. } else {
  1161. $area_cond = " and u.dealer_code IN ('')";
  1162. }
  1163. break;
  1164. case "region":
  1165. $cur_month = date('m', strtotime(CUR_DATE));
  1166. /* if(in_array($cur_month,array('01','02','03')))
  1167. {
  1168. $start_date=date('Y', strtotime(CUR_DATE))."-01-01";
  1169. $end_date=date('Y',strtotime(CUR_DATE))."-03-31";
  1170. }else if(in_array($cur_month,array('04','05','06')))
  1171. {
  1172. $start_date=date('Y', strtotime(CUR_DATE))."-04-01";
  1173. $end_date=date('Y',strtotime(CUR_DATE))."-06-30";
  1174. }else if(in_array($cur_month,array('07','08','09')))
  1175. {
  1176. $start_date=date('Y', strtotime(CUR_DATE))."-07-01";
  1177. $end_date=date('Y',strtotime(CUR_DATE))."-09-30";
  1178. }else if(in_array($cur_month,array('10','11','12')))
  1179. {
  1180. $start_date=date('Y', strtotime(CUR_DATE))."-10-01";
  1181. $end_date=date('Y', strtotime(CUR_DATE))."-12-31";
  1182. }
  1183. *
  1184. */
  1185. $start_date = date('Y-m', strtotime(CUR_DATE)) . "-01";
  1186. $end_date = date('Y-m-t', strtotime(CUR_DATE));
  1187. $date_cond = " AND a.publisheddate>='" . $start_date . " 00:00:00' AND a.publisheddate<='" . $end_date . " 23:59:59'";
  1188. $get_dealer_str = "SELECT dealer_code,city,zone FROM " . DMS_DEALER . " WHERE rm_email='" . $email . "' AND status='1' AND is_deleted='0' GROUP BY dealer_code ";
  1189. $dealer_arr = $parent->getQueryValue($get_dealer_str);
  1190. if (count($dealer_arr) > 0) {
  1191. $join_cond = "JOIN " . DMS_DEALER . " as d ON d.dealer_code=u.dealer_code ";
  1192. $area_cond = " and d.rm_email ='" . $email . "'";
  1193. } else {
  1194. $area_cond = " and u.dealer_code IN ('')";
  1195. }
  1196. break;
  1197. default:
  1198. $parent->response(array('response' => 'failed', 'message' => 'PAGE NOT FOUND'), 404);
  1199. break;
  1200. }
  1201. } else {
  1202. $parent->response(array('response' => 'failed', 'message' => 'PAGE NOT FOUND'), 404);
  1203. }
  1204. //Excel class library
  1205. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  1206. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  1207. $objPHPExcel = new PHPExcel();
  1208. $objPHPExcel->setActiveSheetIndex(0);
  1209. //EXCEL HEADER
  1210. $row += 2;
  1211. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "ASSESSMENT LEADERBOARD REPORT");
  1212. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":J" . $row);
  1213. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  1214. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  1215. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  1216. $row += 2;
  1217. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row, "I" . $row, "J" . $row, "K" . $row);
  1218. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  1219. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  1220. //SET HEADER
  1221. $header_arr = array('SMPIN', 'DSE Name', 'Mobile', 'Dealer Name', 'Location', 'Score', 'Position', 'Outof', 'ZM', 'RM', 'AM');
  1222. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('15');
  1223. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth('30');
  1224. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('15');
  1225. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth('25');
  1226. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth('20');
  1227. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth('10');
  1228. $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth('10');
  1229. $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth('10');
  1230. $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth('30');
  1231. $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth('30');
  1232. $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth('30');
  1233. $i = 0;
  1234. foreach ($header_arr as $val) {
  1235. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  1236. }
  1237. $role = $parent->current_user_role;
  1238. $userdata = projectfunc::getuserdata($parent, $parent->current_user_id);
  1239. // $filter_arr=globalfunc::getFilterValues($parent,$parent->params[2]);
  1240. // $order_by_cond=" ORDER BY f.rank,d.dealer_name ASC ";
  1241. // if(isset($filter_arr) && isset($filter_arr['sort']))
  1242. // {
  1243. // //1-Dealer
  1244. // //2-Location
  1245. // switch($filter_arr['sort'])
  1246. // {
  1247. // case '1': $order_by_cond=" ORDER BY d.dealer_name,f.rank ASC "; break;
  1248. // case '2': $order_by_cond=" ORDER BY f.rank,d.dealer_name ASC "; break;
  1249. // default: $order_by_cond=" ORDER BY f.rank,d.dealer_name ASC "; break;
  1250. // }
  1251. // }
  1252. // if(isset($parent->_request["search"]))
  1253. // {
  1254. // $search_txt = escape_str($parent->_request["search"]);
  1255. // $user_cond.=" AND (u.fname LIKE '%".$search_txt."%' OR u.lname LIKE '%".$search_txt."%' OR u.emp_code LIKE '%".$search_txt."%' OR d.dealer_name LIKE '%".$search_txt."%' OR d.zm_name LIKE '%".$search_txt."%' OR d.rm_name LIKE '%".$search_txt."%' OR d.am_name LIKE '%".$search_txt."%' OR d.city LIKE '%".$search_txt."%' )";
  1256. // }
  1257. $new_cond = 'AND a.user_type=0 ';
  1258. //GET ALL ASSESSMENT LIST WHICH PUBLISHED
  1259. $assessment_str = "SELECT a.* FROM `" . TABLE_ASSESSMENT . "` as a WHERE a.status='1' AND a.atype='0' AND a.assettypeid='1' " . $date_cond . $new_cond;
  1260. $assessment_arr = $parent->getQueryValue($assessment_str);
  1261. //ASSESSMENT COUNT
  1262. $assessment_count = (count($assessment_arr) > 0) ? count($assessment_arr) : '0';
  1263. // $outof=0;
  1264. //GET ALL ASSESSMENT LIST WHICH PUBLISHED
  1265. // $assessment_str = "SELECT a.* FROM `".TABLE_ASSESSMENT."` as a WHERE a.atype='0' AND a.assettypeid='1' AND a.publisheddate<='".NOW."' ".$query_cond;
  1266. // $assessment_arr=$parent->getQueryValue($assessment_str);
  1267. // $data_arr=array();
  1268. if (count($assessment_arr) > 0) {
  1269. foreach ($assessment_arr as $res_assess) {
  1270. $assessmentid_arr[] = $res_assess->assessmentid;
  1271. }
  1272. // $parent->executeQuery("SET @rownum := 0");
  1273. // $get_user_rank_str = "SELECT f.*,u.userid,u.fname,u.lname,d.* FROM ( SELECT @rownum := @rownum + 1 AS rank,COALESCE(user_score,'0')as user_score,CASE WHEN user_score IS NULL THEN 0 ELSE (user_score/".count($assessment_arr).") END as percentage_score,userid,total_time,last_modified FROM (SELECT SUM(highscore)as user_score,u.userid,COALESCE(ar.total_time,'0')as total_time,MAX(au.modified_on) as last_modified FROM ".TABLE_USER." as u JOIN (SELECT * FROM ".TABLE_ASSESSMENT_USER." WHERE assessmentid IN (".@implode(',',$assessmentid_arr).") AND highscorearid!=0 ) as au ON u.userid=au.userid LEFT JOIN (SELECT SUM(time_taken)as total_time,assessmentid,userid FROM ".TABLE_ASSESSMENTRESULT." WHERE assessmentid IN (".@implode(',',$assessmentid_arr).") GROUP BY userid )as ar ON u.userid=ar.userid WHERE u.role>='3' AND u.is_deleted=0 GROUP BY u.userid ORDER BY user_score DESC,ar.total_time ASC,last_modified ASC,u.userid ASC )as a )as f LEFT JOIN ".TABLE_USER." as u ON f.userid=u.userid LEFT JOIN ".DMS_DEALER." d ON u.dealer_code=d.dealer_code WHERE 1=1 AND d.am_email='".$email."' ".$user_cond.$order_by_cond;
  1274. // $user_arr=$parent->getQueryValue($get_user_rank_str);
  1275. //
  1276. //
  1277. // $get_user_count_str = "SELECT COUNT(u.userid)as user_count FROM ( SELECT COALESCE(user_score,'0')as user_score,CASE WHEN user_score IS NULL THEN 0 ELSE (user_score/".count($assessment_arr).") END as percentage_score,userid,total_time,last_modified FROM (SELECT SUM(highscore)as user_score,u.userid,COALESCE(ar.total_time,'0')as total_time,MAX(au.modified_on) as last_modified FROM ".TABLE_USER." as u JOIN (SELECT * FROM ".TABLE_ASSESSMENT_USER." WHERE assessmentid IN (".@implode(',',$assessmentid_arr).") AND highscorearid!=0 ) as au ON u.userid=au.userid LEFT JOIN (SELECT SUM(time_taken)as total_time,assessmentid,userid FROM ".TABLE_ASSESSMENTRESULT." WHERE assessmentid IN (".@implode(',',$assessmentid_arr).") GROUP BY userid )as ar ON u.userid=ar.userid WHERE u.role>='3' AND u.is_deleted=0 GROUP BY u.userid ORDER BY user_score DESC,ar.total_time ASC,last_modified ASC,u.userid ASC )as a )as f LEFT JOIN ".TABLE_USER." as u ON f.userid=u.userid LEFT JOIN ".DMS_DEALER." d ON u.dealer_code=d.dealer_code WHERE 1=1 AND d.am_email='".$email."' ".$user_cond." LIMIT 1";
  1278. if ($parent->current_user_role == '14') {
  1279. $area_cond .= " AND u.dealer_code='" . $dealer_code . "'";
  1280. }
  1281. $get_user_rank_str = "SELECT SUM(highscore)as user_score,u.userid,COALESCE(ar.total_time,'0')as total_time,MAX(au.modified_on) as last_modified,u.dealer_code,u.role,d.* FROM " . TABLE_USER . " as u JOIN (SELECT * FROM " . TABLE_ASSESSMENT_USER . " WHERE assessmentid IN (" . @implode(',', $assessmentid_arr) . ") AND highscorearid!=0 ) as au ON u.userid=au.userid LEFT JOIN (SELECT SUM(time_taken)as total_time,assessmentid,userid FROM " . TABLE_ASSESSMENTRESULT . " WHERE assessmentid IN (" . @implode(',', $assessmentid_arr) . ") GROUP BY userid )as ar ON u.userid=ar.userid " . $join_cond . " WHERE u.role>'7' AND u.role<14 AND u.is_deleted=0 " . $area_cond . " GROUP BY u.userid ORDER BY user_score DESC,ar.total_time ASC,last_modified ASC,u.userid ASC ";
  1282. $get_user_rank_arr = $parent->getQueryValue($get_user_rank_str);
  1283. if ($get_user_rank_arr) {
  1284. foreach ($get_user_rank_arr as $res_user) {
  1285. $user_data_arr = new stdClass();
  1286. $get_time_str = "SELECT * FROM " . TABLE_ASSESSMENTRESULT . " WHERE assessmentid IN (" . @implode(',', $assessmentid_arr) . ") AND userid='" . $res_user->userid . "'";
  1287. $get_time_arr = $parent->getQueryValue($get_time_str);
  1288. $user_data_arr->user = projectfunc::getuserdata($parent, $res_user->userid);
  1289. $user_data_arr->rank = '0';
  1290. $user_data_arr->tot_user_score = (count($get_time_arr) > 0) ? $res_user->user_score : '-';
  1291. $user_data_arr->percentage_score = (count($get_time_arr) > 0) ? '0' : '-';
  1292. $user_data_arr->total_time = $res_user->total_time;
  1293. $user_data_arr->last_time = (count($get_time_arr) > 0) ? $res_user->last_modified : '-';
  1294. //GET EACH USER COND
  1295. $getuser_data = projectfunc::getuserdata($parent, $res_user->userid);
  1296. if ($getuser_data->role) {
  1297. $user_cond[] = " (a.filter_role LIKE '%" . $getuser_data->role . "%' OR a.filter_role='')";
  1298. }
  1299. if ($getuser_data->zone) {
  1300. $user_cond[] = " (a.filter_zone LIKE '%" . $getuser_data->zone . "%' OR a.filter_zone='')";
  1301. }
  1302. if ($getuser_data->city) {
  1303. $user_cond[] = " (a.filter_region LIKE '%" . $getuser_data->city . "%' OR a.filter_region='')";
  1304. }
  1305. if ($getuser_data->dealer_code) {
  1306. $user_cond[] = " (a.filter_dealer LIKE '%" . $getuser_data->dealer_code . "%' OR a.filter_dealer='')";
  1307. }
  1308. $assess_user_cond = " AND " . @implode(' AND ', $user_cond);
  1309. $count_assessment_str = "SELECT COUNT(a.assessmentid) as acount FROM `" . TABLE_ASSESSMENT . "` as a WHERE a.status='1' AND a.atype='0' AND a.assettypeid='1' AND a.publisheddate>='" . $start_date . " 00:00:00' AND a.publisheddate<='" . $end_date . " 23:59:59' AND a.enddate>='" . $user_data_arr->user->user_created_on . "' AND assessmentid IN (" . @implode(',', $assessmentid_arr) . ") " . $assess_user_cond . " LIMIT 1";
  1310. $count_assessment_arr = $parent->getQueryValue($count_assessment_str);
  1311. $user_data_arr->percentage_score = (count($assessment_arr) > 0) ? round($res_user->user_score / $count_assessment_arr[0]->acount) : '0';
  1312. $user_data_arr->percentage = $user_data_arr->percentage_score;
  1313. if ((($assessment_count / $count_assessment_arr[0]->acount) * 100) >= MIN_ASSESSMENT_PERCENT) {
  1314. $data_arr[] = $user_data_arr;
  1315. }
  1316. }
  1317. }
  1318. if (count($data_arr) > 0) {
  1319. array_multisort(array_column($data_arr, 'percentage_score'), SORT_DESC, array_column($rank_arr, 'total_time'), SORT_ASC, $rank_arr);
  1320. $rank = 1;
  1321. foreach ($data_arr as $key => $res) {
  1322. $data_arr[$key]->rank = $rank;
  1323. $rank++;
  1324. }
  1325. }
  1326. if (count($data_arr) > 0) {
  1327. $outof = count($data_arr);
  1328. //$user_count_arr=$parent->getQueryValue($get_user_count_str);
  1329. //$outof=(count($user_count_arr)>0)?$user_count_arr[0]->user_count:'0';
  1330. foreach ($data_arr as $res_user) {
  1331. $i = 0;
  1332. $row++;
  1333. if (empty($res_user->smpin)) {
  1334. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1335. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1336. } else {
  1337. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->user->smpin);
  1338. }
  1339. if (empty($res_user->fname)) {
  1340. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1341. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1342. } else {
  1343. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->user->fname . " " . $res_user->user->lname);
  1344. }
  1345. if (empty($res_user->mobileno)) {
  1346. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1347. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1348. } else {
  1349. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->user->mobileno);
  1350. }
  1351. if (empty($res_user->dealer_name)) {
  1352. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1353. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1354. } else {
  1355. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->user->dealer->dealer_name);
  1356. }
  1357. if (empty($res_user->city)) {
  1358. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1359. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1360. } else {
  1361. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->user->city);
  1362. }
  1363. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->percentage_score . "%");
  1364. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->rank);
  1365. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $outof);
  1366. if (empty($res_user->zm_name)) {
  1367. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1368. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1369. } else {
  1370. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->user->dealer->zm_name);
  1371. }
  1372. if (empty($res_user->rm_name)) {
  1373. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1374. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1375. } else {
  1376. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->user->dealer->rm_name);
  1377. }
  1378. if (empty($res_user->am_name)) {
  1379. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1380. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1381. } else {
  1382. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->user->dealer->am_name);
  1383. }
  1384. }
  1385. }
  1386. }
  1387. //LOG
  1388. $logstr = 'ASSESSMENT LEADERBOARD REPORT EXPORT';
  1389. globalfunc::insertUserLog($parent, $logstr);
  1390. $objPHPExcel->getActiveSheet()->setTitle('ASSESSMENT LEADERBOARD REPORT');
  1391. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  1392. $fpath = "../../" . S3_REPORT_URL;
  1393. $filename = "assessment_leaderboard_report_" . uniqid() . ".xlsx";
  1394. $objWriter->save($fpath . $filename);
  1395. //CONNECT S3
  1396. $s3 = awsfileserver::connectS3();
  1397. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  1398. //delete report
  1399. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  1400. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  1401. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  1402. }
  1403. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  1404. /* /////////////////////////////// REGISTRATION REPORT EXPORT //////////////////////////////////////////////// */
  1405. private function registrationreportexport($parent)
  1406. {
  1407. globalfunc::checkMethodType($parent, array('POST'));
  1408. globalfunc::checkParamCount($parent, 1);
  1409. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  1410. //Excel class library
  1411. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  1412. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  1413. $objPHPExcel = new PHPExcel();
  1414. $objPHPExcel->setActiveSheetIndex(0);
  1415. //EXCEL HEADER
  1416. $row += 2;
  1417. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "REGISTRATION REPORT");
  1418. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":I" . $row);
  1419. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  1420. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  1421. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  1422. $row += 2;
  1423. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row, "I" . $row, "J" . $row);
  1424. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  1425. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  1426. //SET HEADER
  1427. $header_arr = array('SMPIN', 'DSE Name', 'Mobile', 'Dealer Name', 'Location', 'Status', 'Registered On', 'ZM', 'RM', 'AM');
  1428. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('15');
  1429. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth('30');
  1430. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('15');
  1431. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth('25');
  1432. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth('20');
  1433. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth('15');
  1434. $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth('15');
  1435. $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth('30');
  1436. $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth('30');
  1437. $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth('30');
  1438. $i = 0;
  1439. foreach ($header_arr as $val) {
  1440. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  1441. }
  1442. if ($parent->current_user_role == '7') {
  1443. $role = $parent->current_user_role;
  1444. $userdata = projectfunc::getuserdata($parent, $parent->current_user_id);
  1445. $emailid = $userdata->emailid;
  1446. } else {
  1447. //AREA MANAGER LEVEL REPORT
  1448. $role = '7';
  1449. //FIELDS VALIDATION
  1450. $REQUEST_KEYS = array('area' => 'string');
  1451. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  1452. $area_manager = escape_str($parent->_request["area"]);
  1453. $emailid = $area_manager;
  1454. }
  1455. $user_cond = "";
  1456. $dealer_code_cond = '';
  1457. switch ($role) {
  1458. case '3': //HO Manager
  1459. $user_cond .= "";
  1460. break;
  1461. case '4': //Zonal Manager
  1462. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE zm_email='" . $emailid . "' AND status='1' AND is_deleted='0')";
  1463. break;
  1464. case '5': //Trainer
  1465. $get_trainer_str = "SELECT h.* FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.emailid='" . $emailid . "' LIMIT 1";
  1466. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  1467. $zone_cond .= (count($trainer_arr) > 0) ? " zone='" . $trainer_arr[0]->zone . "'" : " zone='0'";
  1468. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE " . $zone_cond . " AND status='1' AND is_deleted='0')";
  1469. break;
  1470. case '6': //Regional Manager
  1471. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE rm_email='" . $emailid . "' AND status='1' AND is_deleted='0')";
  1472. break;
  1473. case '7': //Area Manager
  1474. if ($parent->current_user_role == '14') {
  1475. $dealer_code_cond = " AND dealer_code='" . $parent->current_user_data->dealer_code . "'";
  1476. }
  1477. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE am_email='" . $emailid . "' " . $dealer_code_cond . " AND status='1' AND is_deleted='0')";
  1478. break;
  1479. default:$parent->response(array('response' => 'failed', 'message' => 'Sorry No access'), 401);
  1480. break;
  1481. }
  1482. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[0]);
  1483. $order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  1484. if (isset($filter_arr) && isset($filter_arr['sort'])) {
  1485. //1-Dealer
  1486. //2-Location
  1487. //3-AM
  1488. //4-RM
  1489. //5-ZM
  1490. switch ($filter_arr['sort']) {
  1491. case '1':$order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  1492. break;
  1493. case '2':$order_by_cond = "ORDER BY d.city,u.fname ASC ";
  1494. break;
  1495. case '3':$order_by_cond = "ORDER BY d.am_email,u.fname ASC ";
  1496. break;
  1497. case '4':$order_by_cond = "ORDER BY d.rm_email,u.fname ASC ";
  1498. break;
  1499. case '5':$order_by_cond = "ORDER BY d.zm_email,u.fname ASC ";
  1500. break;
  1501. default:$order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  1502. break;
  1503. }
  1504. }
  1505. if (isset($parent->_request["search"])) {
  1506. $search_txt = escape_str($parent->_request["search"]);
  1507. $user_cond .= " AND (e.fname LIKE '%" . $search_txt . "%' OR e.lname LIKE '%" . $search_txt . "%' OR e.smpin LIKE '%" . $search_txt . "%' OR d.dealer_name LIKE '%" . $search_txt . "%' OR d.zm_name LIKE '%" . $search_txt . "%' OR d.rm_name LIKE '%" . $search_txt . "%' OR d.am_name LIKE '%" . $search_txt . "%' OR d.city LIKE '%" . $search_txt . "%' )";
  1508. }
  1509. $get_user_str = "SELECT e.`smpin`, e.`emp_code`,e. `fname`,e.`lname`,e.mobile,e.emp_code,u.userid,d.city,u.dealer_code,d.dealer_name,d.zm_name,d.rm_name,d.am_name,l.created_on as register_date,u.userid FROM " . DMS_EMPLOYEE . " e LEFT JOIN " . TABLE_USER . " u ON u.smpin=e.smpin LEFT JOIN " . DMS_DEALER . " d ON e.dealer_code=d.dealer_code LEFT JOIN (SELECT * FROM " . TABLE_USER_LOG . " WHERE module='REGISTER' )as l ON u.userid=l.userid WHERE e.status='1' AND e.smpin!='' " . $user_cond . $order_by_cond;
  1510. $user_arr = $parent->getQueryValue($get_user_str);
  1511. if (count($user_arr) > 0) {
  1512. foreach ($user_arr as $mkey => $res_user) {
  1513. $i = 0;
  1514. $row++;
  1515. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->smpin);
  1516. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->fname . " " . $res_user->lname);
  1517. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobile);
  1518. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_name);
  1519. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->city);
  1520. $status = ($res_user->userid) ? 'Active' : '';
  1521. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $status);
  1522. $register_date = ($res_user->register_date) ? date('d-m-Y', strtotime($res_user->register_date)) : '-';
  1523. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $register_date);
  1524. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->zm_name);
  1525. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->rm_name);
  1526. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->am_name);
  1527. }
  1528. }
  1529. //LOG
  1530. $logstr = 'REGISTRATION REPORT EXPORT';
  1531. globalfunc::insertUserLog($parent, $logstr);
  1532. $objPHPExcel->getActiveSheet()->setTitle('REGISTRATION REPORT');
  1533. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  1534. $fpath = "../../" . S3_REPORT_URL;
  1535. $filename = "registration_report_" . uniqid() . ".xlsx";
  1536. $objWriter->save($fpath . $filename);
  1537. //CONNECT S3
  1538. $s3 = awsfileserver::connectS3();
  1539. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  1540. //delete report
  1541. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  1542. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  1543. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  1544. }
  1545. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  1546. /* /////////////////////////////// COURSE REPORT EXPORT //////////////////////////////////////////////// */
  1547. private function coursereportexport($parent)
  1548. {
  1549. globalfunc::checkMethodType($parent, array('POST'));
  1550. globalfunc::checkParamCount($parent, 1);
  1551. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  1552. //Excel class library
  1553. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  1554. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  1555. $objPHPExcel = new PHPExcel();
  1556. $objPHPExcel->setActiveSheetIndex(0);
  1557. //EXCEL HEADER
  1558. $row += 2;
  1559. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "COURSE COMPLETION REPORT");
  1560. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":H" . $row);
  1561. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  1562. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  1563. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  1564. $row += 2;
  1565. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row, "I" . $row);
  1566. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  1567. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  1568. //SET HEADER
  1569. $header_arr = array('SMPIN', 'DSE Name', 'Mobile', 'Dealer Name', 'Location', 'Overall Progress %', 'ZM', 'RM', 'AM');
  1570. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('15');
  1571. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth('30');
  1572. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('15');
  1573. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth('25');
  1574. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth('20');
  1575. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth('15');
  1576. $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth('30');
  1577. $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth('30');
  1578. $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth('30');
  1579. $i = 0;
  1580. foreach ($header_arr as $val) {
  1581. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  1582. }
  1583. //AREA MANAGER SELF
  1584. if ($parent->current_user_role == '7') {
  1585. $role = $parent->current_user_role;
  1586. $userdata = projectfunc::getuserdata($parent, $parent->current_user_id);
  1587. $emailid = $userdata->emailid;
  1588. } else {
  1589. //AREA MANAGER LEVEL REPORT
  1590. $role = '7';
  1591. //FIELDS VALIDATION
  1592. $REQUEST_KEYS = array('area' => 'string');
  1593. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  1594. $area_manager = escape_str($parent->_request["area"]);
  1595. $emailid = $area_manager;
  1596. }
  1597. $user_cond = "";
  1598. $dealer_code_cond = '';
  1599. switch ($role) {
  1600. case '3': //HO Manager
  1601. $user_cond .= "";
  1602. break;
  1603. case '4': //Zonal Manager
  1604. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE zm_email='" . $emailid . "' AND status='1' AND is_deleted='0')";
  1605. break;
  1606. case '5': //Trainer
  1607. $get_trainer_str = "SELECT h.* FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.emailid='" . $emailid . "' LIMIT 1";
  1608. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  1609. $zone_cond .= (count($trainer_arr) > 0) ? " zone='" . $trainer_arr[0]->zone . "'" : " zone='0'";
  1610. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE " . $zone_cond . " AND status='1' AND is_deleted='0')";
  1611. break;
  1612. case '6': //Regional Manager
  1613. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE rm_email='" . $emailid . "' AND status='1' AND is_deleted='0')";
  1614. break;
  1615. case '7': //Area Manager
  1616. if ($parent->current_user_role == '14') {
  1617. $dealer_code_cond = " AND dealer_code='" . $parent->current_user_data->dealer_code . "'";
  1618. }
  1619. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE am_email='" . $emailid . "' " . $dealer_code_cond . " AND status='1' AND is_deleted='0')";
  1620. break;
  1621. default:$parent->response(array('response' => 'failed', 'message' => 'Sorry No access'), 401);
  1622. break;
  1623. }
  1624. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[0]);
  1625. $order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  1626. if (isset($filter_arr) && isset($filter_arr['sort'])) {
  1627. //1-Dealer
  1628. //2-Location
  1629. //3-AM
  1630. //4-RM
  1631. //5-ZM
  1632. switch ($filter_arr['sort']) {
  1633. case '1':$order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  1634. break;
  1635. case '2':$order_by_cond = "ORDER BY d.city,u.fname ASC ";
  1636. break;
  1637. case '3':$order_by_cond = "ORDER BY d.am_email,u.fname ASC ";
  1638. break;
  1639. case '4':$order_by_cond = "ORDER BY d.rm_email,u.fname ASC ";
  1640. break;
  1641. case '5':$order_by_cond = "ORDER BY d.zm_email,u.fname ASC ";
  1642. break;
  1643. default:$order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  1644. break;
  1645. }
  1646. }
  1647. if (isset($parent->_request["search"])) {
  1648. $search_txt = escape_str($parent->_request["search"]);
  1649. $user_cond .= " AND (e.fname LIKE '%" . $search_txt . "%' OR e.lname LIKE '%" . $search_txt . "%' OR e.smpin LIKE '%" . $search_txt . "%' OR d.dealer_name LIKE '%" . $search_txt . "%' OR d.zm_name LIKE '%" . $search_txt . "%' OR d.rm_name LIKE '%" . $search_txt . "%' OR d.am_name LIKE '%" . $search_txt . "%' OR d.city LIKE '%" . $search_txt . "%' )";
  1650. }
  1651. $get_user_str = "SELECT u.userid,u.fname,u.lname,u.smpin,u.emp_code,u.mobileno,d.city,u.dealer_code,d.dealer_name,d.zm_name,d.rm_name,d.am_name FROM " . TABLE_USER . " u LEFT JOIN " . DMS_EMPLOYEE . " e ON u.smpin=e.smpin LEFT JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code WHERE u.status='1' AND u.is_deleted='0' AND u.role>7 AND u.role<14 " . $user_cond . $order_by_cond . $limit_cond;
  1652. $user_arr = $parent->getQueryValue($get_user_str);
  1653. if (count($user_arr) > 0) {
  1654. foreach ($user_arr as $mkey => $res_user) {
  1655. $i = 0;
  1656. $row++;
  1657. if (empty($res_user->smpin)) {
  1658. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1659. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1660. } else {
  1661. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->smpin);
  1662. }
  1663. if (empty($res_user->fname)) {
  1664. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1665. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1666. } else {
  1667. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->fname . " " . $res_user->lname);
  1668. }
  1669. if (empty($res_user->mobileno)) {
  1670. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1671. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1672. } else {
  1673. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobileno);
  1674. }
  1675. if (empty($res_user->dealer_name)) {
  1676. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1677. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1678. } else {
  1679. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_name);
  1680. }
  1681. if (empty($res_user->city)) {
  1682. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1683. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1684. } else {
  1685. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->city);
  1686. }
  1687. $content_arr = projectfunc::userCourseCompleteStatus($parent, $res_user->userid);
  1688. $percentage = ($content_arr['total'] > 0) ? round(($content_arr['completed'] / $content_arr['total']) * 100) : '0';
  1689. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $percentage . "%");
  1690. if (empty($res_user->zm_name)) {
  1691. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1692. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1693. } else {
  1694. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->zm_name);
  1695. }
  1696. if (empty($res_user->rm_name)) {
  1697. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1698. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1699. } else {
  1700. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->rm_name);
  1701. }
  1702. if (empty($res_user->am_name)) {
  1703. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1704. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1705. } else {
  1706. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->am_name);
  1707. }
  1708. }
  1709. }
  1710. //LOG
  1711. $logstr = 'COURSE COMPLETION REPORT EXPORT';
  1712. globalfunc::insertUserLog($parent, $logstr);
  1713. $objPHPExcel->getActiveSheet()->setTitle('COURSE COMPLETION REPORT');
  1714. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  1715. $fpath = "../../" . S3_REPORT_URL;
  1716. $filename = "course_completion_report_" . uniqid() . ".xlsx";
  1717. $objWriter->save($fpath . $filename);
  1718. //CONNECT S3
  1719. $s3 = awsfileserver::connectS3();
  1720. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  1721. //delete report
  1722. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  1723. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  1724. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  1725. }
  1726. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  1727. /* /////////////////////////////// SALES TARGET REPORT EXPORT //////////////////////////////////////////////// */
  1728. private function salestargetreportexport($parent)
  1729. {
  1730. globalfunc::checkMethodType($parent, array('POST'));
  1731. globalfunc::checkParamCount($parent, 3);
  1732. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  1733. $year_data = escape_str($parent->params[1]);
  1734. $last_data = escape_str($parent->params[2]);
  1735. $last_data_arr = explode('?', $last_data);
  1736. $month_data = escape_str(trim($last_data_arr[0]));
  1737. //Excel class library
  1738. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  1739. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  1740. $objPHPExcel = new PHPExcel();
  1741. $objPHPExcel->setActiveSheetIndex(0);
  1742. //EXCEL HEADER
  1743. $row += 2;
  1744. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "SALES TARGET REPORT");
  1745. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":H" . $row);
  1746. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  1747. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  1748. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  1749. $row += 2;
  1750. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row, "I" . $row);
  1751. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  1752. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  1753. //SET HEADER
  1754. $header_arr = array('SMPIN', 'DSE Name', 'Mobile', 'Dealer Name', 'Location', 'Sales Target', 'ZM', 'RM', 'AM');
  1755. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('15');
  1756. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth('30');
  1757. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('15');
  1758. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth('25');
  1759. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth('20');
  1760. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth('15');
  1761. $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth('30');
  1762. $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth('30');
  1763. $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth('30');
  1764. $i = 0;
  1765. foreach ($header_arr as $val) {
  1766. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  1767. }
  1768. //AREA MANAGER SELF
  1769. if ($parent->current_user_role == '7') {
  1770. $role = $parent->current_user_role;
  1771. $userdata = projectfunc::getuserdata($parent, $parent->current_user_id);
  1772. $emailid = $userdata->emailid;
  1773. } else {
  1774. //AREA MANAGER LEVEL REPORT
  1775. $role = '7';
  1776. //FIELDS VALIDATION
  1777. $REQUEST_KEYS = array('area' => 'string');
  1778. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  1779. $area_manager = escape_str($parent->_request["area"]);
  1780. $emailid = $area_manager;
  1781. }
  1782. $user_cond = "";
  1783. switch ($role) {
  1784. case '3': //HO Manager
  1785. $user_cond .= "";
  1786. break;
  1787. case '4': //Zonal Manager
  1788. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE zm_email='" . $emailid . "' AND status='1' AND is_deleted='0')";
  1789. break;
  1790. case '5': //Trainer
  1791. $get_trainer_str = "SELECT h.* FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.emailid='" . $emailid . "' LIMIT 1";
  1792. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  1793. $zone_cond .= (count($trainer_arr) > 0) ? " zone='" . $trainer_arr[0]->zone . "'" : " zone='0'";
  1794. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE " . $zone_cond . " AND status='1' AND is_deleted='0')";
  1795. break;
  1796. case '6': //Regional Manager
  1797. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE rm_email='" . $emailid . "' AND status='1' AND is_deleted='0')";
  1798. break;
  1799. case '7': //Area Manager
  1800. if ($parent->current_user_role == '14') {
  1801. $dealer_code_cond = " AND dealer_code='" . $parent->current_user_data->dealer_code . "'";
  1802. }
  1803. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE am_email='" . $emailid . "' " . $dealer_code_cond . " AND status='1' AND is_deleted='0')";
  1804. break;
  1805. default:$parent->response(array('response' => 'failed', 'message' => 'Sorry No access'), 401);
  1806. break;
  1807. }
  1808. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[2]);
  1809. //SORT
  1810. $order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  1811. if (isset($filter_arr) && isset($filter_arr['sort'])) {
  1812. //1-Dealer
  1813. //2-Location
  1814. //3-AM
  1815. //4-RM
  1816. //5-ZM
  1817. switch ($filter_arr['sort']) {
  1818. case '1':$order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  1819. break;
  1820. case '2':$order_by_cond = "ORDER BY d.city,u.fname ASC ";
  1821. break;
  1822. case '3':$order_by_cond = "ORDER BY d.am_email,u.fname ASC ";
  1823. break;
  1824. case '4':$order_by_cond = "ORDER BY d.rm_email,u.fname ASC ";
  1825. break;
  1826. case '5':$order_by_cond = "ORDER BY d.zm_email,u.fname ASC ";
  1827. break;
  1828. default:$order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  1829. break;
  1830. }
  1831. }
  1832. if (isset($parent->_request["search"])) {
  1833. $search_txt = escape_str($parent->_request["search"]);
  1834. $user_cond .= " AND (e.fname LIKE '%" . $search_txt . "%' OR e.lname LIKE '%" . $search_txt . "%' OR e.smpin LIKE '%" . $search_txt . "%' OR d.dealer_name LIKE '%" . $search_txt . "%' OR d.zm_name LIKE '%" . $search_txt . "%' OR d.rm_name LIKE '%" . $search_txt . "%' OR d.am_name LIKE '%" . $search_txt . "%' OR d.city LIKE '%" . $search_txt . "%' )";
  1835. }
  1836. $get_user_str = "SELECT e.`smpin`, e.`emp_code`,e. `fname`,e.`lname`,e.emp_code,u.userid,e.mobileno,d.city,u.dealer_code,d.dealer_name,d.zm_name,d.rm_name,d.am_name FROM " . DMS_EMPLOYEE . " e LEFT JOIN " . TABLE_USER . " u ON u.smpin=e.smpin LEFT JOIN " . DMS_DEALER . " d ON e.dealer_code=d.dealer_code WHERE e.status='1' AND e.smpin!='' " . $user_cond . $order_by_cond;
  1837. $user_arr = $parent->getQueryValue($get_user_str);
  1838. if (count($user_arr) > 0) {
  1839. foreach ($user_arr as $mkey => $res_user) {
  1840. $i = 0;
  1841. $row++;
  1842. if (empty($res_user->smpin)) {
  1843. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1844. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1845. } else {
  1846. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->smpin);
  1847. }
  1848. if (empty($res_user->fname)) {
  1849. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1850. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1851. } else {
  1852. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->fname . " " . $res_user->lname);
  1853. }
  1854. if (empty($res_user->mobileno)) {
  1855. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1856. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1857. } else {
  1858. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobileno);
  1859. }
  1860. if (empty($res_user->dealer_name)) {
  1861. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1862. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1863. } else {
  1864. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_name);
  1865. }
  1866. if (empty($res_user->city)) {
  1867. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1868. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1869. } else {
  1870. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->city);
  1871. }
  1872. //$content_arr=projectfunc::userCourseCompleteStatus($parent,$res_user->userid);
  1873. //$percentage=($content_arr['total']>0)?round(($content_arr['completed']/$content_arr['total'])*100):'0';
  1874. $user_target = projectfunc::userSmpinSalesTarget($parent, $res_user->smpin, '', $year_data, $month_data);
  1875. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $user_target);
  1876. if (empty($res_user->zm_name)) {
  1877. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1878. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1879. } else {
  1880. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->zm_name);
  1881. }
  1882. if (empty($res_user->rm_name)) {
  1883. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1884. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1885. } else {
  1886. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->rm_name);
  1887. }
  1888. if (empty($res_user->am_name)) {
  1889. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  1890. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  1891. } else {
  1892. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->am_name);
  1893. }
  1894. }
  1895. }
  1896. //LOG
  1897. $logstr = 'SALES TARGET EXPORT';
  1898. globalfunc::insertUserLog($parent, $logstr);
  1899. $objPHPExcel->getActiveSheet()->setTitle('SALES TARGET REPORT');
  1900. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  1901. $fpath = "../../" . S3_REPORT_URL;
  1902. $filename = "sales_target_report_" . uniqid() . ".xlsx";
  1903. $objWriter->save($fpath . $filename);
  1904. //CONNECT S3
  1905. $s3 = awsfileserver::connectS3();
  1906. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  1907. //delete report
  1908. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  1909. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  1910. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  1911. }
  1912. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  1913. /* /////////////////////////////// SURVEY REPORT EXPORT //////////////////////////////////////////////// */
  1914. private function surveyuserreportexport($parent)
  1915. {
  1916. globalfunc::checkMethodType($parent, array('GET'));
  1917. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  1918. //FIELDS VALIDATION
  1919. globalfunc::checkParamCount($parent, 3);
  1920. $assessmentid = escape_str($parent->params[1]);
  1921. $userid = escape_str($parent->params[2]);
  1922. $query_str = "SELECT assessmentid,assessmentname FROM " . TABLE_ASSESSMENT . " WHERE status='1' AND assettypeid='2' AND assessmentid='" . $assessmentid . "' AND publisheddate<='" . NOW . "' LIMIT 1";
  1923. $query_arr = $parent->getQueryValue($query_str);
  1924. if (!count($query_arr) > 0) {
  1925. $parent->response(array('response' => 'failed', 'message' => $this->page_data["error9"]), 406);
  1926. }
  1927. //GET USER ATTENTED
  1928. $query_assess_str = "SELECT * FROM " . TABLE_ASSESSMENT_USER . " WHERE userid='" . $userid . "' AND assessmentid='" . $assessmentid . "' AND highscorearid!='0' LIMIT 1";
  1929. $query_assess_arr = $parent->getQueryValue($query_assess_str);
  1930. if (!count($query_assess_arr) > 0) {
  1931. $parent->response(array('response' => 'failed', 'message' => $this->page_data["error10"]), 406);
  1932. }
  1933. //GET USER RESULT
  1934. $query_res_str = "SELECT au.* FROM " . TABLE_ASSESSMENT_USERRESULT . " as au JOIN " . TABLE_ASSESSMENTRESULT . " as ar ON au.arid=ar.arid WHERE au.userid='" . $userid . "' AND au.assessmentid='" . $assessmentid . "' AND au.arid='" . $query_assess_arr[0]->highscorearid . "' GROUP BY au.arid,au.aqid";
  1935. $query_assess_res_arr = $parent->getQueryValue($query_res_str);
  1936. if (!count($query_assess_res_arr) > 0) {
  1937. $parent->response(array('response' => 'failed', 'message' => $this->page_data["error10"]), 406);
  1938. }
  1939. //GET USER
  1940. $user_data = projectfunc::getuserdata($parent, $userid);
  1941. //Excel class library
  1942. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  1943. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  1944. $objPHPExcel = new PHPExcel();
  1945. $objPHPExcel->setActiveSheetIndex(0);
  1946. //EXCEL HEADER
  1947. $row = 2;
  1948. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "FEEDBACK REPORT");
  1949. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":H" . $row);
  1950. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  1951. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  1952. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  1953. //EXCEL HEADER
  1954. $row += 2;
  1955. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(12);
  1956. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "Name : " . $user_data->fname . " " . $user_data->lname);
  1957. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":C" . $row);
  1958. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  1959. $objPHPExcel->getActiveSheet()->getStyle("D" . $row)->getFont()->setSize(12);
  1960. $objPHPExcel->getActiveSheet()->SetCellValue('D' . $row, "SMPIN : " . $user_data->smpin);
  1961. $objPHPExcel->getActiveSheet()->getStyle("D" . $row)->getFont()->setBold(true);
  1962. $dealer = (isset($user_data->dealer) && count($user_data->dealer) > 0) ? $user_data->dealer->dealer_name . " " . $user_data->dealer->dealer_code : '';
  1963. $row += 1;
  1964. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(12);
  1965. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "Dealer : " . $dealer);
  1966. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":C" . $row);
  1967. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  1968. $objPHPExcel->getActiveSheet()->getStyle("D" . $row)->getFont()->setSize(12);
  1969. $objPHPExcel->getActiveSheet()->SetCellValue('D' . $row, "Date : " . date('d-m-Y h:i A', strtotime($query_assess_res_arr[0]->created_on)));
  1970. $objPHPExcel->getActiveSheet()->getStyle("D" . $row)->getFont()->setBold(true);
  1971. $row += 2;
  1972. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row);
  1973. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  1974. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  1975. //SET HEADER
  1976. $header_arr = array('Sno', 'Question', "Answer");
  1977. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('10');
  1978. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth('30');
  1979. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('25');
  1980. $i = 0;
  1981. foreach ($header_arr as $val) {
  1982. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  1983. }
  1984. $survey_str = "SELECT * FROM " . TABLE_SURVEY_RATING . " ORDER BY id ASC";
  1985. $survey_arr = $parent->getQueryValue($survey_str);
  1986. if (count($survey_arr) > 0) {
  1987. foreach ($survey_arr as $skey => $res_survey) {
  1988. $rating_arr[$res_survey->id] = $res_survey->rating_text;
  1989. }
  1990. }
  1991. if (count($query_assess_res_arr) > 0) {
  1992. $sno = 1;
  1993. foreach ($query_assess_res_arr as $res) {
  1994. $ques_str = "SELECT q.id as qid, q.`questiontypeid`, q.`questiontext`, q.`qimage`, q.`qvideo` FROM " . TABLE_QUESTION . " as q WHERE id='" . $res->qid . "' LIMIT 1";
  1995. $ques_arr = $parent->getQueryValue($ques_str);
  1996. if (count($ques_arr) > 0) {
  1997. //GET USER ANSWERED OPTIONS
  1998. $user_answer_str = "SELECT * FROM " . TABLE_ASSESSMENT_USERRESULT . " WHERE userid='" . $userid . "' AND arid='" . $query_assess_arr[0]->highscorearid . "' AND aqid='" . $res->aqid . "'";
  1999. $user_answer_arr = $parent->getQueryValue($user_answer_str);
  2000. $ques_arr[0]->answer = array();
  2001. if (count($user_answer_arr) > 0) {
  2002. foreach ($user_answer_arr as $res_answer) {
  2003. //GET RATING
  2004. $ques_arr[0]->survey_text = '';
  2005. if ($ques_arr[0]->questiontypeid == '3') {
  2006. if ($res_answer->survey_rating == $res_survey->score) {
  2007. $rating = $res_answer->survey_rating;
  2008. $ques_arr[0]->answer[] = $rating_arr[$rating];
  2009. }
  2010. } elseif ($ques_arr[0]->questiontypeid == '5' || $ques_arr[0]->questiontypeid == '6') {
  2011. //GET ALL QUESTION OPTIONS
  2012. if ($res_answer->choiseid) {
  2013. $ques_option_str = "SELECT op.optid,op.opttext,'0' as selected FROM " . TABLE_QUESTIONOPTION . " as op WHERE op.qid='" . $res->qid . "' AND op.optid='" . $res_answer->choiseid . "' LIMIT 1";
  2014. $ques_option_arr = $parent->getQueryValue($ques_option_str);
  2015. if (count($ques_option_arr) > 0) {
  2016. $ques_arr[0]->answer[] = $ques_option_arr[0]->opttext;
  2017. }
  2018. }
  2019. } else {
  2020. $ques_arr[0]->answer[] = ($res_answer->survey_text != '') ? $res_answer->survey_text : '';
  2021. }
  2022. }
  2023. }
  2024. $i = 0;
  2025. $row++;
  2026. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $sno++);
  2027. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $ques_arr[0]->questiontext);
  2028. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, @implode(',', $ques_arr[0]->answer));
  2029. }
  2030. }
  2031. }
  2032. //LOG
  2033. $logstr = 'FEEDBACK REPORT EXPORT';
  2034. globalfunc::insertUserLog($parent, $logstr);
  2035. $objPHPExcel->getActiveSheet()->setTitle('FEEDBACK REPORT');
  2036. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  2037. $fpath = "../../" . S3_REPORT_URL;
  2038. $filename = "feedback_report_" . uniqid() . ".xlsx";
  2039. $objWriter->save($fpath . $filename);
  2040. //CONNECT S3
  2041. $s3 = awsfileserver::connectS3();
  2042. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  2043. //delete report
  2044. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  2045. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  2046. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  2047. }
  2048. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  2049. /* /////////////////////////////// MANAGER TARGET SAMPLE //////////////////////////////////////////////// */
  2050. private function managertargetsample($parent)
  2051. {
  2052. globalfunc::checkMethodType($parent, array('POST'));
  2053. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  2054. switch ($parent->current_user_role) {
  2055. case "14": //Dealer
  2056. case "7": //Area Manager
  2057. case "6": //Regional Manager
  2058. case "5": //Trainer
  2059. case "4": //Zonal Manager
  2060. case "3": //HO Manager
  2061. break;
  2062. default:
  2063. $parent->response(array('response' => 'failed', 'message' => $this->page_data["error2"]), 406);
  2064. break;
  2065. }
  2066. //Excel class library
  2067. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  2068. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  2069. $objPHPExcel = new PHPExcel();
  2070. $objPHPExcel->setActiveSheetIndex(0);
  2071. //GET ALL MODELS
  2072. $query_str = "SELECT * FROM " . TABLE_MODEL . " WHERE model_is_target='1' AND user_type='0' ORDER BY model_id";
  2073. $query_arr = $parent->getQueryValue($query_str);
  2074. $column_name = getColumnFromNumber(count($query_arr));
  2075. //EXCEL HEADER
  2076. $row = 1;
  2077. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "TARGET SALES");
  2078. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":" . strtoupper($column_name) . $row);
  2079. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  2080. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  2081. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(12);
  2082. $REQUEST_KEYS = array('area' => 'string');
  2083. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  2084. $area_manager = escape_str($parent->_request["area"]);
  2085. if ($parent->current_user_role == '14') {
  2086. $dealer_code = $parent->current_user_data->dealer_code;
  2087. $dealer_code_cond = " dealer_code='" . $dealer_code . "'";
  2088. $query_user_str = "SELECT * FROM `" . DMS_DEALER . "` WHERE " . $dealer_code_cond . " AND status='1' AND is_deleted='0' LIMIT 1";
  2089. } else {
  2090. $query_user_str = "SELECT * FROM `" . DMS_DEALER . "` WHERE am_email='" . $area_manager . "' " . $dealer_code_cond . " AND status='1' AND is_deleted='0' LIMIT 1";
  2091. }
  2092. $query_user_arr = $parent->getQueryValue($query_user_str);
  2093. if (count($query_user_arr) > 0) {
  2094. $area_manger_str = $query_user_arr[0]->am_name . ", " . $query_user_arr[0]->am_mobile . " - " . $query_user_arr[0]->am_email;
  2095. }
  2096. $row++;
  2097. if ($parent->current_user_role == '14') {
  2098. $area_manger_str .= " Dealer : " . $query_user_arr[0]->dealer_name . " " . $query_user_arr[0]->dealer_code;
  2099. }
  2100. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "AREA MANAGER : " . $area_manger_str);
  2101. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":" . strtoupper($column_name) . $row);
  2102. //$objPHPExcel->getActiveSheet()->getStyle("A".$row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  2103. //$objPHPExcel->getActiveSheet()->getStyle("A".$row)->getFont()->setBold(true);
  2104. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(12);
  2105. $row++;
  2106. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row);
  2107. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('15');
  2108. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth('20');
  2109. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('20');
  2110. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth('30');
  2111. //SET HEADER
  2112. $header_arr = array('SMPIN', "NAME", "MOBILE", "DEALER");
  2113. if (count($query_arr) > 0) {
  2114. $i = 4;
  2115. foreach ($query_arr as $res_val) {
  2116. $header_arr[] = strtoupper(trim($res_val->model_name));
  2117. $column_name = getColumnFromNumber($i++);
  2118. $column_row = $column_name . $row;
  2119. $bordercells_arr[] = $column_row;
  2120. $objPHPExcel->getActiveSheet()->getColumnDimension($column_name)->setWidth('20');
  2121. }
  2122. }
  2123. $i = 0;
  2124. foreach ($header_arr as $val) {
  2125. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  2126. }
  2127. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  2128. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  2129. if ($parent->current_user_role == '14') {
  2130. $dealer_code = $parent->current_user_data->dealer_code;
  2131. $dealer_code_cond = " AND e.dealer_code='" . $dealer_code . "'";
  2132. }
  2133. //GET ALL SMPIN OF
  2134. $query_user_str = "SELECT e.smpin,e.fname,e.lname,e.mobile,e.dealer_code,d.dealer_name FROM " . DMS_EMPLOYEE . " e JOIN " . TABLE_USER . " u ON u.smpin=e.smpin AND u.role>7 JOIN (SELECT dealer_code,dealer_name FROM " . DMS_DEALER . " WHERE am_email='" . $area_manager . "' AND status='1' AND is_deleted='0' )as d ON d.dealer_code=e.dealer_code WHERE e.status='1' " . $dealer_code_cond;
  2135. $query_user_arr = $parent->getQueryValue($query_user_str);
  2136. if (count($query_user_arr) > 0) {
  2137. foreach ($query_user_arr as $res_user) {
  2138. $row++;
  2139. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, $res_user->smpin);
  2140. $objPHPExcel->getActiveSheet()->getStyle('A' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  2141. $objPHPExcel->getActiveSheet()->SetCellValue('B' . $row, $res_user->fname . " " . $res_user->lname);
  2142. $objPHPExcel->getActiveSheet()->SetCellValue('C' . $row, $res_user->mobile);
  2143. $objPHPExcel->getActiveSheet()->getStyle('C' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  2144. $objPHPExcel->getActiveSheet()->SetCellValue('D' . $row, $res_user->dealer_code . " - " . $res_user->dealer_name);
  2145. $objPHPExcel->getActiveSheet()->getStyle('D' . $row)->getAlignment()->setWrapText(true);
  2146. }
  2147. }
  2148. //LOG
  2149. $logstr = 'SAMPLE SALES TARGET';
  2150. globalfunc::insertUserLog($parent, $logstr);
  2151. $objPHPExcel->getActiveSheet()->setTitle('SALES TARGET');
  2152. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  2153. $fpath = "../../" . S3_REPORT_URL;
  2154. $filename = "sample_sales_target_" . uniqid() . ".xlsx";
  2155. $objWriter->save($fpath . $filename);
  2156. //CONNECT S3
  2157. $s3 = awsfileserver::connectS3();
  2158. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  2159. //delete report
  2160. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  2161. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  2162. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  2163. }
  2164. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  2165. /* /////////////////////////////// NEW REGISTRATION REPORT EXPORT //////////////////////////////////////////////// */
  2166. private function newregistrationreportexport($parent)
  2167. {
  2168. globalfunc::checkMethodType($parent, array('POST'));
  2169. globalfunc::checkParamCount($parent, 2);
  2170. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  2171. //Excel class library
  2172. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  2173. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  2174. $objPHPExcel = new PHPExcel();
  2175. $objPHPExcel->setActiveSheetIndex(0);
  2176. //EXCEL HEADER
  2177. $row += 2;
  2178. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "REGISTRATION REPORT");
  2179. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":I" . $row);
  2180. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  2181. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  2182. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  2183. $row += 2;
  2184. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row, "I" . $row, "J" . $row, "K" . $row);
  2185. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  2186. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  2187. $i = 0;
  2188. //SET HEADER
  2189. $header_arr = array('SMPIN', 'DSE Name', 'Mobile', "Segment", 'Dealer Code', 'Dealer Name', 'Status', 'Registered On', 'ZM', 'RM', 'AM');
  2190. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  2191. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  2192. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  2193. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  2194. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  2195. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('25');
  2196. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  2197. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  2198. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  2199. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  2200. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30'); // SMPIN
  2201. $i = 0;
  2202. foreach ($header_arr as $val) {
  2203. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  2204. }
  2205. $qry_params = explode("?", $parent->params[1]);
  2206. $type = strtolower($qry_params[0]);
  2207. $user_cond = "";
  2208. //MANAGER WISE DEALER CONDITION
  2209. $dealer_cond_arr = $this->getmanagerconditon_arr($parent);
  2210. if (count($dealer_cond_arr) > 0) {
  2211. //APPEND prefix
  2212. array_walk($dealer_cond_arr, function (&$value, $key) {$value = 'd.' . $value;});
  2213. $user_cond .= " AND d.status='1' AND d.is_deleted='0' AND " . @implode(" AND ", $dealer_cond_arr);
  2214. }
  2215. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[1]);
  2216. $order_by_cond = "ORDER BY d.dealer_name,e.fname ASC ";
  2217. if (isset($filter_arr) && isset($filter_arr['sort'])) {
  2218. //1-Dealer
  2219. //2-Location
  2220. //3-AM
  2221. //4-RM
  2222. //5-ZM
  2223. switch ($filter_arr['sort']) {
  2224. case '1':$order_by_cond = "ORDER BY d.dealer_name,e.fname ASC ";
  2225. break;
  2226. case '2':$order_by_cond = "ORDER BY d.city,e.fname ASC ";
  2227. break;
  2228. case '3':$order_by_cond = "ORDER BY d.am_email,e.fname ASC ";
  2229. break;
  2230. case '4':$order_by_cond = "ORDER BY d.rm_email,e.fname ASC ";
  2231. break;
  2232. case '5':$order_by_cond = "ORDER BY d.zm_email,e.fname ASC ";
  2233. break;
  2234. default:$order_by_cond = "ORDER BY d.dealer_name,e.fname ASC ";
  2235. break;
  2236. }
  2237. }
  2238. if (isset($parent->_request["search"])) {
  2239. $search_txt = escape_str($parent->_request["search"]);
  2240. $user_cond .= " AND (e.fname LIKE '%" . $search_txt . "%' OR e.lname LIKE '%" . $search_txt . "%' OR e.smpin LIKE '%" . $search_txt . "%' OR d.dealer_name LIKE '%" . $search_txt . "%' OR d.zm_name LIKE '%" . $search_txt . "%' OR d.rm_name LIKE '%" . $search_txt . "%' OR d.am_name LIKE '%" . $search_txt . "%' OR d.city LIKE '%" . $search_txt . "%' )";
  2241. }
  2242. $user_cond .= " AND e.is_current='1' ";
  2243. //AND u.status=1
  2244. //$get_user_str="SELECT e.`smpin`, e.`emp_code`,e. `fname`,e.`lname`,e.mobile,e.emp_code,u.userid,d.city,u.dealer_code,d.dealer_name,d.zm_name,d.rm_name,d.am_name,l.created_on as register_date,u.userid FROM ".DMS_EMPLOYEE." e LEFT JOIN ".TABLE_USER." u ON u.smpin=e.smpin LEFT JOIN ".DMS_DEALER." d ON e.dealer_code=d.dealer_code LEFT JOIN (SELECT * FROM ".TABLE_USER_LOG." WHERE module='REGISTER' )as l ON u.userid=l.userid WHERE e.status='1' AND u.is_deleted=0 AND e.smpin!='' ".$user_cond.$order_by_cond;
  2245. $get_user_str = "SELECT e.`smpin`, e.`emp_code`,e. `fname`,e.`lname`,e.mobile,e.emp_code,e.segment,u.userid,d.city,d.dealer_code,d.dealer_name,d.zm_name,d.rm_name,d.am_name,u.created_on as register_date,u.userid,u.status FROM " . DMS_EMPLOYEE . " e LEFT JOIN " . TABLE_USER . " u ON u.smpin=e.smpin AND u.is_deleted=0 LEFT JOIN " . DMS_DEALER . " d ON e.dealer_code=d.dealer_code WHERE e.status='1' AND e.smpin!='' " . $user_cond . $order_by_cond;
  2246. $user_arr = $parent->getQueryValue($get_user_str);
  2247. if (count($user_arr) > 0) {
  2248. foreach ($user_arr as $mkey => $res_user) {
  2249. $i = 0;
  2250. $row++;
  2251. $objPHPExcel->getActiveSheet()->getStyle('A' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  2252. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->smpin); // SMPIN
  2253. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->fname . " " . $res_user->lname);
  2254. if (empty($res_user->mobile)) {
  2255. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  2256. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  2257. } else {
  2258. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobile);
  2259. }
  2260. switch ($res_user->segment) {
  2261. case '0':$segment_str = '-';
  2262. break;
  2263. case '1':$segment_str = 'Motorcycle';
  2264. break;
  2265. case '2':$segment_str = 'Scooter';
  2266. break;
  2267. default:$segment_str = '-';
  2268. break;
  2269. }
  2270. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $segment_str);
  2271. $objPHPExcel->getActiveSheet()->getStyle('E' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  2272. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_code);
  2273. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_name);
  2274. if ($res_user->userid > 0) {
  2275. $status = ($res_user->status == '1') ? 'Active' : 'Inactive';
  2276. } else {
  2277. $status = "Not registered";
  2278. }
  2279. if (empty($status)) {
  2280. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  2281. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  2282. } else {
  2283. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $status);
  2284. }
  2285. $register_date = ($res_user->register_date) ? date('d-m-Y', strtotime($res_user->register_date)) : '-';
  2286. if ($register_date == '-') {
  2287. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  2288. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  2289. } else {
  2290. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $register_date);
  2291. }
  2292. if (empty($res_user->zm_name)) {
  2293. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  2294. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  2295. } else {
  2296. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->zm_name);
  2297. }
  2298. if (empty($res_user->rm_name)) {
  2299. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  2300. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  2301. } else {
  2302. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->rm_name);
  2303. }
  2304. if (empty($res_user->am_name)) {
  2305. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  2306. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  2307. } else {
  2308. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->am_name);
  2309. }
  2310. }
  2311. //projectfunc::highlighRows($bordercells_arr,$objPHPExcel);
  2312. }
  2313. //LOG
  2314. $logstr = 'REGISTRATION REPORT EXPORT';
  2315. globalfunc::insertUserLog($parent, $logstr);
  2316. $objPHPExcel->getActiveSheet()->setTitle('REGISTRATION REPORT');
  2317. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  2318. $fpath = "../../" . S3_REPORT_URL;
  2319. $filename = "registration_report_" . uniqid() . ".xlsx";
  2320. $objWriter->save($fpath . $filename);
  2321. //CONNECT S3
  2322. $s3 = awsfileserver::connectS3();
  2323. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  2324. //delete report
  2325. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  2326. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  2327. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  2328. }
  2329. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  2330. /* /////////////////////////////// NEW COURSE REPORT EXPORT //////////////////////////////////////////////// */
  2331. private function newcoursereportexport($parent)
  2332. {
  2333. globalfunc::checkMethodType($parent, array('POST'));
  2334. globalfunc::checkParamCount($parent, 2);
  2335. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  2336. //Excel class library
  2337. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  2338. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  2339. $objPHPExcel = new PHPExcel();
  2340. $objPHPExcel->setActiveSheetIndex(0);
  2341. //EXCEL HEADER
  2342. $row += 2;
  2343. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "COURSE COMPLETION REPORT");
  2344. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":H" . $row);
  2345. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  2346. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  2347. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  2348. $row += 2;
  2349. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row, "I" . $row, "J" . $row);
  2350. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  2351. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  2352. //SET HEADER
  2353. $header_arr = array('SMPIN', 'DSE Name', 'Segment', 'Mobile', 'Dealer Code', 'Dealer Name', 'Overall Progress %', 'ZM', 'RM', 'AM');
  2354. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  2355. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  2356. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15'); //seg
  2357. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15'); //mob
  2358. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15'); //dealer
  2359. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('25');
  2360. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  2361. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  2362. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  2363. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  2364. $i = 0;
  2365. foreach ($header_arr as $val) {
  2366. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  2367. }
  2368. $qry_params = explode("?", $parent->params[1]);
  2369. $type = strtolower($qry_params[0]);
  2370. $user_cond = "";
  2371. //MANAGER WISE DEALER CONDITION
  2372. $dealer_cond_arr = $this->getmanagerconditon_arr($parent);
  2373. if (count($dealer_cond_arr) > 0) {
  2374. //APPEND prefix
  2375. array_walk($dealer_cond_arr, function (&$value, $key) {$value = 'd.' . $value;});
  2376. $user_cond .= " AND d.status='1' AND d.is_deleted='0' AND " . @implode(" AND ", $dealer_cond_arr);
  2377. }
  2378. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[1]);
  2379. $order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  2380. if (isset($filter_arr) && isset($filter_arr['sort'])) {
  2381. //1-Dealer
  2382. //2-Location
  2383. //3-AM
  2384. //4-RM
  2385. //5-ZM
  2386. switch ($filter_arr['sort']) {
  2387. case '1':$order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  2388. break;
  2389. case '2':$order_by_cond = "ORDER BY d.city,u.fname ASC ";
  2390. break;
  2391. case '3':$order_by_cond = "ORDER BY d.am_email,u.fname ASC ";
  2392. break;
  2393. case '4':$order_by_cond = "ORDER BY d.rm_email,u.fname ASC ";
  2394. break;
  2395. case '5':$order_by_cond = "ORDER BY d.zm_email,u.fname ASC ";
  2396. break;
  2397. default:$order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  2398. break;
  2399. }
  2400. }
  2401. if (isset($parent->_request["search"])) {
  2402. $search_txt = escape_str($parent->_request["search"]);
  2403. $user_cond .= " AND (e.fname LIKE '%" . $search_txt . "%' OR e.lname LIKE '%" . $search_txt . "%' OR e.smpin LIKE '%" . $search_txt . "%' OR d.dealer_name LIKE '%" . $search_txt . "%' OR d.zm_name LIKE '%" . $search_txt . "%' OR d.rm_name LIKE '%" . $search_txt . "%' OR d.am_name LIKE '%" . $search_txt . "%' OR d.city LIKE '%" . $search_txt . "%' )";
  2404. }
  2405. $user_cond .= " AND e.is_current='1' ";
  2406. // u.status='1' AND
  2407. $get_user_str = "SELECT u.userid,u.fname,u.lname,u.smpin,u.emp_code,u.mobileno,u.segment,d.city,u.dealer_code,d.dealer_name,d.zm_name,d.rm_name,d.am_name,e.segment FROM " . TABLE_USER . " u LEFT JOIN " . DMS_EMPLOYEE . " e ON u.smpin=e.smpin LEFT JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code WHERE u.is_deleted='0' AND u.role>7 AND u.role<14 " . $user_cond . $order_by_cond . $limit_cond;
  2408. $user_arr = $parent->getQueryValue($get_user_str);
  2409. if (count($user_arr) > 0) {
  2410. foreach ($user_arr as $mkey => $res_user) {
  2411. $i = 0;
  2412. $row++;
  2413. $objPHPExcel->getActiveSheet()->getStyle('A' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  2414. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->smpin);
  2415. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->fname . " " . $res_user->lname);
  2416. switch ($res_user->segment) {
  2417. case '0':$segment_str = '-';
  2418. break;
  2419. case '1':$segment_str = 'Motorcycle';
  2420. break;
  2421. case '2':$segment_str = 'Scooter';
  2422. break;
  2423. default:$segment_str = '-';
  2424. break;
  2425. }
  2426. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $segment_str);
  2427. if (empty($res_user->mobileno)) {
  2428. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  2429. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  2430. } else {
  2431. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobileno);
  2432. }
  2433. $objPHPExcel->getActiveSheet()->getStyle('E' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  2434. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_code);
  2435. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_name);
  2436. $content_arr = projectfunc::userSegmentCourseCompleteStatus($parent, $res_user->userid, $res_user->segment);
  2437. $percentage = ($content_arr['total'] > 0) ? round(($content_arr['completed'] / $content_arr['total']) * 100) : '0';
  2438. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $percentage . "%");
  2439. if (empty($res_user->zm_name)) {
  2440. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  2441. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  2442. } else {
  2443. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->zm_name);
  2444. }
  2445. if (empty($res_user->rm_name)) {
  2446. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  2447. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  2448. } else {
  2449. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->rm_name);
  2450. }
  2451. if (empty($res_user->am_name)) {
  2452. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  2453. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  2454. } else {
  2455. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->am_name);
  2456. }
  2457. }
  2458. }
  2459. //LOG
  2460. $logstr = 'COURSE COMPLETION REPORT EXPORT';
  2461. globalfunc::insertUserLog($parent, $logstr);
  2462. $objPHPExcel->getActiveSheet()->setTitle('COURSE COMPLETION REPORT');
  2463. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  2464. $fpath = "../../" . S3_REPORT_URL;
  2465. $filename = "course_completion_report_" . uniqid() . ".xlsx";
  2466. $objWriter->save($fpath . $filename);
  2467. //CONNECT S3
  2468. $s3 = awsfileserver::connectS3();
  2469. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  2470. //delete report
  2471. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  2472. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  2473. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  2474. }
  2475. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  2476. /* /////////////////////////////// NEW SALES REPORT EXPORT //////////////////////////////////////////////// */
  2477. private function newsalesreportexport($parent)
  2478. {
  2479. globalfunc::checkMethodType($parent, array('POST'));
  2480. globalfunc::checkParamCount($parent, 4);
  2481. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  2482. $year_data = escape_str($parent->params[1]);
  2483. $last_data = escape_str($parent->params[2]);
  2484. $last_data_arr = explode('?', $last_data);
  2485. $month_data = escape_str(trim($last_data_arr[0]));
  2486. //$limit_str=globalfunc::setPageLimit($parent,$parent->params[2]);
  2487. //$limit_cond=($limit_str)?" LIMIT ".$limit_str:'';
  2488. //Excel class library
  2489. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  2490. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  2491. $objPHPExcel = new PHPExcel();
  2492. $objPHPExcel->setActiveSheetIndex(0);
  2493. //EXCEL HEADER
  2494. $row = 2;
  2495. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "Month & Year: " . date('M Y', strtotime($year_data . "-" . $month_data . "-01")));
  2496. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":C" . $row);
  2497. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  2498. $row += 2;
  2499. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "SALES REPORT");
  2500. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":J" . $row);
  2501. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  2502. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  2503. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  2504. $row += 2;
  2505. //$bordercells_arr=array("A".$row,"B".$row,"C".$row,"D".$row,"E".$row,"F".$row,"G".$row,"H".$row,"I".$row,"J".$row);
  2506. //projectfunc::setCellBorder($bordercells_arr,$objPHPExcel);
  2507. //$objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  2508. //SET HEADER
  2509. //$header_arr=array('SMPIN', 'DSE Name','Mobile','Dealer Name','Location','Target','Achieved','Percentage');
  2510. $header_arr = array('SMPIN', 'DSE Name', 'Segment', "Mobile", 'Dealer Code', 'Dealer Name', 'Target', 'Achieved', 'Percentage');
  2511. //GET MODEL
  2512. $query_modelarr = $parent->selectQuery(TABLE_MODEL, "model_id, model_name,segment", "model_is_target=1 AND user_type=0 ORDER BY model_id", "");
  2513. if ($query_modelarr['nr']) {
  2514. foreach ($query_modelarr['result'] as $res_model) {
  2515. //$header_arr[]=$res_model->model_name." (Achieved/Target)";
  2516. $header_arr[] = $res_model->model_name . " \n Target";
  2517. $header_arr[] = $res_model->model_name . " \n Achieved";
  2518. $header_arr[] = $res_model->model_name . " \n %";
  2519. }
  2520. }
  2521. $header_arr[] = 'ZM';
  2522. $header_arr[] = 'RM';
  2523. $header_arr[] = 'AM';
  2524. $i = 0;
  2525. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15'); //smpin
  2526. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  2527. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15'); //segm
  2528. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15'); //mo
  2529. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15'); //dealer
  2530. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('20'); //dealer name
  2531. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  2532. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  2533. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  2534. if ($query_modelarr['nr']) {
  2535. foreach ($query_modelarr['result'] as $res_model) {
  2536. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('20');
  2537. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('20');
  2538. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('20');
  2539. }
  2540. }
  2541. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  2542. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  2543. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  2544. $i = 0;
  2545. foreach ($header_arr as $val) {
  2546. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  2547. $m = $i - 1;
  2548. $bordercells_arr[] = getColumnFromNumber($m) . $row;
  2549. }
  2550. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  2551. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  2552. $user_cond = "";
  2553. $qry_params = explode("?", $parent->params[3]);
  2554. $type = strtolower($qry_params[0]);
  2555. //MANAGER WISE DEALER CONDITION
  2556. $dealer_cond_arr = $this->getmanagerconditon_arr($parent);
  2557. if (count($dealer_cond_arr) > 0) {
  2558. //APPEND prefix
  2559. array_walk($dealer_cond_arr, function (&$value, $key) {$value = 'd.' . $value;});
  2560. $user_cond .= " AND d.status='1' AND d.is_deleted='0' AND " . @implode(" AND ", $dealer_cond_arr);
  2561. }
  2562. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[3]);
  2563. $order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  2564. if (isset($filter_arr) && isset($filter_arr['sort'])) {
  2565. //1-Dealer
  2566. //2-Location
  2567. //3-AM
  2568. //4-RM
  2569. //5-ZM
  2570. switch ($filter_arr['sort']) {
  2571. case '1':$order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  2572. break;
  2573. case '2':$order_by_cond = "ORDER BY d.city,u.fname ASC ";
  2574. break;
  2575. case '3':$order_by_cond = "ORDER BY d.am_email,u.fname ASC ";
  2576. break;
  2577. case '4':$order_by_cond = "ORDER BY d.rm_email,u.fname ASC ";
  2578. break;
  2579. case '5':$order_by_cond = "ORDER BY d.zm_email,u.fname ASC ";
  2580. break;
  2581. default:$order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  2582. break;
  2583. }
  2584. }
  2585. //GET ROLE
  2586. $role_data = array();
  2587. $role_arr = $parent->getQueryValue("SELECT rolename FROM " . TABLE_ROLE . " WHERE status=1 AND id>7 AND id<14 ");
  2588. if (count($role_arr) > 0) {
  2589. foreach ($role_arr as $res) {
  2590. $role_data[] = "'" . $res->rolename . "'";
  2591. }
  2592. } else {
  2593. $role_data[] = '';
  2594. }
  2595. if (isset($parent->_request["search"])) {
  2596. $search_txt = escape_str($parent->_request["search"]);
  2597. $user_cond .= " AND (e.fname LIKE '%" . $search_txt . "%' OR e.lname LIKE '%" . $search_txt . "%' OR e.smpin LIKE '%" . $search_txt . "%' OR d.dealer_name LIKE '%" . $search_txt . "%' OR d.zm_name LIKE '%" . $search_txt . "%' OR d.rm_name LIKE '%" . $search_txt . "%' OR d.am_name LIKE '%" . $search_txt . "%' OR d.city LIKE '%" . $search_txt . "%' )";
  2598. }
  2599. // u.status='1' AND
  2600. $is_history = (isset($parent->_request["is_history"]) && $parent->_request["is_history"] == 1) ? "1" : "0";
  2601. if ($is_history == 0) {
  2602. $user_cond .= " AND e.is_current='1' AND e.status=1 ";
  2603. } else {
  2604. $user_cond .= " AND e.status=1 ";
  2605. }
  2606. $get_user_str = "SELECT e.fname,e.lname,e.smpin,e.emp_code,e.mobile,e.mobile AS mobileno,e.segment,d.city,e.dealer_code,d.dealer_name,d.zm_name,d.rm_name,d.am_name FROM " . DMS_EMPLOYEE . " e LEFT JOIN " . TABLE_USER . " u ON e.smpin=u.smpin LEFT JOIN " . DMS_DEALER . " d ON e.dealer_code=d.dealer_code WHERE e.role IN (" . @implode(',', $role_data) . ") " . $user_cond . $order_by_cond;
  2607. $user_arr = $parent->getQueryValue($get_user_str);
  2608. if (count($user_arr) > 0) {
  2609. foreach ($user_arr as $mkey => $res_user) {
  2610. //'SMPIN', 'DSE Name','Segment',"Mobile",'Dealer Code','Dealer Name','Target','Achieved','Percentage'
  2611. //TARGET
  2612. $user_target = projectfunc::userSmpinSalesTarget($parent, $res_user->smpin, '', $year_data, $month_data);
  2613. //ACHIEVED
  2614. $user_achieved = projectfunc::userSmpinSalesAchieved($parent, $res_user->smpin, '', $year_data, $month_data);
  2615. $i = 0;
  2616. $row++;
  2617. $objPHPExcel->getActiveSheet()->getStyle('A' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  2618. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->smpin);
  2619. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->fname . " " . $res_user->lname);
  2620. switch ($res_user->segment) {
  2621. case '0':$segment_str = '-';
  2622. break;
  2623. case '1':$segment_str = 'Motorcycle';
  2624. break;
  2625. case '2':$segment_str = 'Scooter';
  2626. break;
  2627. default:$segment_str = '-';
  2628. break;
  2629. }
  2630. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $segment_str);
  2631. if (empty($res_user->mobileno)) {
  2632. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  2633. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  2634. } else {
  2635. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobileno);
  2636. }
  2637. $objPHPExcel->getActiveSheet()->getStyle('E' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  2638. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_code);
  2639. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_name);
  2640. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $user_target);
  2641. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $user_achieved);
  2642. $percentage = ($user_target > 0) ? round(($user_achieved / $user_target) * 100) : 0;
  2643. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $percentage);
  2644. if ($query_modelarr['nr']) {
  2645. foreach ($query_modelarr['result'] as $res_model) {
  2646. $model_user_target = projectfunc::userSmpinSalesTarget($parent, $res_user->smpin, $res_model->model_name, $year_data, $month_data);
  2647. //ACHIEVED
  2648. $model_user_achieved = projectfunc::userSmpinSalesAchieved($parent, $res_user->smpin, $res_model->model_name, $year_data, $month_data);
  2649. //$objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++).$row,$model_user_achieved."/".$model_user_target);
  2650. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $model_user_target);
  2651. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $model_user_achieved);
  2652. $modelpercentage = ($model_user_target > 0) ? round(($model_user_achieved / $model_user_target) * 100) : 0;
  2653. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $modelpercentage);
  2654. }
  2655. }
  2656. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->zm_name);
  2657. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->rm_name);
  2658. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->am_name);
  2659. }
  2660. }
  2661. //LOG
  2662. $logstr = 'MANAGER SALES REPORT EXPORT';
  2663. globalfunc::insertUserLog($parent, $logstr);
  2664. $objPHPExcel->getActiveSheet()->setTitle('MANAGER SALES REPORT');
  2665. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  2666. $fpath = "../../" . S3_REPORT_URL;
  2667. $filename = "manager_sales_report_" . uniqid() . ".xlsx";
  2668. $objWriter->save($fpath . $filename);
  2669. //CONNECT S3
  2670. $s3 = awsfileserver::connectS3();
  2671. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  2672. //delete report
  2673. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  2674. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  2675. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  2676. }
  2677. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  2678. /* /////////////////////////////// NEW CERTIFIED DSE REPORT EXPORT //////////////////////////////////////////////// */
  2679. private function newcertifieddsereportexport($parent)
  2680. {
  2681. globalfunc::checkMethodType($parent, array('POST'));
  2682. globalfunc::checkParamCount($parent, 2);
  2683. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  2684. //Excel class library
  2685. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  2686. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  2687. $objPHPExcel = new PHPExcel();
  2688. $objPHPExcel->setActiveSheetIndex(0);
  2689. //EXCEL HEADER
  2690. $row += 2;
  2691. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "CERTIFIED DSE REPORT");
  2692. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":K" . $row);
  2693. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  2694. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  2695. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  2696. $row += 2;
  2697. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row, "I" . $row, "J" . $row, "K" . $row, "L" . $row, "M" . $row, "N" . $row, "O" . $row, "P" . $row);
  2698. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  2699. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  2700. //SET HEADER
  2701. //$header_arr=array('SMPIN','DSE Name','Mobile','Dealer Name','Location','Certification','ZM','RM','AM');
  2702. $header_arr = array('SMPIN', 'DSE Name', "Segment", 'Mobile', 'Dealer Code', 'Dealer Name', 'Base', 'Bronze', 'Bronze Level 2 Status', 'Silver Level 1 Status', 'Silver Level 2 Status', 'Gold Level 1 Status', 'Gold Level 2 Status', 'ZM', 'RM', 'AM');
  2703. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('15');
  2704. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth('30');
  2705. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('15');
  2706. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth('25');
  2707. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth('20');
  2708. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth('15');
  2709. $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth('15');
  2710. $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth('15');
  2711. $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth('15');
  2712. $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth('15');
  2713. $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth('15');
  2714. $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth('15');
  2715. $objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth('15');
  2716. $objPHPExcel->getActiveSheet()->getColumnDimension('N')->setWidth('30');
  2717. $objPHPExcel->getActiveSheet()->getColumnDimension('O')->setWidth('30');
  2718. $objPHPExcel->getActiveSheet()->getColumnDimension('P')->setWidth('30');
  2719. $i = 0;
  2720. foreach ($header_arr as $val) {
  2721. // $i=($i=='6')?'9':$i;
  2722. // if($i==5)
  2723. // {
  2724. // $objPHPExcel->getActiveSheet()->mergeCells("F".$row.":I".$row);
  2725. // $objPHPExcel->getActiveSheet()->getStyle("F".$row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  2726. // }
  2727. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  2728. }
  2729. $qry_params = explode("?", $parent->params[1]);
  2730. $type = strtolower($qry_params[0]);
  2731. $user_cond = "";
  2732. //MANAGER WISE DEALER CONDITION
  2733. $dealer_cond_arr = $this->getmanagerconditon_arr($parent);
  2734. if (count($dealer_cond_arr) > 0) {
  2735. //APPEND prefix
  2736. array_walk($dealer_cond_arr, function (&$value, $key) {$value = 'd.' . $value;});
  2737. $user_cond .= " AND d.status='1' AND d.is_deleted='0' AND " . @implode(" AND ", $dealer_cond_arr);
  2738. }
  2739. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[1]);
  2740. $order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  2741. if (isset($filter_arr) && isset($filter_arr['sort'])) {
  2742. //1-Dealer
  2743. //2-Location
  2744. //3-AM
  2745. //4-RM
  2746. //5-ZM
  2747. switch ($filter_arr['sort']) {
  2748. case '1':$order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  2749. break;
  2750. case '2':$order_by_cond = "ORDER BY d.city,u.fname ASC ";
  2751. break;
  2752. case '3':$order_by_cond = "ORDER BY d.am_email,u.fname ASC ";
  2753. break;
  2754. case '4':$order_by_cond = "ORDER BY d.rm_email,u.fname ASC ";
  2755. break;
  2756. case '5':$order_by_cond = "ORDER BY d.zm_email,u.fname ASC ";
  2757. break;
  2758. default:$order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  2759. break;
  2760. }
  2761. }
  2762. if (isset($parent->_request["search"])) {
  2763. $search_txt = escape_str($parent->_request["search"]);
  2764. $user_cond .= " AND (u.fname LIKE '%" . $search_txt . "%' OR u.lname LIKE '%" . $search_txt . "%' OR u.emp_code LIKE '%" . $search_txt . "%' OR d.dealer_name LIKE '%" . $search_txt . "%' OR d.zm_name LIKE '%" . $search_txt . "%' OR d.rm_name LIKE '%" . $search_txt . "%' OR d.am_name LIKE '%" . $search_txt . "%' OR d.city LIKE '%" . $search_txt . "%' )";
  2765. }
  2766. $user_cond .= " AND e.is_current='1' ";
  2767. //u.status='1' ANDu
  2768. $get_user_str = "SELECT u.userid,u.fname,u.lname,u.smpin,u.emp_code,u.mobileno,u.segment,d.city,u.dealer_code,d.dealer_name,d.zm_name,d.rm_name,d.am_name FROM " . TABLE_USER . " u LEFT JOIN " . DMS_EMPLOYEE . " e ON u.smpin=e.smpin LEFT JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code WHERE u.is_deleted='0' AND u.role>7 AND u.role<14 " . $user_cond . $order_by_cond;
  2769. $user_arr = $parent->getQueryValue($get_user_str);
  2770. if (count($user_arr) > 0) {
  2771. foreach ($user_arr as $mkey => $res_user) {
  2772. $learning_arr = projectfunc::userLearningLevel($parent, $res_user->userid);
  2773. //0-Not Started Grey
  2774. //1-Current Orange
  2775. //2-Failed Red,
  2776. //3-Completed Green
  2777. $i = 0;
  2778. $row++;
  2779. $objPHPExcel->getActiveSheet()->getStyle('A' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  2780. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->smpin);
  2781. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->fname . " " . $res_user->lname);
  2782. switch ($res_user->segment) {
  2783. case '0':$segment_str = '-';
  2784. break;
  2785. case '1':$segment_str = 'Motorcycle';
  2786. break;
  2787. case '2':$segment_str = 'Scooter';
  2788. break;
  2789. default:$segment_str = '-';
  2790. break;
  2791. }
  2792. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $segment_str);
  2793. if (empty($res_user->mobileno)) {
  2794. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  2795. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  2796. } else {
  2797. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobileno);
  2798. }
  2799. //'SMPIN','DSE Name',"Segment",'Mobile','Dealer Code','Dealer Name','Base','Bronze','Bronze Level 2 Status','Silver Level 1 Status','Silver Level 2 Status','Gold Level 1 Status','Gold Level 2 Status','ZM','RM','AM'
  2800. $objPHPExcel->getActiveSheet()->getStyle('E' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  2801. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_code);
  2802. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_name);
  2803. switch ($learning_arr['basic']) {
  2804. case "0":$base_lvl1_str = 'Not Started';
  2805. $base_lvl2_str = 'Not Started';
  2806. break;
  2807. case "6":$base_lvl1_str = 'Failed';
  2808. $base_lvl2_str = 'Not Started';
  2809. break;
  2810. case "7":$base_lvl1_str = 'Completed';
  2811. $base_lvl2_str = 'Not Started';
  2812. break; // same
  2813. case "4":$base_lvl1_str = 'Completed';
  2814. $base_lvl2_str = 'Not Started';
  2815. break; // same
  2816. case "2":$base_lvl1_str = 'Completed';
  2817. $base_lvl2_str = 'Failed';
  2818. break;
  2819. case "3":$base_lvl1_str = 'Completed';
  2820. $base_lvl2_str = 'Completed';
  2821. break;
  2822. default:$base_lvl1_str = 'Not Started';
  2823. $base_lvl2_str = 'Not Started';
  2824. break;
  2825. }
  2826. switch ($learning_arr['bronze']) {
  2827. case "0":$bronze_lvl1_str = 'Not Started';
  2828. $bronze_lvl2_str = 'Not Started';
  2829. break;
  2830. case "6":$bronze_lvl1_str = 'Failed';
  2831. $bronze_lvl2_str = 'Not Started';
  2832. break;
  2833. case "7":$bronze_lvl1_str = 'Completed';
  2834. $bronze_lvl2_str = 'Not Started';
  2835. break; // same
  2836. case "4":$bronze_lvl1_str = 'Completed';
  2837. $bronze_lvl2_str = 'Not Started';
  2838. break; // same
  2839. case "2":$bronze_lvl1_str = 'Completed';
  2840. $bronze_lvl2_str = 'Failed';
  2841. break;
  2842. case "3":$bronze_lvl1_str = 'Completed';
  2843. $bronze_lvl2_str = 'Completed';
  2844. break;
  2845. default:$bronze_lvl1_str = 'Not Started';
  2846. $bronze_lvl2_str = 'Not Started';
  2847. break;
  2848. }
  2849. switch ($learning_arr['silver']) {
  2850. case "0":$silver_lvl1_str = 'Not Started';
  2851. $silver_lvl2_str = 'Not Started';
  2852. break;
  2853. case "6":$silver_lvl1_str = 'Failed';
  2854. $silver_lvl2_str = 'Not Started';
  2855. break;
  2856. case "7":$silver_lvl1_str = 'Completed';
  2857. $silver_lvl2_str = 'Not Started';
  2858. break; // same
  2859. case "4":$silver_lvl1_str = 'Completed';
  2860. $silver_lvl2_str = 'Not Started';
  2861. break; // same
  2862. case "2":$silver_lvl1_str = 'Completed';
  2863. $silver_lvl2_str = 'Failed';
  2864. break;
  2865. case "3":$silver_lvl1_str = 'Completed';
  2866. $silver_lvl2_str = 'Completed';
  2867. break;
  2868. default:$silver_lvl1_str = 'Not Started';
  2869. $silver_lvl2_str = 'Not Started';
  2870. break;
  2871. }
  2872. switch ($learning_arr['gold']) {
  2873. case "0":$gold_lvl1_str = 'Not Started';
  2874. $gold_lvl2_str = 'Not Started';
  2875. break;
  2876. case "6":$gold_lvl1_str = 'Failed';
  2877. $gold_lvl2_str = 'Not Started';
  2878. break;
  2879. case "7":$gold_lvl1_str = 'Completed';
  2880. $gold_lvl2_str = 'Not Started';
  2881. break; // same
  2882. case "4":$gold_lvl1_str = 'Completed';
  2883. $gold_lvl2_str = 'Not Started';
  2884. break; // same
  2885. case "2":$gold_lvl1_str = 'Completed';
  2886. $gold_lvl2_str = 'Failed';
  2887. break;
  2888. case "3":$gold_lvl1_str = 'Completed';
  2889. $gold_lvl2_str = 'Completed';
  2890. break;
  2891. default:$gold_lvl1_str = 'Not Started';
  2892. $gold_lvl2_str = 'Not Started';
  2893. break;
  2894. }
  2895. //$objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++).$row,$base_lvl1_str);
  2896. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $base_lvl2_str);
  2897. //$objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++).$row,$bronze_lvl1_str);
  2898. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $bronze_lvl2_str);
  2899. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $silver_lvl1_str);
  2900. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $silver_lvl2_str);
  2901. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $gold_lvl1_str);
  2902. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $gold_lvl2_str);
  2903. // $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i).$row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  2904. // $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i).$row)->getFont()->setBold(true);
  2905. // $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i).$row)->getFont()->setSize(14)->getColor()->setRGB($this->certifieddsecolor($parent,$learning_arr['basic']));
  2906. // $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++).$row,'B');
  2907. //
  2908. // $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i).$row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  2909. // $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i).$row)->getFont()->setBold(true);
  2910. // $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i).$row)->getFont()->setSize(14)->getColor()->setRGB($this->certifieddsecolor($parent,$learning_arr['bronze']));
  2911. // $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++).$row,'B');
  2912. // $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i).$row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  2913. // $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i).$row)->getFont()->setBold(true);
  2914. // $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i).$row)->getFont()->setSize(14)->getColor()->setRGB($this->certifieddsecolor($parent,$learning_arr['silver']));
  2915. // $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++).$row,'S');
  2916. // $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i).$row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  2917. // $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i).$row)->getFont()->setBold(true);
  2918. // $objPHPExcel->getActiveSheet()->getStyle(getColumnFromNumber($i).$row)->getFont()->setSize(14)->getColor()->setRGB($this->certifieddsecolor($parent,$learning_arr['gold']));
  2919. // $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++).$row,'G');
  2920. if (empty($res_user->zm_name)) {
  2921. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  2922. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  2923. } else {
  2924. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->zm_name);
  2925. }
  2926. if (empty($res_user->rm_name)) {
  2927. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  2928. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  2929. } else {
  2930. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->rm_name);
  2931. }
  2932. if (empty($res_user->am_name)) {
  2933. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  2934. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  2935. } else {
  2936. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->am_name);
  2937. }
  2938. }
  2939. }
  2940. //LOG
  2941. $logstr = 'CERTIFIED DSE REPORT EXPORT';
  2942. globalfunc::insertUserLog($parent, $logstr);
  2943. $objPHPExcel->getActiveSheet()->setTitle('CERTIFIED DSE REPORT');
  2944. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  2945. $fpath = "../../" . S3_REPORT_URL;
  2946. $filename = "certified_dse_report_" . uniqid() . ".xlsx";
  2947. $objWriter->save($fpath . $filename);
  2948. //CONNECT S3
  2949. $s3 = awsfileserver::connectS3();
  2950. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  2951. //delete report
  2952. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  2953. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  2954. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  2955. }
  2956. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  2957. /* /////////////////////////////// ASSESSMENT REPORT EXPORT //////////////////////////////////////////////// */
  2958. private function newassessmentreportexport($parent)
  2959. {
  2960. globalfunc::checkMethodType($parent, array('POST'));
  2961. globalfunc::checkParamCount($parent, 2);
  2962. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  2963. projectfunc::authorizedRole($parent, array('3', '4', '5', '6', '7', '14'));
  2964. //FIELDS VALIDATION
  2965. $REQUEST_KEYS = array('assessmentid' => 'integer');
  2966. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  2967. $assessmentid = escape_str($parent->_request["assessmentid"]);
  2968. //Excel class library
  2969. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  2970. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  2971. $objPHPExcel = new PHPExcel();
  2972. $objPHPExcel->setActiveSheetIndex(0);
  2973. $assessment_str = "SELECT assessmentname,pass_score FROM " . TABLE_ASSESSMENT . " WHERE assessmentid='" . $assessmentid . "' LIMIT 1";
  2974. $assessment_arr = $parent->getQueryValue($assessment_str);
  2975. $assessmentname = (count($assessment_arr) > 0) ? $assessment_arr[0]->assessmentname : '';
  2976. $pass_score = $assessment_arr[0]->pass_score;
  2977. //EXCEL HEADER
  2978. $row = 2;
  2979. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "Assessment : " . $assessmentname);
  2980. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":E" . $row);
  2981. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  2982. $row++;
  2983. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "Passing Percentage : " . $pass_score . "%");
  2984. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":E" . $row);
  2985. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  2986. //EXCEL HEADER
  2987. $row += 2;
  2988. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "ASSESSMENT REPORT");
  2989. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":L" . $row);
  2990. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  2991. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  2992. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  2993. $row += 2;
  2994. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row, "I" . $row, "J" . $row, "K" . $row, 'L' . $row, 'M' . $row, 'N' . $row);
  2995. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  2996. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  2997. //SET HEADER
  2998. $header_arr = array('SMPIN', 'DSE Name', "Segment", 'Mobile', 'Dealer Code', 'Dealer Name', 'Score', 'Timetaken in Minutes', 'Completed Time', 'Result', 'ZM', 'RM', 'AM', 'Zone');
  2999. $i = 0;
  3000. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  3001. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  3002. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15'); //seg
  3003. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15'); //mon
  3004. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  3005. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('20');
  3006. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('10'); //score
  3007. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('10');
  3008. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('20');
  3009. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('20');
  3010. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  3011. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  3012. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  3013. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  3014. $i = 0;
  3015. foreach ($header_arr as $val) {
  3016. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  3017. }
  3018. $role = $parent->current_user_role;
  3019. $userdata = projectfunc::getuserdata($parent, $parent->current_user_id);
  3020. $user_cond = "";
  3021. $dealer_code_cond = '';
  3022. $qry_params = explode("?", $parent->params[1]);
  3023. $type = strtolower($qry_params[0]);
  3024. $user_cond = "";
  3025. $zm_email = escape_str($parent->_request["zmemail"]);
  3026. $rm_email = escape_str($parent->_request["rmemail"]);
  3027. $am_email = escape_str($parent->_request["amemail"]);
  3028. //MANAGER WISE DEALER CONDITION
  3029. $dealer_cond_arr = $this->getmanagerconditon_arr($parent);
  3030. if (count($dealer_cond_arr) > 0) {
  3031. //APPEND prefix
  3032. array_walk($dealer_cond_arr, function (&$value, $key) {$value = 'd.' . $value;});
  3033. $user_cond .= " AND d.status='1' AND d.is_deleted='0' AND " . @implode(" AND ", $dealer_cond_arr);
  3034. }
  3035. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[1]);
  3036. $order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  3037. if (isset($filter_arr) && isset($filter_arr['sort'])) {
  3038. //1-Dealer
  3039. //2-Location
  3040. //3-AM
  3041. //4-RM
  3042. //5-ZM
  3043. switch ($filter_arr['sort']) {
  3044. case '1':$order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  3045. break;
  3046. case '2':$order_by_cond = "ORDER BY d.city,u.fname ASC ";
  3047. break;
  3048. case '3':$order_by_cond = "ORDER BY d.am_email,u.fname ASC ";
  3049. break;
  3050. case '4':$order_by_cond = "ORDER BY d.rm_email,u.fname ASC ";
  3051. break;
  3052. case '5':$order_by_cond = "ORDER BY d.zm_email,u.fname ASC ";
  3053. break;
  3054. default:$order_by_cond = "ORDER BY au.highscore DESC,au.modified_on ASC,d.dealer_name,u.fname ASC ";
  3055. break;
  3056. }
  3057. }
  3058. if (isset($parent->_request["search"])) {
  3059. $search_txt = escape_str($parent->_request["search"]);
  3060. $user_cond .= " AND (u.fname LIKE '%" . $search_txt . "%' OR u.lname LIKE '%" . $search_txt . "%' OR u.emp_code LIKE '%" . $search_txt . "%' OR d.dealer_name LIKE '%" . $search_txt . "%' OR d.zm_name LIKE '%" . $search_txt . "%' OR d.rm_name LIKE '%" . $search_txt . "%' OR d.am_name LIKE '%" . $search_txt . "%' OR d.city LIKE '%" . $search_txt . "%' )";
  3061. }
  3062. $dse_cond = (isset($parent->_request["is_idse"]) && $parent->_request["is_idse"] !== '1') ? " AND u.role='15'" : "AND u.role>7 AND u.role<14";
  3063. $user_cond .= " AND e.is_current='1' ";
  3064. $get_user_str = "SELECT u.userid,u.fname,u.lname,u.smpin,u.emp_code,u.mobileno,d.city,u.dealer_code,u.segment,d.dealer_name,d.zm_name,d.rm_name,d.am_name,d.zone FROM " . TABLE_USER . " u JOIN " . TABLE_ASSESSMENT_USER . " as au ON u.userid=au.userid LEFT JOIN " . DMS_EMPLOYEE . " e ON u.smpin=e.smpin LEFT JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code WHERE u.is_deleted='0' " . $dse_cond . " AND au.assessmentid='" . $assessmentid . "' " . $user_cond . $order_by_cond;
  3065. $user_arr = $parent->getQueryValue($get_user_str);
  3066. if (count($user_arr) > 0) {
  3067. foreach ($user_arr as $mkey => $res_user) {
  3068. $i = 0;
  3069. $row++;
  3070. $objPHPExcel->getActiveSheet()->getStyle('A' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  3071. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->smpin);
  3072. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->fname . " " . $res_user->lname);
  3073. switch ($res_user->segment) {
  3074. case '0':$segment_str = '-';
  3075. break;
  3076. case '1':$segment_str = 'Motorcycle';
  3077. break;
  3078. case '2':$segment_str = 'Scooter';
  3079. break;
  3080. default:$segment_str = '-';
  3081. break;
  3082. }
  3083. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $segment_str);
  3084. if (empty($res_user->mobileno)) {
  3085. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3086. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3087. } else {
  3088. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobileno);
  3089. }
  3090. $objPHPExcel->getActiveSheet()->getStyle('E' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  3091. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_code);
  3092. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_name);
  3093. $exam_highscore_str = "SELECT * FROM " . TABLE_ASSESSMENT_USER . " WHERE assessmentid='" . $assessmentid . "' AND userid='" . $res_user->userid . "' LIMIT 1";
  3094. $exam_highscore_arr = $parent->getQueryValue($exam_highscore_str);
  3095. $highscore = (count($exam_highscore_arr) > 0) ? $exam_highscore_arr[0]->highscore : '0';
  3096. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $highscore . "%");
  3097. // $header_arr=array('SMPIN','DSE Name','Mobile','Dealer Name','Location','Score','Timetaken in Minutes','Result','Completed Time','ZM','RM','AM','Zone');
  3098. $timetaken = '';
  3099. $completedtime = '';
  3100. if (count($exam_highscore_arr) > 0) {
  3101. $exam_result_highscore_str = "SELECT * FROM " . TABLE_ASSESSMENTRESULT . " WHERE assessmentid='" . $assessmentid . "' AND arid='" . $exam_highscore_arr[0]->highscorearid . "' LIMIT 1";
  3102. $exam_result_highscore_arr = $parent->getQueryValue($exam_result_highscore_str);
  3103. $timetaken = (count($exam_result_highscore_arr) > 0 && isset($exam_result_highscore_arr[0]->time_taken)) ? round($exam_result_highscore_arr[0]->time_taken / 60) : "0";
  3104. $completedtime = (count($exam_result_highscore_arr) > 0 && isset($exam_result_highscore_arr[0]->modified_on)) ? date('d-m-Y h:i A', strtotime($exam_result_highscore_arr[0]->modified_on)) : "-";
  3105. }
  3106. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $timetaken);
  3107. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $completedtime);
  3108. $result_str = ($highscore >= $pass_score) ? "Pass" : "Fail";
  3109. $column_str = getColumnFromNumber($i++) . $row;
  3110. if ($result_str == 'Pass') {
  3111. $objPHPExcel->getActiveSheet()->getStyle($column_str)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB("008000");
  3112. } else {
  3113. $objPHPExcel->getActiveSheet()->getStyle($column_str)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB("FF0000");
  3114. }
  3115. $objPHPExcel->getActiveSheet()->SetCellValue($column_str, $result_str);
  3116. if (empty($res_user->zm_name)) {
  3117. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3118. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3119. } else {
  3120. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->zm_name);
  3121. }
  3122. if (empty($res_user->rm_name)) {
  3123. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3124. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3125. } else {
  3126. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->rm_name);
  3127. }
  3128. if (empty($res_user->am_name)) {
  3129. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3130. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3131. } else {
  3132. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->am_name);
  3133. }
  3134. if (empty($res_user->zone)) {
  3135. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3136. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3137. } else {
  3138. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->zone);
  3139. }
  3140. }
  3141. }
  3142. //LOG
  3143. $logstr = 'ASSESSMENT REPORT EXPORT';
  3144. globalfunc::insertUserLog($parent, $logstr);
  3145. $objPHPExcel->getActiveSheet()->setTitle('ASSESSMENT REPORT');
  3146. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  3147. $fpath = "../../" . S3_REPORT_URL;
  3148. $filename = "assessment_report_" . uniqid() . ".xlsx";
  3149. $objWriter->save($fpath . $filename);
  3150. //CONNECT S3
  3151. $s3 = awsfileserver::connectS3();
  3152. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  3153. //delete report
  3154. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  3155. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  3156. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  3157. }
  3158. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  3159. /* /////////////////////////////// NEW SALES TARGET REPORT EXPORT //////////////////////////////////////////////// */
  3160. private function newsalestargetreportexport($parent)
  3161. {
  3162. globalfunc::checkMethodType($parent, array('POST'));
  3163. globalfunc::checkParamCount($parent, 4);
  3164. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  3165. $year_data = escape_str($parent->params[1]);
  3166. $last_data = escape_str($parent->params[2]);
  3167. $last_data_arr = explode('?', $last_data);
  3168. $month_data = escape_str(trim($last_data_arr[0]));
  3169. //Excel class library
  3170. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  3171. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  3172. $objPHPExcel = new PHPExcel();
  3173. $objPHPExcel->setActiveSheetIndex(0);
  3174. //EXCEL HEADER
  3175. $row += 2;
  3176. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "SALES TARGET REPORT");
  3177. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":H" . $row);
  3178. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  3179. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  3180. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  3181. $row += 2;
  3182. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row, "I" . $row);
  3183. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  3184. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  3185. //SET HEADER
  3186. $header_arr = array('SMPIN', 'DSE Name', 'Mobile', 'Dealer Name', 'Location', 'Sales Target', 'ZM', 'RM', 'AM');
  3187. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('15');
  3188. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth('30');
  3189. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('15');
  3190. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth('25');
  3191. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth('20');
  3192. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth('15');
  3193. $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth('30');
  3194. $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth('30');
  3195. $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth('30');
  3196. $i = 0;
  3197. foreach ($header_arr as $val) {
  3198. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  3199. }
  3200. $dealer_code_cond = '';
  3201. $qry_params = explode("?", $parent->params[3]);
  3202. $type = strtolower($qry_params[0]);
  3203. $user_cond = "";
  3204. switch ($type) {
  3205. case "zm":
  3206. if ($parent->current_user_role == '3') {
  3207. $REQUEST_KEYS = array('zmemail' => 'string');
  3208. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  3209. $emailid = escape_str($parent->_request["zmemail"]);
  3210. if ($emailid != 'all') {
  3211. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE zm_email='" . $emailid . "' AND status=1 AND is_deleted=0)";
  3212. } else {
  3213. $user_cond .= "";
  3214. }
  3215. } else {
  3216. $parent->response(array('response' => 'failed', 'message' => 'Sorry No access'), 401);
  3217. }
  3218. break;
  3219. case "rm":
  3220. if ($parent->current_user_role < '7') {
  3221. if ($parent->current_user_role == '5') {
  3222. $REQUEST_KEYS = array('rmemail' => 'string');
  3223. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  3224. $emailid = escape_str($parent->_request["rmemail"]);
  3225. $get_trainer_str = "SELECT h.zone FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.userid='" . $parent->current_user_id . "' AND u.role='5' LIMIT 1";
  3226. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  3227. $zone_cond .= (count($trainer_arr) > 0) ? " zone='" . $trainer_arr[0]->zone . "'" : " zone='0'";
  3228. if ($emailid == 'all') {
  3229. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE " . $zone_cond . " AND status=1 AND is_deleted=0)";
  3230. } else {
  3231. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE rm_email='" . $emailid . "' AND " . $zone_cond . " AND status=1 AND is_deleted=0)";
  3232. }
  3233. } else {
  3234. $REQUEST_KEYS = array('rmemail' => 'string');
  3235. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  3236. $emailid = escape_str($parent->_request["rmemail"]);
  3237. if ($emailid == 'all') {
  3238. $REQUEST_KEYS = array('zmemail' => 'string');
  3239. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  3240. $emailid = escape_str($parent->_request["zmemail"]);
  3241. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE zm_email='" . $emailid . "' AND status=1 AND is_deleted=0)";
  3242. } else {
  3243. //ZM EMAIL
  3244. $zmemail = escape_str($parent->_request["zmemail"]);
  3245. $zmcond = ($zmemail != 'all' && $zmemail != '') ? " AND zm_email='" . $zmemail . "'" : '';
  3246. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE rm_email='" . $emailid . "' " . $zmcond . " AND status=1 AND is_deleted=0)";
  3247. }
  3248. }
  3249. } else {
  3250. $parent->response(array('response' => 'failed', 'message' => 'Sorry No access'), 401);
  3251. }
  3252. break;
  3253. case "am":
  3254. if ($parent->current_user_role == '14') {
  3255. $dealer_code_cond = " dealer_code='" . $parent->current_user_data->dealer_code . "'";
  3256. } else {
  3257. $REQUEST_KEYS = array('amemail' => 'string');
  3258. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  3259. $emailid = escape_str($parent->_request["amemail"]);
  3260. if ($emailid == 'all') {
  3261. $REQUEST_KEYS = array('rmemail' => 'string');
  3262. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  3263. $emailid = escape_str($parent->_request["rmemail"]);
  3264. $dealer_code_cond = " rm_email='" . $emailid . "'";
  3265. } else {
  3266. $dealer_code_cond = " am_email='" . $emailid . "'";
  3267. }
  3268. if ($parent->current_user_role != '5') {
  3269. //ZM EMAIL
  3270. $zmemail = escape_str($parent->_request["zmemail"]);
  3271. $zmcond = ($zmemail != 'all' && $zmemail != '') ? " AND zm_email='" . $zmemail . "'" : '';
  3272. $dealer_code_cond .= $zmcond;
  3273. }
  3274. //RM EMAIL
  3275. $rmemail = escape_str($parent->_request["rmemail"]);
  3276. $rmcond = ($rmemail != 'all' && $rmemail != '') ? " AND rm_email='" . $rmemail . "'" : '';
  3277. $dealer_code_cond .= $rmcond;
  3278. //TRAINER
  3279. if ($parent->current_user_role == '5') {
  3280. $get_trainer_str = "SELECT h.zone FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.userid='" . $parent->current_user_id . "' AND u.role='5' LIMIT 1";
  3281. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  3282. $dealer_code_cond .= (count($trainer_arr) > 0) ? "AND zone='" . $trainer_arr[0]->zone . "'" : "AND zone='0'";
  3283. }
  3284. }
  3285. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE " . $dealer_code_cond . " AND status='1' AND is_deleted='0')";
  3286. break;
  3287. default:$parent->response(array('response' => 'failed', 'message' => 'Sorry No access'), 401);
  3288. break;
  3289. }
  3290. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[3]);
  3291. //SORT
  3292. $order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  3293. if (isset($filter_arr) && isset($filter_arr['sort'])) {
  3294. //1-Dealer
  3295. //2-Location
  3296. //3-AM
  3297. //4-RM
  3298. //5-ZM
  3299. switch ($filter_arr['sort']) {
  3300. case '1':$order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  3301. break;
  3302. case '2':$order_by_cond = "ORDER BY d.city,u.fname ASC ";
  3303. break;
  3304. case '3':$order_by_cond = "ORDER BY d.am_email,u.fname ASC ";
  3305. break;
  3306. case '4':$order_by_cond = "ORDER BY d.rm_email,u.fname ASC ";
  3307. break;
  3308. case '5':$order_by_cond = "ORDER BY d.zm_email,u.fname ASC ";
  3309. break;
  3310. default:$order_by_cond = "ORDER BY d.dealer_name,u.fname ASC ";
  3311. break;
  3312. }
  3313. }
  3314. if (isset($parent->_request["search"])) {
  3315. $search_txt = escape_str($parent->_request["search"]);
  3316. $user_cond .= " AND (e.fname LIKE '%" . $search_txt . "%' OR e.lname LIKE '%" . $search_txt . "%' OR e.smpin LIKE '%" . $search_txt . "%' OR d.dealer_name LIKE '%" . $search_txt . "%' OR d.zm_name LIKE '%" . $search_txt . "%' OR d.rm_name LIKE '%" . $search_txt . "%' OR d.am_name LIKE '%" . $search_txt . "%' OR d.city LIKE '%" . $search_txt . "%' )";
  3317. }
  3318. $user_cond .= " AND e.is_current='1' ";
  3319. $get_user_str = "SELECT e.`smpin`, e.`emp_code`,e. `fname`,e.`lname`,e.emp_code,e.mobile,u.userid,d.city,u.dealer_code,d.dealer_name,d.zm_name,d.rm_name,d.am_name FROM " . DMS_EMPLOYEE . " e LEFT JOIN " . TABLE_USER . " u ON u.smpin=e.smpin LEFT JOIN " . DMS_DEALER . " d ON e.dealer_code=d.dealer_code WHERE e.status='1' AND e.smpin!='' " . $user_cond . $order_by_cond;
  3320. $user_arr = $parent->getQueryValue($get_user_str);
  3321. if (count($user_arr) > 0) {
  3322. foreach ($user_arr as $mkey => $res_user) {
  3323. $i = 0;
  3324. $row++;
  3325. $objPHPExcel->getActiveSheet()->getStyle('A' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  3326. if (empty($res_user->smpin)) {
  3327. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3328. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3329. } else {
  3330. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->smpin);
  3331. }
  3332. if (empty($res_user->fname)) {
  3333. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3334. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3335. } else {
  3336. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->fname . " " . $res_user->lname);
  3337. }
  3338. if (empty($res_user->mobile)) {
  3339. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3340. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3341. } else {
  3342. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobile);
  3343. }
  3344. if (empty($res_user->dealer_name)) {
  3345. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3346. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3347. } else {
  3348. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_name);
  3349. }
  3350. if (empty($res_user->city)) {
  3351. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3352. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3353. } else {
  3354. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->city);
  3355. }
  3356. //$content_arr=projectfunc::userCourseCompleteStatus($parent,$res_user->userid);
  3357. //$percentage=($content_arr['total']>0)?round(($content_arr['completed']/$content_arr['total'])*100):'0';
  3358. $user_target = projectfunc::userSmpinSalesTarget($parent, $res_user->smpin, '', $year_data, $month_data);
  3359. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $user_target);
  3360. if (empty($res_user->zm_name)) {
  3361. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3362. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3363. } else {
  3364. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->zm_name);
  3365. }
  3366. if (empty($res_user->rm_name)) {
  3367. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3368. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3369. } else {
  3370. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->rm_name);
  3371. }
  3372. if (empty($res_user->am_name)) {
  3373. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3374. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3375. } else {
  3376. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->am_name);
  3377. }
  3378. }
  3379. }
  3380. //LOG
  3381. $logstr = 'SALES TARGET EXPORT';
  3382. globalfunc::insertUserLog($parent, $logstr);
  3383. $objPHPExcel->getActiveSheet()->setTitle('SALES TARGET REPORT');
  3384. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  3385. $fpath = "../../" . S3_REPORT_URL;
  3386. $filename = "sales_target_report_" . uniqid() . ".xlsx";
  3387. $objWriter->save($fpath . $filename);
  3388. //CONNECT S3
  3389. $s3 = awsfileserver::connectS3();
  3390. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  3391. //delete report
  3392. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  3393. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  3394. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  3395. }
  3396. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  3397. /* /////////////////////////////// SALES LEADERBOARD REPORT EXPORT //////////////////////////////////////////////// */
  3398. private function newsalesleaderboardexport($parent)
  3399. {
  3400. globalfunc::checkMethodType($parent, array('POST'));
  3401. globalfunc::checkParamCount($parent, 4);
  3402. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  3403. // //FIELDS VALIDATION
  3404. // $REQUEST_KEYS=array('email'=>'string');
  3405. // globalfunc::mandatoryKey($parent,$REQUEST_KEYS);
  3406. // $email = escape_str($parent->_request["email"]);
  3407. $year_data = escape_str($parent->params[1]);
  3408. $last_data = escape_str($parent->params[2]);
  3409. $last_data_arr = explode('?', $last_data);
  3410. $month_data = escape_str(trim($last_data_arr[0]));
  3411. $qry_params = explode("?", $parent->params[3]);
  3412. $type = strtolower($qry_params[0]);
  3413. $dealer_cond = "";
  3414. switch ($type) {
  3415. case "zm":
  3416. if ($parent->current_user_role == '3') {
  3417. $REQUEST_KEYS = array('zmemail' => 'string');
  3418. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  3419. $emailid = escape_str($parent->_request["zmemail"]);
  3420. if ($emailid != 'all') {
  3421. //$dealer_cond.=" AND u.dealer_code IN (SELECT dealer_code FROM ".DMS_DEALER." WHERE zm_email='". $emailid."')";
  3422. $dealer_cond .= " AND d.zm_email='" . $emailid . "'";
  3423. } else {
  3424. $dealer_cond .= "";
  3425. }
  3426. } else {
  3427. $parent->response(array('response' => 'failed', 'message' => 'Sorry No access'), 401);
  3428. }
  3429. break;
  3430. case "rm":
  3431. if ($parent->current_user_role < '7') {
  3432. if ($parent->current_user_role == '5') {
  3433. $REQUEST_KEYS = array('rmemail' => 'string');
  3434. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  3435. $get_trainer_str = "SELECT h.* FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.userid='" . $parent->current_user_id . "' AND u.role='5' LIMIT 1";
  3436. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  3437. $zone_cond .= (count($trainer_arr) > 0) ? " d.zone='" . $trainer_arr[0]->zone . "'" : " d.zone='0'";
  3438. $emailid = escape_str($parent->_request["rmemail"]);
  3439. if ($emailid == 'all') {
  3440. //$user_cond.=" AND u.dealer_code IN (SELECT dealer_code FROM ".DMS_DEALER." WHERE ".$zone_cond.")";
  3441. $dealer_cond .= " AND " . $zone_cond;
  3442. } else {
  3443. //$user_cond.=" AND u.dealer_code IN (SELECT dealer_code FROM ".DMS_DEALER." WHERE rm_email='".$emailid."')";
  3444. $dealer_cond .= "AND d.rm_email='" . $emailid . "' AND " . $zone_cond . "";
  3445. }
  3446. } else {
  3447. $REQUEST_KEYS = array('rmemail' => 'string');
  3448. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  3449. $emailid = escape_str($parent->_request["rmemail"]);
  3450. if ($emailid == 'all') {
  3451. $REQUEST_KEYS = array('zmemail' => 'string');
  3452. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  3453. $emailid = escape_str($parent->_request["zmemail"]);
  3454. //$user_cond.=" AND u.dealer_code IN (SELECT dealer_code FROM ".DMS_DEALER." WHERE zm_email='". $emailid."')";
  3455. $dealer_cond .= " AND d.zm_email='" . $emailid . "'";
  3456. } else {
  3457. //ZM EMAIL
  3458. $zmemail = escape_str($parent->_request["zmemail"]);
  3459. $zmcond = ($zmemail != 'all' && $zmemail != '') ? " AND d.zm_email='" . $zmemail . "'" : '';
  3460. //$user_cond.=" AND u.dealer_code IN (SELECT dealer_code FROM ".DMS_DEALER." WHERE rm_email='".$emailid."')";
  3461. $dealer_cond .= " AND d.rm_email='" . $emailid . "' " . $zmcond . "";
  3462. }
  3463. }
  3464. } else {
  3465. $parent->response(array('response' => 'failed', 'message' => 'Sorry No access'), 401);
  3466. }
  3467. break;
  3468. case "am":
  3469. if ($parent->current_user_role == '14') {
  3470. $dealer_code_cond = " d.dealer_code='" . $parent->current_user_data->dealer_code . "'";
  3471. } else {
  3472. $REQUEST_KEYS = array('amemail' => 'string');
  3473. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  3474. $emailid = escape_str($parent->_request["amemail"]);
  3475. if ($emailid == 'all') {
  3476. $REQUEST_KEYS = array('rmemail' => 'string');
  3477. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  3478. $emailid = escape_str($parent->_request["rmemail"]);
  3479. $dealer_code_cond = " d.rm_email='" . $emailid . "'";
  3480. } else {
  3481. $dealer_code_cond = " d.am_email='" . $emailid . "'";
  3482. }
  3483. if ($parent->current_user_role != '5') {
  3484. //ZM EMAIL
  3485. $zmemail = escape_str($parent->_request["zmemail"]);
  3486. $zmcond = ($zmemail != 'all' && $zmemail != '') ? " AND d.zm_email='" . $zmemail . "'" : '';
  3487. $dealer_code_cond .= $zmcond;
  3488. }
  3489. //RM EMAIL
  3490. $rmemail = escape_str($parent->_request["rmemail"]);
  3491. $rmcond = ($rmemail != 'all' && $rmemail != '') ? " AND d.rm_email='" . $rmemail . "'" : '';
  3492. $dealer_code_cond .= $rmcond;
  3493. //TRAINER
  3494. if ($parent->current_user_role == '5') {
  3495. $get_trainer_str = "SELECT h.zone FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.userid='" . $parent->current_user_id . "' AND u.role='5' LIMIT 1";
  3496. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  3497. $dealer_code_cond .= (count($trainer_arr) > 0) ? "AND d.zone='" . $trainer_arr[0]->zone . "'" : "AND d.zone='0'";
  3498. }
  3499. }
  3500. //$user_cond.=" AND u.dealer_code IN (SELECT dealer_code FROM ".DMS_DEALER." WHERE ".$dealer_code_cond.")";
  3501. $dealer_cond .= " AND " . $dealer_code_cond;
  3502. break;
  3503. default:$parent->response(array('response' => 'failed', 'message' => 'Sorry No access'), 401);
  3504. break;
  3505. }
  3506. //Excel class library
  3507. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  3508. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  3509. $objPHPExcel = new PHPExcel();
  3510. $objPHPExcel->setActiveSheetIndex(0);
  3511. //EXCEL HEADER
  3512. $row = 2;
  3513. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "Month & Year: " . date('M Y', strtotime($year_data . "-" . $month_data . "-01")));
  3514. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":D" . $row);
  3515. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  3516. //EXCEL HEADER
  3517. $row += 2;
  3518. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "SALES LEADERBOARD REPORT");
  3519. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":M" . $row);
  3520. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  3521. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  3522. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  3523. $row += 2;
  3524. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row, "I" . $row, "J" . $row, "K" . $row, "L" . $row, "M" . $row);
  3525. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  3526. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  3527. //SET HEADER
  3528. $header_arr = array('SMPIN', 'DSE Name', 'Mobile', 'Dealer Name', 'Location', 'Sales', 'Sales Target', 'Sales Achvt', 'Rank', 'OutOf', 'ZM', 'RM', 'AM');
  3529. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('15');
  3530. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth('30');
  3531. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('15');
  3532. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth('25');
  3533. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth('20');
  3534. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth('10');
  3535. $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth('10');
  3536. $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth('10');
  3537. $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth('10');
  3538. $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth('10');
  3539. $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth('30');
  3540. $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth('30');
  3541. $objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth('30');
  3542. $i = 0;
  3543. foreach ($header_arr as $val) {
  3544. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  3545. }
  3546. $user_cond = "";
  3547. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[2]);
  3548. $order_by_cond = " ORDER BY f.rank,d.dealer_name ASC";
  3549. if (isset($filter_arr) && isset($filter_arr['sort'])) {
  3550. //1-Dealer
  3551. //2-Rank
  3552. switch ($filter_arr['sort']) {
  3553. case '1':$order_by_cond = " ORDER BY d.dealer_name,f.rank ASC ";
  3554. break;
  3555. case '2':$order_by_cond = " ORDER BY f.rank,d.dealer_name ASC ";
  3556. break;
  3557. default:$order_by_cond = " ORDER BY f.rank,d.dealer_name ASC ";
  3558. break;
  3559. }
  3560. }
  3561. if (isset($parent->_request["search"])) {
  3562. $search_txt = escape_str($parent->_request["search"]);
  3563. $user_cond .= " AND (u.fname LIKE '%" . $search_txt . "%' OR u.lname LIKE '%" . $search_txt . "%' OR u.emp_code LIKE '%" . $search_txt . "%' OR d.dealer_name LIKE '%" . $search_txt . "%' OR d.zm_name LIKE '%" . $search_txt . "%' OR d.rm_name LIKE '%" . $search_txt . "%' OR d.am_name LIKE '%" . $search_txt . "%' OR d.city LIKE '%" . $search_txt . "%' )";
  3564. }
  3565. if ($parent->current_user_role == '14') {
  3566. $user_cond .= " AND u.dealer_code='" . $dealer_code . "'";
  3567. }
  3568. //GET MONTH RANGE
  3569. $start_date = date('Y-m-d', strtotime($year_data . "-" . $month_data . "-01"));
  3570. $end_date = date('Y-m-t', strtotime($year_data . "-" . $month_data . "-01"));
  3571. $parent->executeQuery("SET @rownum := 0");
  3572. $get_user_str = "SELECT f.*,u.fname,u.lname,u.mobileno,d.* FROM (SELECT @rownum := @rownum + 1 AS rank, salecount,targetcount,smpin,userid,last_sale,first_sale,sale_per FROM (SELECT c.*, CASE WHEN targetcount=0 THEN 0 ELSE (salecount/targetcount)*100 END as 'sale_per' FROM ( SELECT a.userid,a.smpin,a.salecount,b.targetcount,a.last_sale,a.first_sale FROM (SELECT COALESCE(COUNT(s.id),'0') as scount, COALESCE(SUM(s.sales_count),'0') as salecount, u.smpin,u.userid,MAX(s.sale_date) last_sale,MIN(s.sale_date) first_sale FROM " . TABLE_USER . " as u LEFT JOIN " . DMS_EMPLOYEE . " e ON u.smpin=e.smpin JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code LEFT JOIN (SELECT id,smpin,sale_date,sales_count FROM " . DMS_EMPLOYEE_SALES . " WHERE sale_date>='" . $start_date . "' AND sale_date<='" . $end_date . "') as s ON s.smpin=u.smpin WHERE u.is_deleted=0 AND u.role>7 AND u.role<14 AND e.is_current='1' " . $dealer_cond . " GROUP BY u.smpin ) as a JOIN (SELECT COALESCE(SUM(t.target),'0') as targetcount,u.smpin,u.userid FROM " . TABLE_USER . " as u LEFT JOIN " . DMS_EMPLOYEE . " e ON u.smpin=e.smpin JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code LEFT JOIN (SELECT id,smpin,target FROM " . TABLE_USER_SALETARGET . " WHERE sale_month>='" . $start_date . "' AND sale_month<='" . $end_date . "')as t ON t.smpin=u.smpin WHERE u.is_deleted=0 AND u.role>7 AND u.role<14 AND e.is_current='1' " . $dealer_cond . " GROUP BY u.smpin ) as b ON a.userid=b.userid )c ORDER BY cast(sale_per as SIGNED) DESC,cast(salecount as SIGNED) DESC,cast(targetcount as SIGNED) DESC,last_sale ASC,first_sale ASC,userid ASC)as a )as f JOIN " . TABLE_USER . " as u ON f.userid=u.userid LEFT JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code WHERE 1=1 " . $user_cond . $order_by_cond;
  3573. $user_arr = $parent->getQueryValue($get_user_str);
  3574. $get_user_count_str = "SELECT COUNT(u.userid)as user_count FROM (SELECT salecount,targetcount,smpin,userid,last_sale,first_sale,sale_per FROM (SELECT c.*, CASE WHEN targetcount=0 THEN 0 ELSE (salecount/targetcount)*100 END as 'sale_per' FROM ( SELECT a.userid,a.smpin,a.salecount,b.targetcount,a.last_sale,a.first_sale FROM (SELECT COALESCE(COUNT(s.id),'0') as scount, COALESCE(SUM(s.sales_count),'0') as salecount, u.smpin,u.userid,MAX(s.sale_date) last_sale,MIN(s.sale_date) first_sale FROM " . TABLE_USER . " as u LEFT JOIN " . DMS_EMPLOYEE . " e ON u.smpin=e.smpin JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code LEFT JOIN (SELECT id,smpin,sale_date,sales_count FROM " . DMS_EMPLOYEE_SALES . " WHERE sale_date>='" . $start_date . "' AND sale_date<='" . $end_date . "') as s ON s.smpin=u.smpin WHERE u.is_deleted=0 AND u.role>7 AND u.role<14 AND e.is_current='1' " . $dealer_cond . " GROUP BY u.smpin ) as a JOIN (SELECT COALESCE(SUM(t.target),'0') as targetcount,u.smpin,u.userid FROM " . TABLE_USER . " as u LEFT JOIN " . DMS_EMPLOYEE . " e ON u.smpin=e.smpin JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code LEFT JOIN (SELECT id,smpin,target FROM " . TABLE_USER_SALETARGET . " WHERE sale_month>='" . $start_date . "' AND sale_month<='" . $end_date . "')as t ON t.smpin=u.smpin WHERE u.is_deleted=0 AND u.role>7 AND u.role<14 AND e.is_current='1' " . $dealer_cond . " GROUP BY u.smpin ) as b ON a.userid=b.userid )c ORDER BY cast(sale_per as SIGNED) DESC,cast(salecount as SIGNED) DESC,cast(targetcount as SIGNED) DESC,last_sale ASC,first_sale ASC,userid ASC)as a )as f JOIN " . TABLE_USER . " as u ON f.userid=u.userid LEFT JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code WHERE 1=1 " . $user_cond . " LIMIT 1";
  3575. if (count($user_arr) > 0) {
  3576. $user_count_arr = $parent->getQueryValue($get_user_count_str);
  3577. $outof = (count($user_count_arr) > 0) ? $user_count_arr[0]->user_count : '0';
  3578. foreach ($user_arr as $mkey => $res_user) {
  3579. $learning_arr = projectfunc::userLearningLevel($parent, $res_user->userid);
  3580. $i = 0;
  3581. $row++;
  3582. if (empty($res_user->smpin)) {
  3583. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3584. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3585. } else {
  3586. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->smpin);
  3587. }
  3588. if (empty($res_user->fname)) {
  3589. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3590. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3591. } else {
  3592. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->fname . " " . $res_user->lname);
  3593. }
  3594. if (empty($res_user->mobileno)) {
  3595. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3596. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3597. } else {
  3598. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobileno);
  3599. }
  3600. if (empty($res_user->dealer_name)) {
  3601. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3602. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3603. } else {
  3604. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_name);
  3605. }
  3606. if (empty($res_user->city)) {
  3607. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3608. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3609. } else {
  3610. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->city);
  3611. }
  3612. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->salecount . "/" . $res_user->targetcount);
  3613. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->salecount);
  3614. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->targetcount);
  3615. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->rank);
  3616. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $outof);
  3617. if (empty($res_user->zm_name)) {
  3618. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3619. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3620. } else {
  3621. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->zm_name);
  3622. }
  3623. if (empty($res_user->rm_name)) {
  3624. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3625. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3626. } else {
  3627. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->rm_name);
  3628. }
  3629. if (empty($res_user->am_name)) {
  3630. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3631. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3632. } else {
  3633. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->am_name);
  3634. }
  3635. }
  3636. }
  3637. //LOG
  3638. $logstr = 'SALES LEADERBOARD REPORT EXPORT';
  3639. globalfunc::insertUserLog($parent, $logstr);
  3640. $objPHPExcel->getActiveSheet()->setTitle('SALES LEADERBOARD REPORT');
  3641. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  3642. $fpath = "../../" . S3_REPORT_URL;
  3643. $filename = "sales_leaderboard_report_" . uniqid() . ".xlsx";
  3644. $objWriter->save($fpath . $filename);
  3645. //CONNECT S3
  3646. $s3 = awsfileserver::connectS3();
  3647. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  3648. //delete report
  3649. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  3650. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  3651. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  3652. }
  3653. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  3654. /* /////////////////////////////// ASSESSMENT LEADERBOARD REPORT EXPORT //////////////////////////////////////////////// */
  3655. private function newassessmentleaderboardexport($parent)
  3656. {
  3657. globalfunc::checkMethodType($parent, array('POST'));
  3658. globalfunc::checkParamCount($parent, 2);
  3659. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  3660. // //FIELDS VALIDATION
  3661. // $REQUEST_KEYS=array('email'=>'string');
  3662. // globalfunc::mandatoryKey($parent,$REQUEST_KEYS);
  3663. // $email = escape_str($parent->_request["email"]);
  3664. //DATE CONDITION
  3665. //$start_date="2018-".date('m',strtotime(CUR_DATE))."-01";
  3666. $start_date = date('Y-m', strtotime(CUR_DATE)) . "-01";
  3667. $end_date = date('Y-m-t', strtotime(CUR_DATE));
  3668. $date_cond = " AND a.publisheddate>='" . $start_date . " 00:00:00' AND a.publisheddate<='" . $end_date . " 23:59:59'";
  3669. $qry_params = explode("?", $parent->params[1]);
  3670. $type = strtolower($qry_params[0]);
  3671. $user_cond = "";
  3672. switch ($type) {
  3673. case "zm":
  3674. if ($parent->current_user_role == '3') {
  3675. $REQUEST_KEYS = array('zmemail' => 'string');
  3676. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  3677. $emailid = escape_str($parent->_request["zmemail"]);
  3678. if ($emailid != 'all') {
  3679. $user_cond .= " AND d.zm_email='" . $emailid . "'";
  3680. } else {
  3681. $user_cond .= "";
  3682. }
  3683. } else {
  3684. $parent->response(array('response' => 'failed', 'message' => 'Sorry No access'), 401);
  3685. }
  3686. break;
  3687. case "rm":
  3688. if ($parent->current_user_role < '7') {
  3689. if ($parent->current_user_role == '5') {
  3690. $REQUEST_KEYS = array('rmemail' => 'string');
  3691. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  3692. $get_trainer_str = "SELECT h.* FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.userid='" . $parent->current_user_id . "' AND u.role='5' LIMIT 1";
  3693. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  3694. $zone_cond .= (count($trainer_arr) > 0) ? " d.zone='" . $trainer_arr[0]->zone . "'" : " d.zone='0'";
  3695. $emailid = escape_str($parent->_request["rmemail"]);
  3696. if ($emailid == 'all') {
  3697. $user_cond .= " AND " . $zone_cond;
  3698. } else {
  3699. $user_cond .= " AND d.rm_email='" . $emailid . "' AND " . $zone_cond . "";
  3700. }
  3701. } else {
  3702. $REQUEST_KEYS = array('rmemail' => 'string');
  3703. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  3704. $emailid = escape_str($parent->_request["rmemail"]);
  3705. if ($emailid == 'all') {
  3706. $REQUEST_KEYS = array('zmemail' => 'string');
  3707. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  3708. $emailid = escape_str($parent->_request["zmemail"]);
  3709. $user_cond .= " AND d.zm_email='" . $emailid . "'";
  3710. } else {
  3711. //ZM EMAIL
  3712. $zmemail = escape_str($parent->_request["zmemail"]);
  3713. $zmcond = ($zmemail != 'all' && $zmemail != '') ? " AND d.zm_email='" . $zmemail . "'" : '';
  3714. $user_cond .= " AND d.rm_email='" . $emailid . "' " . $zmcond;
  3715. }
  3716. }
  3717. } else {
  3718. $parent->response(array('response' => 'failed', 'message' => 'Sorry No access'), 401);
  3719. }
  3720. break;
  3721. case "am":
  3722. if ($parent->current_user_role == '14') {
  3723. $dealer_code_cond = " d.dealer_code='" . $parent->current_user_data->dealer_code . "'";
  3724. } else {
  3725. $REQUEST_KEYS = array('amemail' => 'string');
  3726. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  3727. $emailid = escape_str($parent->_request["amemail"]);
  3728. if ($emailid == 'all') {
  3729. $REQUEST_KEYS = array('rmemail' => 'string');
  3730. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  3731. $emailid = escape_str($parent->_request["rmemail"]);
  3732. $dealer_code_cond = " d.rm_email='" . $emailid . "'";
  3733. } else {
  3734. $dealer_code_cond = " d.am_email='" . $emailid . "'";
  3735. }
  3736. if ($parent->current_user_role != '5') {
  3737. //ZM EMAIL
  3738. $zmemail = escape_str($parent->_request["zmemail"]);
  3739. $zmcond = ($zmemail != 'all' && $zmemail != '') ? " AND d.zm_email='" . $zmemail . "'" : '';
  3740. $dealer_code_cond .= $zmcond;
  3741. }
  3742. //RM EMAIL
  3743. $rmemail = escape_str($parent->_request["rmemail"]);
  3744. $rmcond = ($rmemail != 'all' && $rmemail != '') ? " AND d.rm_email='" . $rmemail . "'" : '';
  3745. $dealer_code_cond .= $rmcond;
  3746. //TRAINER
  3747. if ($parent->current_user_role == '5') {
  3748. $get_trainer_str = "SELECT h.zone FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.userid='" . $parent->current_user_id . "' AND u.role='5' LIMIT 1";
  3749. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  3750. $dealer_code_cond .= (count($trainer_arr) > 0) ? "AND d.zone='" . $trainer_arr[0]->zone . "'" : "AND d.zone='0'";
  3751. }
  3752. }
  3753. $user_cond .= "AND " . $dealer_code_cond . "";
  3754. break;
  3755. default:$parent->response(array('response' => 'failed', 'message' => 'Sorry No access'), 401);
  3756. break;
  3757. }
  3758. $join_cond = 'JOIN ' . DMS_DEALER . ' as d ON d.dealer_code=u.dealer_code ';
  3759. //Excel class library
  3760. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  3761. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  3762. $objPHPExcel = new PHPExcel();
  3763. $objPHPExcel->setActiveSheetIndex(0);
  3764. //EXCEL HEADER
  3765. $row += 2;
  3766. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "ASSESSMENT LEADERBOARD REPORT");
  3767. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":J" . $row);
  3768. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  3769. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  3770. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  3771. $row += 2;
  3772. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row, "I" . $row, "J" . $row, "K" . $row);
  3773. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  3774. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  3775. //SET HEADER
  3776. $header_arr = array('SMPIN', 'DSE Name', 'Mobile', 'Dealer Name', 'Location', 'Score', 'Position', 'Outof', 'ZM', 'RM', 'AM');
  3777. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('15');
  3778. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth('30');
  3779. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('15');
  3780. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth('25');
  3781. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth('20');
  3782. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth('10');
  3783. $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth('10');
  3784. $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth('10');
  3785. $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth('30');
  3786. $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth('30');
  3787. $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth('30');
  3788. $i = 0;
  3789. foreach ($header_arr as $val) {
  3790. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  3791. }
  3792. $role = $parent->current_user_role;
  3793. $userdata = projectfunc::getuserdata($parent, $parent->current_user_id);
  3794. // $filter_arr=globalfunc::getFilterValues($parent,$parent->params[2]);
  3795. // $order_by_cond=" ORDER BY f.rank,d.dealer_name ASC ";
  3796. // if(isset($filter_arr) && isset($filter_arr['sort']))
  3797. // {
  3798. // //1-Dealer
  3799. // //2-Location
  3800. // switch($filter_arr['sort'])
  3801. // {
  3802. // case '1': $order_by_cond=" ORDER BY d.dealer_name,f.rank ASC "; break;
  3803. // case '2': $order_by_cond=" ORDER BY f.rank,d.dealer_name ASC "; break;
  3804. // default: $order_by_cond=" ORDER BY f.rank,d.dealer_name ASC "; break;
  3805. // }
  3806. // }
  3807. // if(isset($parent->_request["search"]))
  3808. // {
  3809. // $search_txt = escape_str($parent->_request["search"]);
  3810. // $user_cond.=" AND (u.fname LIKE '%".$search_txt."%' OR u.lname LIKE '%".$search_txt."%' OR u.emp_code LIKE '%".$search_txt."%' OR d.dealer_name LIKE '%".$search_txt."%' OR d.zm_name LIKE '%".$search_txt."%' OR d.rm_name LIKE '%".$search_txt."%' OR d.am_name LIKE '%".$search_txt."%' OR d.city LIKE '%".$search_txt."%' )";
  3811. // }
  3812. $new_cond = 'AND a.user_type=0 ';
  3813. //GET ALL ASSESSMENT LIST WHICH PUBLISHED
  3814. $assessment_str = "SELECT a.* FROM `" . TABLE_ASSESSMENT . "` as a WHERE a.status='1' AND a.atype='0' AND a.assettypeid='1' " . $date_cond . $new_cond;
  3815. $assessment_arr = $parent->getQueryValue($assessment_str);
  3816. //ASSESSMENT COUNT
  3817. $assessment_count = (count($assessment_arr) > 0) ? count($assessment_arr) : '0';
  3818. // $outof=0;
  3819. //GET ALL ASSESSMENT LIST WHICH PUBLISHED
  3820. // $assessment_str = "SELECT a.* FROM `".TABLE_ASSESSMENT."` as a WHERE a.atype='0' AND a.assettypeid='1' AND a.publisheddate<='".NOW."' ".$query_cond;
  3821. // $assessment_arr=$parent->getQueryValue($assessment_str);
  3822. // $data_arr=array();
  3823. if (count($assessment_arr) > 0) {
  3824. foreach ($assessment_arr as $res_assess) {
  3825. $assessmentid_arr[] = $res_assess->assessmentid;
  3826. }
  3827. if ($parent->current_user_role == '14') {
  3828. $area_cond .= " AND u.dealer_code='" . $dealer_code . "'";
  3829. }
  3830. $get_user_rank_str = "SELECT SUM(highscore)as user_score,u.userid,COALESCE(ar.total_time,'0')as total_time,MAX(au.modified_on) as last_modified,u.dealer_code,u.role,d.* FROM " . TABLE_USER . " as u LEFT JOIN " . DMS_EMPLOYEE . " e ON u.smpin=e.smpin JOIN (SELECT * FROM " . TABLE_ASSESSMENT_USER . " WHERE assessmentid IN (" . @implode(',', $assessmentid_arr) . ") AND highscorearid!=0 ) as au ON u.userid=au.userid LEFT JOIN (SELECT SUM(time_taken)as total_time,assessmentid,userid FROM " . TABLE_ASSESSMENTRESULT . " WHERE assessmentid IN (" . @implode(',', $assessmentid_arr) . ") GROUP BY userid )as ar ON u.userid=ar.userid " . $join_cond . " WHERE u.role>'7' AND u.role<14 AND u.is_deleted=0 AND e.is_current='1' " . $user_cond . " GROUP BY u.userid ORDER BY user_score DESC,ar.total_time ASC,last_modified ASC,u.userid ASC ";
  3831. $get_user_rank_arr = $parent->getQueryValue($get_user_rank_str);
  3832. if ($get_user_rank_arr) {
  3833. foreach ($get_user_rank_arr as $res_user) {
  3834. $user_data_arr = new stdClass();
  3835. $get_time_str = "SELECT * FROM " . TABLE_ASSESSMENTRESULT . " WHERE assessmentid IN (" . @implode(',', $assessmentid_arr) . ") AND userid='" . $res_user->userid . "'";
  3836. $get_time_arr = $parent->getQueryValue($get_time_str);
  3837. $user_data_arr->user = projectfunc::getuserdata($parent, $res_user->userid);
  3838. $user_data_arr->rank = '0';
  3839. $user_data_arr->tot_user_score = (count($get_time_arr) > 0) ? $res_user->user_score : '-';
  3840. $user_data_arr->percentage_score = (count($get_time_arr) > 0) ? '0' : '-';
  3841. $user_data_arr->total_time = $res_user->total_time;
  3842. $user_data_arr->last_time = (count($get_time_arr) > 0) ? $res_user->last_modified : '-';
  3843. //GET EACH USER COND
  3844. $getuser_data = projectfunc::getuserdata($parent, $res_user->userid);
  3845. // if($getuser_data->role)
  3846. // {
  3847. // $user_cond[]=" (a.filter_role LIKE '%".$getuser_data->role."%' OR a.filter_role='')";
  3848. // }
  3849. if ($getuser_data->zone) {
  3850. $user_cond[] = " (a.filter_zone LIKE '%" . $getuser_data->zone . "%' OR a.filter_zone='')";
  3851. }
  3852. if ($getuser_data->city) {
  3853. $user_cond[] = " (a.filter_region LIKE '%" . $getuser_data->city . "%' OR a.filter_region='')";
  3854. }
  3855. if ($getuser_data->dealer_code) {
  3856. $user_cond[] = " (a.filter_dealer LIKE '%" . $getuser_data->dealer_code . "%' OR a.filter_dealer='')";
  3857. }
  3858. $assess_user_cond = " AND " . @implode(' AND ', $user_cond);
  3859. $count_assessment_str = "SELECT COUNT(a.assessmentid) as acount FROM `" . TABLE_ASSESSMENT . "` as a WHERE a.status='1' AND a.atype='0' AND a.assettypeid='1' AND a.publisheddate>='" . $start_date . " 00:00:00' AND a.publisheddate<='" . $end_date . " 23:59:59' AND a.enddate>='" . $user_data_arr->user->user_created_on . "' AND assessmentid IN (" . @implode(',', $assessmentid_arr) . ") " . $assess_user_cond . " LIMIT 1";
  3860. $count_assessment_arr = $parent->getQueryValue($count_assessment_str);
  3861. $user_data_arr->percentage_score = (count($assessment_arr) > 0) ? round($res_user->user_score / $count_assessment_arr[0]->acount) : '0';
  3862. $user_data_arr->percentage = $user_data_arr->percentage_score;
  3863. if ((($assessment_count / $count_assessment_arr[0]->acount) * 100) >= MIN_ASSESSMENT_PERCENT) {
  3864. $data_arr[] = $user_data_arr;
  3865. }
  3866. }
  3867. }
  3868. if (count($data_arr) > 0) {
  3869. array_multisort(array_column($data_arr, 'percentage_score'), SORT_DESC, array_column($rank_arr, 'total_time'), SORT_ASC, $rank_arr);
  3870. $rank = 1;
  3871. foreach ($data_arr as $key => $res) {
  3872. $data_arr[$key]->rank = $rank;
  3873. $rank++;
  3874. }
  3875. }
  3876. if (count($data_arr) > 0) {
  3877. $outof = count($data_arr);
  3878. //$user_count_arr=$parent->getQueryValue($get_user_count_str);
  3879. //$outof=(count($user_count_arr)>0)?$user_count_arr[0]->user_count:'0';
  3880. foreach ($data_arr as $res_user) {
  3881. $i = 0;
  3882. $row++;
  3883. if (empty($res_user->smpin)) {
  3884. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3885. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3886. } else {
  3887. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->user->smpin);
  3888. }
  3889. if (empty($res_user->fname)) {
  3890. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3891. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3892. } else {
  3893. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->user->fname . " " . $res_user->user->lname);
  3894. }
  3895. if (empty($res_user->mobileno)) {
  3896. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3897. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3898. } else {
  3899. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->user->mobileno);
  3900. }
  3901. if (empty($res_user->dealer_name)) {
  3902. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3903. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3904. } else {
  3905. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->user->dealer->dealer_name);
  3906. }
  3907. if (empty($res_user->city)) {
  3908. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3909. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3910. } else {
  3911. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->user->city);
  3912. }
  3913. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->percentage_score . "%");
  3914. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->rank);
  3915. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $outof);
  3916. if (empty($res_user->zm_name)) {
  3917. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3918. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3919. } else {
  3920. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->user->dealer->zm_name);
  3921. }
  3922. if (empty($res_user->rm_name)) {
  3923. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3924. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3925. } else {
  3926. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->user->dealer->rm_name);
  3927. }
  3928. if (empty($res_user->am_name)) {
  3929. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  3930. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  3931. } else {
  3932. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->user->dealer->am_name);
  3933. }
  3934. }
  3935. }
  3936. }
  3937. //LOG
  3938. $logstr = 'ASSESSMENT LEADERBOARD REPORT EXPORT';
  3939. globalfunc::insertUserLog($parent, $logstr);
  3940. $objPHPExcel->getActiveSheet()->setTitle('ASSESSMENT LEADERBOARD REPORT');
  3941. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  3942. $fpath = "../../" . S3_REPORT_URL;
  3943. $filename = "assessment_leaderboard_report_" . uniqid() . ".xlsx";
  3944. $objWriter->save($fpath . $filename);
  3945. //CONNECT S3
  3946. $s3 = awsfileserver::connectS3();
  3947. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  3948. //delete report
  3949. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  3950. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  3951. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  3952. }
  3953. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  3954. /* /////////////////////////////// ASM ASSESSMENT REPORT EXPORT //////////////////////////////////////////////// */
  3955. private function asmassessmentreport($parent)
  3956. {
  3957. globalfunc::checkMethodType($parent, array('POST'));
  3958. globalfunc::checkParamCount($parent, 2);
  3959. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  3960. projectfunc::authorizedRole($parent, array('3', '4', '5', '6'));
  3961. //FIELDS VALIDATION
  3962. $REQUEST_KEYS = array('assessmentid' => 'integer');
  3963. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  3964. $assessmentid = escape_str($parent->_request["assessmentid"]);
  3965. //Excel class library
  3966. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  3967. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  3968. $objPHPExcel = new PHPExcel();
  3969. $objPHPExcel->setActiveSheetIndex(0);
  3970. $assessment_str = "SELECT assessmentname,pass_score FROM " . TABLE_ASSESSMENT . " WHERE assessmentid='" . $assessmentid . "' LIMIT 1";
  3971. $assessment_arr = $parent->getQueryValue($assessment_str);
  3972. $assessmentname = (count($assessment_arr) > 0) ? $assessment_arr[0]->assessmentname : '';
  3973. $pass_score = $assessment_arr[0]->pass_score;
  3974. //EXCEL HEADER
  3975. $row = 2;
  3976. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "Assessment : " . $assessmentname);
  3977. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":E" . $row);
  3978. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  3979. $row++;
  3980. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "Passing Percentage : " . $pass_score . "%");
  3981. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":E" . $row);
  3982. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  3983. //EXCEL HEADER
  3984. $row += 2;
  3985. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "ASSESSMENT REPORT");
  3986. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":H" . $row);
  3987. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  3988. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  3989. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  3990. $row += 2;
  3991. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row);
  3992. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  3993. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  3994. //SET HEADER
  3995. $header_arr = array('Emp code', 'Name', 'Mobile', 'Email', 'Score', 'Timetaken in Minutes', 'Completed Time', 'Result');
  3996. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('15');
  3997. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth('30');
  3998. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('15');
  3999. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth('25');
  4000. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth('20');
  4001. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth('10');
  4002. $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth('20');
  4003. $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth('10');
  4004. $i = 0;
  4005. foreach ($header_arr as $val) {
  4006. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  4007. }
  4008. $role = $parent->current_user_role;
  4009. $userdata = projectfunc::getuserdata($parent, $parent->current_user_id);
  4010. $user_cond = "";
  4011. $dealer_code_cond = '';
  4012. $qry_params = explode("?", $parent->params[1]);
  4013. $type = strtolower($qry_params[0]);
  4014. $user_cond = "";
  4015. $zm_email = escape_str($parent->_request["zmemail"]);
  4016. $rm_email = escape_str($parent->_request["rmemail"]);
  4017. //$am_email = escape_str($parent->_request["amemail"]);
  4018. if (($rm_email != 'all' && $rm_email != '') || ($zm_email != 'all' && $zm_email != '')) {
  4019. $mcond = '';
  4020. //$mcond=($am_email!='all' && $am_email!='')?" AND am_email='".$am_email."'":'';
  4021. $mcond .= ($rm_email != 'all' && $rm_email != '') ? " AND rm_email='" . $rm_email . "'" : '';
  4022. if ($parent->current_user_role != '5') {
  4023. $mcond .= ($zm_email != 'all' && $zm_email != '') ? " AND zm_email='" . $zm_email . "'" : '';
  4024. }
  4025. if ($parent->current_user_role == '5') {
  4026. $get_trainer_str = "SELECT h.zone FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.userid='" . $parent->current_user_id . "' AND u.role='5' LIMIT 1";
  4027. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  4028. $mcond .= (count($trainer_arr) > 0) ? "AND zone='" . $trainer_arr[0]->zone . "'" : "AND zone='0'";
  4029. }
  4030. //MANAGER
  4031. $query_all_amarr = $parent->selectQuery(DMS_DEALER, "`dealer_code`,am_email ", " status='1' AND is_deleted='0' " . $mcond . " GROUP BY am_email", "");
  4032. $emailid_arr = array();
  4033. if ($query_all_amarr['nr'] > 0) {
  4034. foreach ($query_all_amarr['result'] as $res) {
  4035. $emailid_arr[] = "'" . $res->am_email . "'";
  4036. }
  4037. $user_cond .= " AND u.emailid IN (" . implode(',', $emailid_arr) . ")";
  4038. } else {
  4039. $user_cond .= " AND u.emailid IN ('')";
  4040. }
  4041. } else {
  4042. //PAN
  4043. $user_cond = '';
  4044. if ($parent->current_user_role == '5') {
  4045. $get_trainer_str = "SELECT h.zone FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.userid='" . $parent->current_user_id . "' AND u.role='5' LIMIT 1";
  4046. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  4047. $mcond .= (count($trainer_arr) > 0) ? "AND zone='" . $trainer_arr[0]->zone . "'" : "AND zone='0'";
  4048. //$user_cond=" AND u.dealer_code IN (SELECT dealer_code FROM ".DMS_DEALER." WHERE is_deleted='0' ".$mcond.")";
  4049. $query_all_amarr = $parent->selectQuery(DMS_DEALER, "`dealer_code`,am_email ", " status='1' AND is_deleted='0' " . $mcond . " GROUP BY am_email", "");
  4050. $emailid_arr = array();
  4051. if ($query_all_amarr['nr'] > 0) {
  4052. foreach ($query_all_amarr['result'] as $res) {
  4053. $emailid_arr[] = "'" . $res->am_email . "'";
  4054. }
  4055. $user_cond .= " AND u.emailid IN (" . implode(',', $emailid_arr) . ")";
  4056. } else {
  4057. $user_cond .= " AND u.emailid IN ('')";
  4058. }
  4059. }
  4060. }
  4061. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[1]);
  4062. $order_by_cond = "ORDER BY u.fname ASC ";
  4063. if (isset($filter_arr) && isset($filter_arr['sort'])) {
  4064. //0-Score
  4065. //1-Name
  4066. switch ($filter_arr['sort']) {
  4067. case '1':$order_by_cond = "ORDER BY u.fname ASC ";
  4068. break;
  4069. default:$order_by_cond = "ORDER BY au.highscore DESC,au.modified_on ASC,u.fname ASC ";
  4070. break;
  4071. }
  4072. }
  4073. if (isset($parent->_request["search"])) {
  4074. $search_txt = escape_str($parent->_request["search"]);
  4075. $user_cond .= " AND (u.fname LIKE '%" . $search_txt . "%' OR u.lname LIKE '%" . $search_txt . "%' OR u.emp_code LIKE '%" . $search_txt . "%' OR u.emailid LIKE '%" . $search_txt . "%' )";
  4076. }
  4077. $get_user_str = "SELECT u.userid,u.fname,u.lname,u.emp_code,u.emailid,u.mobileno FROM " . TABLE_USER . " u JOIN " . TABLE_ASSESSMENT_USER . " as au ON u.userid=au.userid WHERE u.status='1' AND u.is_deleted='0' AND u.role=7 AND au.assessmentid='" . $assessmentid . "' " . $user_cond . $order_by_cond;
  4078. $user_arr = $parent->getQueryValue($get_user_str);
  4079. if (count($user_arr) > 0) {
  4080. foreach ($user_arr as $mkey => $res_user) {
  4081. //$header_arr=array('Emp code','Name','Mobile','Email','Score','Timetaken in Minutes','Completed Time');
  4082. $i = 0;
  4083. $row++;
  4084. $objPHPExcel->getActiveSheet()->getStyle('A' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  4085. if (empty($res_user->emp_code)) {
  4086. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  4087. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  4088. } else {
  4089. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->emp_code);
  4090. }
  4091. if (empty($res_user->fname)) {
  4092. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  4093. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  4094. } else {
  4095. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->fname . " " . $res_user->lname);
  4096. }
  4097. if (empty($res_user->mobileno)) {
  4098. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  4099. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  4100. } else {
  4101. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobileno);
  4102. }
  4103. if (empty($res_user->emailid)) {
  4104. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  4105. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  4106. } else {
  4107. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->emailid);
  4108. }
  4109. $exam_highscore_str = "SELECT * FROM " . TABLE_ASSESSMENT_USER . " WHERE assessmentid='" . $assessmentid . "' AND userid='" . $res_user->userid . "' LIMIT 1";
  4110. $exam_highscore_arr = $parent->getQueryValue($exam_highscore_str);
  4111. $highscore = (count($exam_highscore_arr) > 0) ? $exam_highscore_arr[0]->highscore : '0';
  4112. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $highscore . "%");
  4113. $timetaken = '';
  4114. $completedtime = '';
  4115. if (count($exam_highscore_arr) > 0) {
  4116. $exam_result_highscore_str = "SELECT * FROM " . TABLE_ASSESSMENTRESULT . " WHERE assessmentid='" . $assessmentid . "' AND arid='" . $exam_highscore_arr[0]->highscorearid . "' LIMIT 1";
  4117. $exam_result_highscore_arr = $parent->getQueryValue($exam_result_highscore_str);
  4118. $timetaken = (count($exam_result_highscore_arr) > 0 && isset($exam_result_highscore_arr[0]->time_taken)) ? round($exam_result_highscore_arr[0]->time_taken / 60) : "0";
  4119. $completedtime = (count($exam_result_highscore_arr) > 0 && isset($exam_result_highscore_arr[0]->modified_on)) ? date('d-m-Y h:i A', strtotime($exam_result_highscore_arr[0]->modified_on)) : "-";
  4120. }
  4121. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $timetaken);
  4122. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $completedtime);
  4123. $result_str = ($highscore >= $pass_score) ? "Pass" : "Fail";
  4124. $column_str = getColumnFromNumber($i++) . $row;
  4125. if ($result_str == 'Pass') {
  4126. $objPHPExcel->getActiveSheet()->getStyle($column_str)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB("008000");
  4127. } else {
  4128. $objPHPExcel->getActiveSheet()->getStyle($column_str)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB("FF0000");
  4129. }
  4130. $objPHPExcel->getActiveSheet()->SetCellValue($column_str, $result_str);
  4131. }
  4132. }
  4133. //LOG
  4134. $logstr = 'AM ASSESSMENT REPORT EXPORT';
  4135. globalfunc::insertUserLog($parent, $logstr);
  4136. $objPHPExcel->getActiveSheet()->setTitle('ASSESSMENT REPORT');
  4137. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  4138. $fpath = "../../" . S3_REPORT_URL;
  4139. $filename = "assessment_report_" . uniqid() . ".xlsx";
  4140. $objWriter->save($fpath . $filename);
  4141. //CONNECT S3
  4142. $s3 = awsfileserver::connectS3();
  4143. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  4144. //delete report
  4145. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  4146. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  4147. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  4148. }
  4149. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  4150. /* /////////////////////////////// RM ASSESSMENT REPORT EXPORT //////////////////////////////////////////////// */
  4151. private function rmassessmentreport($parent)
  4152. {
  4153. globalfunc::checkMethodType($parent, array('POST'));
  4154. globalfunc::checkParamCount($parent, 2);
  4155. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  4156. projectfunc::authorizedRole($parent, array('3', '4', '5'));
  4157. //FIELDS VALIDATION
  4158. $REQUEST_KEYS = array('assessmentid' => 'integer');
  4159. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  4160. $assessmentid = escape_str($parent->_request["assessmentid"]);
  4161. //Excel class library
  4162. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  4163. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  4164. $objPHPExcel = new PHPExcel();
  4165. $objPHPExcel->setActiveSheetIndex(0);
  4166. $assessment_str = "SELECT assessmentname,pass_score FROM " . TABLE_ASSESSMENT . " WHERE assessmentid='" . $assessmentid . "' LIMIT 1";
  4167. $assessment_arr = $parent->getQueryValue($assessment_str);
  4168. $assessmentname = (count($assessment_arr) > 0) ? $assessment_arr[0]->assessmentname : '';
  4169. $pass_score = $assessment_arr[0]->pass_score;
  4170. //EXCEL HEADER
  4171. $row = 2;
  4172. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "Assessment : " . $assessmentname);
  4173. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":E" . $row);
  4174. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  4175. $row++;
  4176. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "Passing Percentage : " . $pass_score . "%");
  4177. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":E" . $row);
  4178. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  4179. //EXCEL HEADER
  4180. $row += 2;
  4181. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "ASSESSMENT REPORT");
  4182. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":H" . $row);
  4183. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  4184. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  4185. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  4186. $row += 2;
  4187. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row);
  4188. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  4189. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  4190. //SET HEADER
  4191. $header_arr = array('Emp code', 'Name', 'Mobile', 'Email', 'Score', 'Timetaken in Minutes', 'Completed Time', 'Result');
  4192. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('15');
  4193. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth('30');
  4194. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('15');
  4195. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth('25');
  4196. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth('20');
  4197. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth('10');
  4198. $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth('20');
  4199. $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth('10');
  4200. $i = 0;
  4201. foreach ($header_arr as $val) {
  4202. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  4203. }
  4204. $role = $parent->current_user_role;
  4205. $userdata = projectfunc::getuserdata($parent, $parent->current_user_id);
  4206. $user_cond = "";
  4207. $dealer_code_cond = '';
  4208. $qry_params = explode("?", $parent->params[1]);
  4209. $type = strtolower($qry_params[0]);
  4210. $user_cond = "";
  4211. $zm_email = escape_str($parent->_request["zmemail"]);
  4212. //$rm_email = escape_str($parent->_request["rmemail"]);
  4213. //$am_email = escape_str($parent->_request["amemail"]);
  4214. if ($zm_email != 'all' && $zm_email != '') {
  4215. $mcond = '';
  4216. //$mcond=($am_email!='all' && $am_email!='')?" AND am_email='".$am_email."'":'';
  4217. //$mcond.=($rm_email!='all' && $rm_email!='')?" AND rm_email='".$rm_email."'":'';
  4218. if ($parent->current_user_role != '5') {
  4219. $mcond .= ($zm_email != 'all' && $zm_email != '') ? " AND zm_email='" . $zm_email . "'" : '';
  4220. }
  4221. if ($parent->current_user_role == '5') {
  4222. $get_trainer_str = "SELECT h.zone FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.userid='" . $parent->current_user_id . "' AND u.role='5' LIMIT 1";
  4223. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  4224. $mcond .= (count($trainer_arr) > 0) ? "AND zone='" . $trainer_arr[0]->zone . "'" : "AND zone='0'";
  4225. }
  4226. //MANAGER
  4227. $query_all_amarr = $parent->selectQuery(DMS_DEALER, "`dealer_code`,rm_email ", " status='1' AND is_deleted='0' " . $mcond . " GROUP BY rm_email", "");
  4228. $emailid_arr = array();
  4229. if ($query_all_amarr['nr'] > 0) {
  4230. foreach ($query_all_amarr['result'] as $res) {
  4231. $emailid_arr[] = "'" . $res->rm_email . "'";
  4232. }
  4233. $user_cond .= " AND u.emailid IN (" . implode(',', $emailid_arr) . ")";
  4234. } else {
  4235. $user_cond .= " AND u.emailid IN ('')";
  4236. }
  4237. } else {
  4238. //PAN
  4239. $user_cond = '';
  4240. if ($parent->current_user_role == '5') {
  4241. $get_trainer_str = "SELECT h.zone FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.userid='" . $parent->current_user_id . "' AND u.role='5' LIMIT 1";
  4242. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  4243. $mcond .= (count($trainer_arr) > 0) ? "AND zone='" . $trainer_arr[0]->zone . "'" : "AND zone='0'";
  4244. //$user_cond=" AND u.dealer_code IN (SELECT dealer_code FROM ".DMS_DEALER." WHERE is_deleted='0' ".$mcond.")";
  4245. $query_all_amarr = $parent->selectQuery(DMS_DEALER, "`dealer_code`,rm_email ", " status='1' AND is_deleted='0' " . $mcond . " GROUP BY rm_email", "");
  4246. $emailid_arr = array();
  4247. if ($query_all_amarr['nr'] > 0) {
  4248. foreach ($query_all_amarr['result'] as $res) {
  4249. $emailid_arr[] = "'" . $res->rm_email . "'";
  4250. }
  4251. $user_cond .= " AND u.emailid IN (" . implode(',', $emailid_arr) . ")";
  4252. } else {
  4253. $user_cond .= " AND u.emailid IN ('')";
  4254. }
  4255. }
  4256. }
  4257. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[1]);
  4258. $order_by_cond = "ORDER BY u.fname ASC ";
  4259. if (isset($filter_arr) && isset($filter_arr['sort'])) {
  4260. //0-Score
  4261. //1-Name
  4262. switch ($filter_arr['sort']) {
  4263. case '1':$order_by_cond = "ORDER BY u.fname ASC ";
  4264. break;
  4265. default:$order_by_cond = "ORDER BY au.highscore DESC,au.modified_on ASC,u.fname ASC ";
  4266. break;
  4267. }
  4268. }
  4269. if (isset($parent->_request["search"])) {
  4270. $search_txt = escape_str($parent->_request["search"]);
  4271. $user_cond .= " AND (u.fname LIKE '%" . $search_txt . "%' OR u.lname LIKE '%" . $search_txt . "%' OR u.emp_code LIKE '%" . $search_txt . "%' OR u.emailid LIKE '%" . $search_txt . "%' )";
  4272. }
  4273. $get_user_str = "SELECT u.userid,u.fname,u.lname,u.emp_code,u.emailid,u.mobileno FROM " . TABLE_USER . " u JOIN " . TABLE_ASSESSMENT_USER . " as au ON u.userid=au.userid WHERE u.status='1' AND u.is_deleted='0' AND u.role=6 AND au.assessmentid='" . $assessmentid . "' " . $user_cond . $order_by_cond;
  4274. $user_arr = $parent->getQueryValue($get_user_str);
  4275. if (count($user_arr) > 0) {
  4276. foreach ($user_arr as $mkey => $res_user) {
  4277. $i = 0;
  4278. $row++;
  4279. $objPHPExcel->getActiveSheet()->getStyle('A' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  4280. if (empty($res_user->emp_code)) {
  4281. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  4282. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  4283. } else {
  4284. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->emp_code);
  4285. }
  4286. if (empty($res_user->fname)) {
  4287. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  4288. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  4289. } else {
  4290. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->fname . " " . $res_user->lname);
  4291. }
  4292. if (empty($res_user->mobileno)) {
  4293. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  4294. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  4295. } else {
  4296. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobileno);
  4297. }
  4298. if (empty($res_user->emailid)) {
  4299. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  4300. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  4301. } else {
  4302. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->emailid);
  4303. }
  4304. $exam_highscore_str = "SELECT * FROM " . TABLE_ASSESSMENT_USER . " WHERE assessmentid='" . $assessmentid . "' AND userid='" . $res_user->userid . "' LIMIT 1";
  4305. $exam_highscore_arr = $parent->getQueryValue($exam_highscore_str);
  4306. $highscore = (count($exam_highscore_arr) > 0) ? $exam_highscore_arr[0]->highscore : '0';
  4307. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $highscore . "%");
  4308. $timetaken = '';
  4309. $completedtime = '';
  4310. if (count($exam_highscore_arr) > 0) {
  4311. $exam_result_highscore_str = "SELECT * FROM " . TABLE_ASSESSMENTRESULT . " WHERE assessmentid='" . $assessmentid . "' AND arid='" . $exam_highscore_arr[0]->highscorearid . "' LIMIT 1";
  4312. $exam_result_highscore_arr = $parent->getQueryValue($exam_result_highscore_str);
  4313. $timetaken = (count($exam_result_highscore_arr) > 0 && isset($exam_result_highscore_arr[0]->time_taken)) ? round($exam_result_highscore_arr[0]->time_taken / 60) : "0";
  4314. $completedtime = (count($exam_result_highscore_arr) > 0 && isset($exam_result_highscore_arr[0]->modified_on)) ? date('d-m-Y h:i A', strtotime($exam_result_highscore_arr[0]->modified_on)) : "-";
  4315. }
  4316. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $timetaken);
  4317. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $completedtime);
  4318. $result_str = ($highscore >= $pass_score) ? "Pass" : "Fail";
  4319. $column_str = getColumnFromNumber($i++) . $row;
  4320. if ($result_str == 'Pass') {
  4321. $objPHPExcel->getActiveSheet()->getStyle($column_str)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB("008000");
  4322. } else {
  4323. $objPHPExcel->getActiveSheet()->getStyle($column_str)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB("FF0000");
  4324. }
  4325. $objPHPExcel->getActiveSheet()->SetCellValue($column_str, $result_str);
  4326. }
  4327. }
  4328. //LOG
  4329. $logstr = 'RM ASSESSMENT REPORT EXPORT';
  4330. globalfunc::insertUserLog($parent, $logstr);
  4331. $objPHPExcel->getActiveSheet()->setTitle('ASSESSMENT REPORT');
  4332. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  4333. $fpath = "../../" . S3_REPORT_URL;
  4334. $filename = "assessment_report_" . uniqid() . ".xlsx";
  4335. $objWriter->save($fpath . $filename);
  4336. //CONNECT S3
  4337. $s3 = awsfileserver::connectS3();
  4338. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  4339. //delete report
  4340. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  4341. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  4342. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  4343. }
  4344. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  4345. /* /////////////////////////////// ZM ASSESSMENT REPORT EXPORT //////////////////////////////////////////////// */
  4346. private function zmassessmentreport($parent)
  4347. {
  4348. globalfunc::checkMethodType($parent, array('POST'));
  4349. globalfunc::checkParamCount($parent, 1);
  4350. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  4351. projectfunc::authorizedRole($parent, array('3'));
  4352. //FIELDS VALIDATION
  4353. $REQUEST_KEYS = array('assessmentid' => 'integer');
  4354. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  4355. $assessmentid = escape_str($parent->_request["assessmentid"]);
  4356. //Excel class library
  4357. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  4358. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  4359. $objPHPExcel = new PHPExcel();
  4360. $objPHPExcel->setActiveSheetIndex(0);
  4361. $assessment_str = "SELECT assessmentname,pass_score FROM " . TABLE_ASSESSMENT . " WHERE assessmentid='" . $assessmentid . "' LIMIT 1";
  4362. $assessment_arr = $parent->getQueryValue($assessment_str);
  4363. $assessmentname = (count($assessment_arr) > 0) ? $assessment_arr[0]->assessmentname : '';
  4364. $pass_score = $assessment_arr[0]->pass_score;
  4365. //EXCEL HEADER
  4366. $row = 2;
  4367. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "Assessment : " . $assessmentname);
  4368. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":E" . $row);
  4369. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  4370. $row++;
  4371. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "Passing Percentage : " . $pass_score . "%");
  4372. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":E" . $row);
  4373. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  4374. //EXCEL HEADER
  4375. $row += 2;
  4376. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "ASSESSMENT REPORT");
  4377. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":H" . $row);
  4378. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  4379. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  4380. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  4381. $row += 2;
  4382. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row);
  4383. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  4384. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  4385. //SET HEADER
  4386. $header_arr = array('Emp code', 'Name', 'Mobile', 'Email', 'Score', 'Timetaken in Minutes', 'Completed Time', 'Result');
  4387. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('15');
  4388. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth('30');
  4389. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('15');
  4390. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth('25');
  4391. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth('20');
  4392. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth('10');
  4393. $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth('20');
  4394. $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth('10');
  4395. $i = 0;
  4396. foreach ($header_arr as $val) {
  4397. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  4398. }
  4399. $role = $parent->current_user_role;
  4400. $userdata = projectfunc::getuserdata($parent, $parent->current_user_id);
  4401. $user_cond = "";
  4402. $dealer_code_cond = '';
  4403. $user_cond = "";
  4404. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[1]);
  4405. $order_by_cond = "ORDER BY u.fname ASC ";
  4406. if (isset($filter_arr) && isset($filter_arr['sort'])) {
  4407. //0-Score
  4408. //1-Name
  4409. switch ($filter_arr['sort']) {
  4410. case '1':$order_by_cond = "ORDER BY u.fname ASC ";
  4411. break;
  4412. default:$order_by_cond = "ORDER BY au.highscore DESC,au.modified_on ASC,u.fname ASC ";
  4413. break;
  4414. }
  4415. }
  4416. if (isset($parent->_request["search"])) {
  4417. $search_txt = escape_str($parent->_request["search"]);
  4418. $user_cond .= " AND (u.fname LIKE '%" . $search_txt . "%' OR u.lname LIKE '%" . $search_txt . "%' OR u.emp_code LIKE '%" . $search_txt . "%' OR u.emailid LIKE '%" . $search_txt . "%' )";
  4419. }
  4420. $get_user_str = "SELECT u.userid,u.fname,u.lname,u.emp_code,u.emailid,u.mobileno FROM " . TABLE_USER . " u JOIN " . TABLE_ASSESSMENT_USER . " as au ON u.userid=au.userid WHERE u.status='1' AND u.is_deleted='0' AND u.role=4 AND au.assessmentid='" . $assessmentid . "' " . $user_cond . $order_by_cond;
  4421. $user_arr = $parent->getQueryValue($get_user_str);
  4422. if (count($user_arr) > 0) {
  4423. foreach ($user_arr as $mkey => $res_user) {
  4424. //$header_arr=array('Emp code','Name','Mobile','Email','Score','Timetaken in Minutes','Completed Time');
  4425. $i = 0;
  4426. $row++;
  4427. $objPHPExcel->getActiveSheet()->getStyle('A' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  4428. if (empty($res_user->emp_code)) {
  4429. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  4430. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  4431. } else {
  4432. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->emp_code);
  4433. }
  4434. if (empty($res_user->fname)) {
  4435. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  4436. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  4437. } else {
  4438. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->fname . " " . $res_user->lname);
  4439. }
  4440. if (empty($res_user->mobileno)) {
  4441. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  4442. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  4443. } else {
  4444. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobileno);
  4445. }
  4446. if (empty($res_user->emailid)) {
  4447. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  4448. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  4449. } else {
  4450. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->emailid);
  4451. }
  4452. $exam_highscore_str = "SELECT * FROM " . TABLE_ASSESSMENT_USER . " WHERE assessmentid='" . $assessmentid . "' AND userid='" . $res_user->userid . "' LIMIT 1";
  4453. $exam_highscore_arr = $parent->getQueryValue($exam_highscore_str);
  4454. $highscore = (count($exam_highscore_arr) > 0) ? $exam_highscore_arr[0]->highscore : '0';
  4455. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $highscore . "%");
  4456. $timetaken = '';
  4457. $completedtime = '';
  4458. if (count($exam_highscore_arr) > 0) {
  4459. $exam_result_highscore_str = "SELECT * FROM " . TABLE_ASSESSMENTRESULT . " WHERE assessmentid='" . $assessmentid . "' AND arid='" . $exam_highscore_arr[0]->highscorearid . "' LIMIT 1";
  4460. $exam_result_highscore_arr = $parent->getQueryValue($exam_result_highscore_str);
  4461. $timetaken = (count($exam_result_highscore_arr) > 0 && isset($exam_result_highscore_arr[0]->time_taken)) ? round($exam_result_highscore_arr[0]->time_taken / 60) : "0";
  4462. $completedtime = (count($exam_result_highscore_arr) > 0 && isset($exam_result_highscore_arr[0]->modified_on)) ? date('d-m-Y h:i A', strtotime($exam_result_highscore_arr[0]->modified_on)) : "-";
  4463. }
  4464. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $timetaken);
  4465. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $completedtime);
  4466. $result_str = ($highscore >= $pass_score) ? "Pass" : "Fail";
  4467. $column_str = getColumnFromNumber($i++) . $row;
  4468. if ($result_str == 'Pass') {
  4469. $objPHPExcel->getActiveSheet()->getStyle($column_str)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB("008000");
  4470. } else {
  4471. $objPHPExcel->getActiveSheet()->getStyle($column_str)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB("FF0000");
  4472. }
  4473. $objPHPExcel->getActiveSheet()->SetCellValue($column_str, $result_str);
  4474. }
  4475. }
  4476. //LOG
  4477. $logstr = 'ZM ASSESSMENT REPORT EXPORT';
  4478. globalfunc::insertUserLog($parent, $logstr);
  4479. $objPHPExcel->getActiveSheet()->setTitle('ASSESSMENT REPORT');
  4480. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  4481. $fpath = "../../" . S3_REPORT_URL;
  4482. $filename = "assessment_report_" . uniqid() . ".xlsx";
  4483. $objWriter->save($fpath . $filename);
  4484. //CONNECT S3
  4485. $s3 = awsfileserver::connectS3();
  4486. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  4487. //delete report
  4488. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  4489. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  4490. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  4491. }
  4492. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  4493. /* /////////////////////////////// SURVEY REPORT EXPORT //////////////////////////////////////////////// */
  4494. private function surveyreportexport($parent)
  4495. {
  4496. globalfunc::checkMethodType($parent, array('POST'));
  4497. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  4498. //FIELDS VALIDATION
  4499. globalfunc::checkParamCount($parent, 2);
  4500. //FIELDS VALIDATION
  4501. $REQUEST_KEYS = array('assessmentid' => 'integer');
  4502. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  4503. $assessmentid = escape_str($parent->_request["assessmentid"]);
  4504. $query_str = "SELECT assessmentid,assessmentname FROM " . TABLE_ASSESSMENT . " WHERE status='1' AND assettypeid='2' AND assessmentid='" . $assessmentid . "' AND publisheddate<='" . NOW . "' LIMIT 1";
  4505. $query_arr = $parent->getQueryValue($query_str);
  4506. if (!count($query_arr) > 0) {
  4507. $parent->response(array('response' => 'failed', 'message' => $this->page_data["error9"]), 406);
  4508. }
  4509. //Excel class library
  4510. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  4511. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  4512. $objPHPExcel = new PHPExcel();
  4513. $objPHPExcel->setActiveSheetIndex(0);
  4514. //EXCEL HEADER
  4515. $row = 2;
  4516. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "FEEDBACK REPORT");
  4517. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":F" . $row);
  4518. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  4519. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  4520. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  4521. $row += 2;
  4522. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "Survey : " . $query_arr[0]->assessmentname);
  4523. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":F" . $row);
  4524. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  4525. $row += 2;
  4526. $header_arr = array('S.No', 'SMPIN', 'DSE Name', 'Mobile', 'Dealer Name', 'Date & Time');
  4527. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row);
  4528. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('15');
  4529. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth('15');
  4530. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('30');
  4531. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth('15');
  4532. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth('30');
  4533. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth('20');
  4534. $ques_str = "SELECT q.id as qid, q.`questiontypeid`, q.`questiontext`, q.`qimage`, q.`qvideo` FROM " . TABLE_QUESTION . " as q WHERE id IN (SELECT qid FROM " . TABLE_ASSESSMENT_QUESTION . " WHERE assessmentid='" . $assessmentid . "') ORDER BY id ASC ";
  4535. $ques_arr = $parent->getQueryValue($ques_str);
  4536. if (count($ques_arr)) {
  4537. $i = 6;
  4538. foreach ($ques_arr as $res_ques) {
  4539. $column = getColumnFromNumber($i++);
  4540. $bordercells_arr[] = $column . $row;
  4541. $header_arr[] = $res_ques->questiontext;
  4542. $objPHPExcel->getActiveSheet()->getColumnDimension($column)->setWidth('40');
  4543. }
  4544. }
  4545. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  4546. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  4547. $i = 0;
  4548. foreach ($header_arr as $val) {
  4549. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  4550. }
  4551. $role = $parent->current_user_role;
  4552. $userdata = projectfunc::getuserdata($parent, $parent->current_user_id);
  4553. $dealer_code_cond = '';
  4554. $qry_params = explode("?", $parent->params[1]);
  4555. $type = strtolower($qry_params[0]);
  4556. $user_cond = "";
  4557. switch ($type) {
  4558. case "zm":
  4559. if ($parent->current_user_role == '3') {
  4560. $REQUEST_KEYS = array('zmemail' => 'string');
  4561. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  4562. $emailid = escape_str($parent->_request["zmemail"]);
  4563. if ($emailid != 'all') {
  4564. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE zm_email='" . $emailid . "' AND status='1' AND is_deleted='0')";
  4565. } else {
  4566. $user_cond .= "";
  4567. }
  4568. } else {
  4569. $parent->response(array('response' => 'failed', 'message' => 'Sorry No access'), 401);
  4570. }
  4571. break;
  4572. case "rm":
  4573. if ($parent->current_user_role < '7') {
  4574. if ($parent->current_user_role == '5') {
  4575. $REQUEST_KEYS = array('rmemail' => 'string');
  4576. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  4577. $emailid = escape_str($parent->_request["rmemail"]);
  4578. if ($emailid == 'all') {
  4579. $get_trainer_str = "SELECT h.* FROM " . DMS_HOUSER . " h JOIN " . TABLE_USER . " u ON u.emp_code=h.emp_code WHERE u.userid='" . $parent->current_user_id . "' AND u.role='5' LIMIT 1";
  4580. $trainer_arr = $parent->getQueryValue($get_trainer_str);
  4581. $zone_cond .= (count($trainer_arr) > 0) ? " zone='" . $trainer_arr[0]->zone . "'" : " zone='0'";
  4582. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE " . $zone_cond . " AND status='1' AND is_deleted='0')";
  4583. } else {
  4584. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE rm_email='" . $emailid . "' AND status='1' AND is_deleted='0')";
  4585. }
  4586. } else {
  4587. $REQUEST_KEYS = array('rmemail' => 'string');
  4588. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  4589. $emailid = escape_str($parent->_request["rmemail"]);
  4590. if ($emailid == 'all') {
  4591. $REQUEST_KEYS = array('zmemail' => 'string');
  4592. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  4593. $emailid = escape_str($parent->_request["zmemail"]);
  4594. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE zm_email='" . $emailid . "' AND status='1' AND is_deleted='0')";
  4595. } else {
  4596. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE rm_email='" . $emailid . "' AND status='1' AND is_deleted='0')";
  4597. }
  4598. }
  4599. } else {
  4600. $parent->response(array('response' => 'failed', 'message' => 'Sorry No access'), 401);
  4601. }
  4602. break;
  4603. case "am":
  4604. if ($parent->current_user_role == '14') {
  4605. $dealer_code_cond = " dealer_code='" . $parent->current_user_data->dealer_code . "'";
  4606. } else {
  4607. $REQUEST_KEYS = array('amemail' => 'string');
  4608. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  4609. $emailid = escape_str($parent->_request["amemail"]);
  4610. if ($emailid == 'all') {
  4611. $REQUEST_KEYS = array('rmemail' => 'string');
  4612. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  4613. $emailid = escape_str($parent->_request["rmemail"]);
  4614. $dealer_code_cond = " rm_email='" . $emailid . "'";
  4615. } else {
  4616. $dealer_code_cond = " am_email='" . $emailid . "'";
  4617. }
  4618. }
  4619. $user_cond .= " AND u.dealer_code IN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE " . $dealer_code_cond . " AND status='1' AND is_deleted='0')";
  4620. break;
  4621. default:$parent->response(array('response' => 'failed', 'message' => 'Sorry No access'), 401);
  4622. break;
  4623. }
  4624. if (isset($parent->_request["search"]) && $parent->_request["search"] != '') {
  4625. $search_txt = escape_str($parent->_request["search"]);
  4626. $user_cond .= " AND (u.fname LIKE '%" . $search_txt . "%' OR u.lname LIKE '%" . $search_txt . "%' OR u.smpin LIKE '%" . $search_txt . "%' OR d.dealer_name LIKE '%" . $search_txt . "%' OR d.zm_name LIKE '%" . $search_txt . "%' OR d.rm_name LIKE '%" . $search_txt . "%' OR d.am_name LIKE '%" . $search_txt . "%' OR d.city LIKE '%" . $search_txt . "%' )";
  4627. }
  4628. //GET USER ATTENTED
  4629. $query_assess_str = "SELECT a.* FROM " . TABLE_ASSESSMENT_USER . " as a JOIN " . TABLE_USER . " u ON u.userid=a.userid WHERE a.assessmentid='" . $assessmentid . "' AND a.highscorearid!='0' AND u.is_deleted=0 " . $user_cond;
  4630. $query_assess_arr = $parent->getQueryValue($query_assess_str);
  4631. if (!count($query_assess_arr) > 0) {
  4632. $parent->response(array('response' => 'failed', 'message' => $this->page_data["error10"]), 406);
  4633. }
  4634. if (count($query_assess_arr) > 0) {
  4635. $survey_str = "SELECT * FROM " . TABLE_SURVEY_RATING . " ORDER BY id ASC";
  4636. $survey_arr = $parent->getQueryValue($survey_str);
  4637. if (count($survey_arr) > 0) {
  4638. foreach ($survey_arr as $skey => $res_survey) {
  4639. $rating_arr[$res_survey->id] = $res_survey->rating_text;
  4640. }
  4641. }
  4642. $sno = 1;
  4643. foreach ($query_assess_arr as $res_user) {
  4644. $userid = $res_user->userid;
  4645. $user_data = projectfunc::getuserdata($parent, $userid);
  4646. $row++;
  4647. $i = 0;
  4648. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $sno++);
  4649. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $user_data->smpin);
  4650. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $user_data->fname . " " . $user_data->lname);
  4651. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $user_data->mobileno);
  4652. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $user_data->dealer->dealer_name . " " . $user_data->dealer->dealer_code);
  4653. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, date('d-m-Y h:i A', strtotime($res_user->created_on)));
  4654. //GET USER RESULT
  4655. $query_res_str = "SELECT au.* FROM " . TABLE_ASSESSMENT_USERRESULT . " as au JOIN " . TABLE_ASSESSMENTRESULT . " as ar ON au.arid=ar.arid WHERE au.userid='" . $userid . "' AND au.assessmentid='" . $assessmentid . "' AND au.arid='" . $res_user->highscorearid . "' GROUP BY au.arid,au.aqid ORDER by qid ASC";
  4656. $query_assess_res_arr = $parent->getQueryValue($query_res_str);
  4657. if (!count($query_assess_res_arr) > 0) {
  4658. $parent->response(array('response' => 'failed', 'message' => $this->page_data["error10"]), 406);
  4659. }
  4660. if (count($query_assess_res_arr) > 0) {
  4661. // $sno=1;
  4662. foreach ($query_assess_res_arr as $res) {
  4663. $ques_str = "SELECT q.id as qid, q.`questiontypeid`, q.`questiontext`, q.`qimage`, q.`qvideo` FROM " . TABLE_QUESTION . " as q WHERE id='" . $res->qid . "' LIMIT 1";
  4664. $ques_arr = $parent->getQueryValue($ques_str);
  4665. if (count($ques_arr) > 0) {
  4666. //GET USER ANSWERED OPTIONS
  4667. $user_answer_str = "SELECT * FROM " . TABLE_ASSESSMENT_USERRESULT . " WHERE userid='" . $userid . "' AND arid='" . $res_user->highscorearid . "' AND aqid='" . $res->aqid . "'";
  4668. $user_answer_arr = $parent->getQueryValue($user_answer_str);
  4669. $ques_arr[0]->answer = array();
  4670. if (count($user_answer_arr) > 0) {
  4671. foreach ($user_answer_arr as $res_answer) {
  4672. //GET RATING
  4673. $ques_arr[0]->survey_text = '';
  4674. if ($ques_arr[0]->questiontypeid == '3') {
  4675. if ($res_answer->survey_rating == $res_survey->score) {
  4676. $rating = $res_answer->survey_rating;
  4677. $ques_arr[0]->answer[] = isset($rating_arr[$rating]) ? $rating_arr[$rating] : '';
  4678. }
  4679. } elseif ($ques_arr[0]->questiontypeid == '5' || $ques_arr[0]->questiontypeid == '6') {
  4680. //GET ALL QUESTION OPTIONS
  4681. if ($res_answer->choiseid) {
  4682. $ques_option_str = "SELECT op.optid,op.opttext,'0' as selected FROM " . TABLE_QUESTIONOPTION . " as op WHERE op.qid='" . $res->qid . "' AND op.optid='" . $res_answer->choiseid . "' LIMIT 1";
  4683. $ques_option_arr = $parent->getQueryValue($ques_option_str);
  4684. if (count($ques_option_arr) > 0) {
  4685. $ques_arr[0]->answer[] = $ques_option_arr[0]->opttext;
  4686. }
  4687. }
  4688. } else {
  4689. $ques_arr[0]->answer[] = ($res_answer->survey_text != '') ? $res_answer->survey_text : '';
  4690. }
  4691. }
  4692. }
  4693. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, @implode(',', $ques_arr[0]->answer));
  4694. }
  4695. }
  4696. }
  4697. }
  4698. }
  4699. $objPHPExcel->getActiveSheet()->setTitle('FEEDBACK REPORT');
  4700. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  4701. $fpath = "../../" . S3_REPORT_URL;
  4702. $filename = "feedback_report_" . uniqid() . ".xlsx";
  4703. $objWriter->save($fpath . $filename);
  4704. //CONNECT S3
  4705. $s3 = awsfileserver::connectS3();
  4706. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  4707. //delete report
  4708. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  4709. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  4710. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  4711. }
  4712. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  4713. /* /////////////////////////////// TRAINER ASSESSMENT REPORT EXPORT //////////////////////////////////////////////// */
  4714. private function trainerassessmentreport($parent)
  4715. {
  4716. globalfunc::checkMethodType($parent, array('POST'));
  4717. globalfunc::checkParamCount($parent, 1);
  4718. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  4719. projectfunc::authorizedRole($parent, array('3'));
  4720. //FIELDS VALIDATION
  4721. $REQUEST_KEYS = array('assessmentid' => 'integer');
  4722. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  4723. $assessmentid = escape_str($parent->_request["assessmentid"]);
  4724. //Excel class library
  4725. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  4726. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  4727. $objPHPExcel = new PHPExcel();
  4728. $objPHPExcel->setActiveSheetIndex(0);
  4729. $assessment_str = "SELECT assessmentname,pass_score FROM " . TABLE_ASSESSMENT . " WHERE assessmentid='" . $assessmentid . "' LIMIT 1";
  4730. $assessment_arr = $parent->getQueryValue($assessment_str);
  4731. $assessmentname = (count($assessment_arr) > 0) ? $assessment_arr[0]->assessmentname : '';
  4732. $pass_score = $assessment_arr[0]->pass_score;
  4733. //EXCEL HEADER
  4734. $row = 2;
  4735. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "Assessment : " . $assessmentname);
  4736. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":E" . $row);
  4737. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  4738. $row++;
  4739. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "Passing Percentage : " . $pass_score . "%");
  4740. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":E" . $row);
  4741. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  4742. //EXCEL HEADER
  4743. $row += 2;
  4744. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "ASSESSMENT REPORT");
  4745. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":H" . $row);
  4746. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  4747. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  4748. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  4749. $row += 2;
  4750. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row);
  4751. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  4752. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  4753. //SET HEADER
  4754. $header_arr = array('Emp code', 'Name', 'Mobile', 'Email', 'Score', 'Timetaken in Minutes', 'Completed Time', 'Result');
  4755. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('15');
  4756. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth('30');
  4757. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('15');
  4758. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth('25');
  4759. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth('20');
  4760. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth('10');
  4761. $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth('20');
  4762. $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth('10');
  4763. $i = 0;
  4764. foreach ($header_arr as $val) {
  4765. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  4766. }
  4767. $role = $parent->current_user_role;
  4768. $userdata = projectfunc::getuserdata($parent, $parent->current_user_id);
  4769. $user_cond = "";
  4770. $dealer_code_cond = '';
  4771. $user_cond = "";
  4772. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[1]);
  4773. $order_by_cond = "ORDER BY u.fname ASC ";
  4774. if (isset($filter_arr) && isset($filter_arr['sort'])) {
  4775. //0-Score
  4776. //1-Name
  4777. switch ($filter_arr['sort']) {
  4778. case '1':$order_by_cond = "ORDER BY u.fname ASC ";
  4779. break;
  4780. default:$order_by_cond = "ORDER BY au.highscore DESC,au.modified_on ASC,u.fname ASC ";
  4781. break;
  4782. }
  4783. }
  4784. if (isset($parent->_request["search"])) {
  4785. $search_txt = escape_str($parent->_request["search"]);
  4786. $user_cond .= " AND (u.fname LIKE '%" . $search_txt . "%' OR u.lname LIKE '%" . $search_txt . "%' OR u.emp_code LIKE '%" . $search_txt . "%' OR u.emailid LIKE '%" . $search_txt . "%' )";
  4787. }
  4788. $get_user_str = "SELECT u.userid,u.fname,u.lname,u.emp_code,u.emailid,u.mobileno FROM " . TABLE_USER . " u JOIN " . TABLE_ASSESSMENT_USER . " as au ON u.userid=au.userid WHERE u.status='1' AND u.is_deleted='0' AND u.role=5 AND au.assessmentid='" . $assessmentid . "' " . $user_cond . $order_by_cond;
  4789. $user_arr = $parent->getQueryValue($get_user_str);
  4790. if (count($user_arr) > 0) {
  4791. foreach ($user_arr as $mkey => $res_user) {
  4792. //$header_arr=array('Emp code','Name','Mobile','Email','Score','Timetaken in Minutes','Completed Time');
  4793. $i = 0;
  4794. $row++;
  4795. $objPHPExcel->getActiveSheet()->getStyle('A' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  4796. if (empty($res_user->emp_code)) {
  4797. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  4798. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  4799. } else {
  4800. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->emp_code);
  4801. }
  4802. if (empty($res_user->fname)) {
  4803. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  4804. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  4805. } else {
  4806. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->fname . " " . $res_user->lname);
  4807. }
  4808. if (empty($res_user->mobileno)) {
  4809. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  4810. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  4811. } else {
  4812. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobileno);
  4813. }
  4814. if (empty($res_user->emailid)) {
  4815. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  4816. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  4817. } else {
  4818. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->emailid);
  4819. }
  4820. $exam_highscore_str = "SELECT * FROM " . TABLE_ASSESSMENT_USER . " WHERE assessmentid='" . $assessmentid . "' AND userid='" . $res_user->userid . "' LIMIT 1";
  4821. $exam_highscore_arr = $parent->getQueryValue($exam_highscore_str);
  4822. $highscore = (count($exam_highscore_arr) > 0) ? $exam_highscore_arr[0]->highscore : '0';
  4823. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $highscore . "%");
  4824. $timetaken = '';
  4825. $completedtime = '';
  4826. if (count($exam_highscore_arr) > 0) {
  4827. $exam_result_highscore_str = "SELECT * FROM " . TABLE_ASSESSMENTRESULT . " WHERE assessmentid='" . $assessmentid . "' AND arid='" . $exam_highscore_arr[0]->highscorearid . "' LIMIT 1";
  4828. $exam_result_highscore_arr = $parent->getQueryValue($exam_result_highscore_str);
  4829. $timetaken = (count($exam_result_highscore_arr) > 0 && isset($exam_result_highscore_arr[0]->time_taken)) ? round($exam_result_highscore_arr[0]->time_taken / 60) : "0";
  4830. $completedtime = (count($exam_result_highscore_arr) > 0 && isset($exam_result_highscore_arr[0]->modified_on)) ? date('d-m-Y h:i A', strtotime($exam_result_highscore_arr[0]->modified_on)) : "-";
  4831. }
  4832. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $timetaken);
  4833. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $completedtime);
  4834. $result_str = ($highscore >= $pass_score) ? "Pass" : "Fail";
  4835. $column_str = getColumnFromNumber($i++) . $row;
  4836. if ($result_str == 'Pass') {
  4837. $objPHPExcel->getActiveSheet()->getStyle($column_str)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB("008000");
  4838. } else {
  4839. $objPHPExcel->getActiveSheet()->getStyle($column_str)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB("FF0000");
  4840. }
  4841. $objPHPExcel->getActiveSheet()->SetCellValue($column_str, $result_str);
  4842. }
  4843. }
  4844. //LOG
  4845. $logstr = 'TRAINER ASSESSMENT REPORT EXPORT';
  4846. globalfunc::insertUserLog($parent, $logstr);
  4847. $objPHPExcel->getActiveSheet()->setTitle('ASSESSMENT REPORT');
  4848. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  4849. $fpath = "../../" . S3_REPORT_URL;
  4850. $filename = "assessment_report_" . uniqid() . ".xlsx";
  4851. $objWriter->save($fpath . $filename);
  4852. //CONNECT S3
  4853. $s3 = awsfileserver::connectS3();
  4854. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  4855. //delete report
  4856. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  4857. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  4858. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  4859. }
  4860. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  4861. /* /////////////////////////////// DEALER SALES TARGET REPORT EXPORT //////////////////////////////////////////////// */
  4862. private function dealersalestargetreportexport($parent)
  4863. {
  4864. globalfunc::checkMethodType($parent, array('POST'));
  4865. globalfunc::checkParamCount($parent, 4);
  4866. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  4867. $year_data = escape_str($parent->params[1]);
  4868. $last_data = escape_str($parent->params[2]);
  4869. $last_data_arr = explode('?', $last_data);
  4870. $month_data = escape_str(trim($last_data_arr[0]));
  4871. //Excel class library
  4872. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  4873. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  4874. $objPHPExcel = new PHPExcel();
  4875. $objPHPExcel->setActiveSheetIndex(0);
  4876. //EXCEL HEADER
  4877. $row += 2;
  4878. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "DEALER SALES TARGET REPORT");
  4879. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":I" . $row);
  4880. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  4881. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  4882. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  4883. $row += 2;
  4884. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row, "I" . $row, "J" . $row, "K" . $row, "L" . $row, "M" . $row, "N" . $row, "O" . $row, "P" . $row, "Q" . $row, "R" . $row, "S" . $row);
  4885. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  4886. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  4887. //SET HEADER
  4888. $header_arr = array('Dealer Name', 'Dealer Code', 'Zone', 'Scooter DSE (Count)', 'Motorcycle DSE (Count)', "Sales Target set By Dealer
  4889. (DSE Count)", "Sales Target Auto Set- Dealer (DSE Count)", "Sales Target Approved/ Modified by AM (DSE Count)", "Sales Target Auto Approved (AM) (DSE Count)", "Scooter Target", "Scooter Target Achieved (MTD)", "Motorcycle Target", "Motorcycle Target Achieved (MTD)", "Total Target", "Total Target Achieved (MTD)", "Total Target Achieved % (MTD)", 'Zonal Manager', 'Regional Manager', 'Area Manager');
  4890. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('30');
  4891. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth('10');
  4892. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('25');
  4893. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth('25');
  4894. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth('25');
  4895. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth('25');
  4896. $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth('25');
  4897. $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth('25');
  4898. $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth('25');
  4899. $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth('25');
  4900. $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth('25');
  4901. $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth('25');
  4902. $objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth('25');
  4903. $objPHPExcel->getActiveSheet()->getColumnDimension('N')->setWidth('25');
  4904. $objPHPExcel->getActiveSheet()->getColumnDimension('O')->setWidth('25');
  4905. $objPHPExcel->getActiveSheet()->getColumnDimension('P')->setWidth('25');
  4906. $objPHPExcel->getActiveSheet()->getColumnDimension('Q')->setWidth('30');
  4907. $objPHPExcel->getActiveSheet()->getColumnDimension('R')->setWidth('30');
  4908. $objPHPExcel->getActiveSheet()->getColumnDimension('S')->setWidth('30');
  4909. //$objPHPExcel->getActiveSheet()->getColumnDimension('T')->setWidth('30');
  4910. $i = 0;
  4911. foreach ($header_arr as $val) {
  4912. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  4913. }
  4914. $objPHPExcel->getActiveSheet()->getStyle("A" . $row . ":T" . $row)->getAlignment()->setWrapText(true);
  4915. $dealer_code_cond = '';
  4916. $qry_params = explode("?", $parent->params[3]);
  4917. $type = strtolower($qry_params[0]);
  4918. $user_cond = "";
  4919. //MANAGER WISE DEALER CONDITION
  4920. $dealer_cond_arr = $this->getmanagerconditon_arr($parent);
  4921. if (count($dealer_cond_arr) > 0) {
  4922. $user_cond .= " AND " . @implode(" AND ", $dealer_cond_arr);
  4923. }
  4924. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[3]);
  4925. //SORT
  4926. $order_by_cond = "ORDER BY dealer_name ASC ";
  4927. if (isset($filter_arr) && isset($filter_arr['sort'])) {
  4928. //1-Dealer
  4929. //2-Dealer code
  4930. switch ($filter_arr['sort']) {
  4931. case '1':$order_by_cond = "ORDER BY dealer_name,id ASC ";
  4932. break;
  4933. case '2':$order_by_cond = "ORDER BY dealer_code,id ASC ";
  4934. break;
  4935. default:$order_by_cond = "ORDER BY dealer_name,id ASC ";
  4936. break;
  4937. }
  4938. }
  4939. if (isset($parent->_request["search"]) && $parent->_request["search"] != '') {
  4940. $search_txt = escape_str($parent->_request["search"]);
  4941. $user_cond .= " AND ( dealer_name LIKE '%" . $search_txt . "%' OR dealer_code LIKE '%" . $search_txt . "%' )";
  4942. }
  4943. //$user_cond.=" AND e.is_current='1' ";
  4944. $get_user_str = "SELECT dealer_code,dealer_name,zone,zm_name,rm_name,am_name,zm_email,rm_email,am_email FROM " . DMS_DEALER . " WHERE is_deleted=0 " . $user_cond . $order_by_cond;
  4945. $dealer_arr = $parent->getQueryValue($get_user_str);
  4946. if (count($dealer_arr) > 0) {
  4947. foreach ($dealer_arr as $mkey => $res_user) {
  4948. //$res=$res_user;
  4949. $i = 0;
  4950. $row++;
  4951. /*
  4952. * 'Dealer Name', 'Dealer Code','Zone','Scooter DSE (Count)','Motorcycle DSE (Count)',"Sales Target set By Dealer
  4953. (DSE Count)","Sales Target Auto Set- Dealer (DSE Count)","Sales Target Approved/ Modified by AM (DSE Count)","Sales Target Auto Approved (AM) (DSE Count)","Scooter Target","Scooter Target Achieved (MTD)","Motorcycle Target","Motorcycle Target Achieved (MTD)","Total Target","Total Target Achieved (MTD)","Total Target Achieved % (MTD)",'Zonal Manager','Regional Manager','Area Manager'
  4954. */
  4955. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_name);
  4956. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_code);
  4957. $objPHPExcel->getActiveSheet()->getStyle('B' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  4958. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->zone);
  4959. //SCOOTER DSE
  4960. //$get_employee_str="SELECT COUNT(id) as emp_count FROM ".DMS_EMPLOYEE." WHERE dealer_code='".$res_user->dealer_code."' AND is_current=1 AND status=1 AND segment=2 LIMIT 1 ";
  4961. //$scotter_emp_arr=$parent->getQueryValue($get_employee_str);
  4962. //MOTORCYCLE DSE
  4963. //$get_employee_str="SELECT COUNT(id) as emp_count FROM ".DMS_EMPLOYEE." WHERE dealer_code='".$res_user->dealer_code."' AND is_current=1 AND status=1 AND segment=1 LIMIT 1 ";
  4964. //$motor_emp_arr=$parent->getQueryValue($get_employee_str);
  4965. $get_employee_str = "SELECT * FROM (SELECT COUNT(id) as motor_count FROM " . DMS_EMPLOYEE . " WHERE dealer_code='" . $res_user->dealer_code . "' AND is_current=1 AND status=1 AND segment=1) as a, (SELECT COUNT(id) as scooter_count FROM " . DMS_EMPLOYEE . " WHERE dealer_code='" . $res_user->dealer_code . "' AND is_current=1 AND status=1 AND segment=2) as b";
  4966. $emp_arr = $parent->getQueryValue($get_employee_str);
  4967. $dealer_arr[$mkey]->scooter_dsecount = $emp_arr[0]->scooter_count;
  4968. $dealer_arr[$mkey]->motorcycle_dsecount = $emp_arr[0]->motor_count;
  4969. //DSE DEALER SET
  4970. $get_dealer_updated_str = "SELECT COUNT(DISTINCT e.id) emp_count FROM (SELECT id,dealer_code,smpin FROM " . DMS_EMPLOYEE . " WHERE dealer_code='" . $res_user->dealer_code . "' AND is_current=1 AND status=1 )as e JOIN (SELECT id,smpin FROM " . TABLE_USER_SALESTARGET_STATUS . " WHERE sale_month LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND roleid=14)as s ON e.smpin=s.smpin ";
  4971. $get_dealerupdated_arr = $parent->getQueryValue($get_dealer_updated_str);
  4972. $get_employee_str = "SELECT COUNT(id) as emp_count FROM " . DMS_EMPLOYEE . " WHERE dealer_code='" . $res_user->dealer_code . "' AND is_current=1 AND status=1 LIMIT 1 ";
  4973. $get_employee_arr = $parent->getQueryValue($get_employee_str);
  4974. $dealer_arr[$mkey]->dealerset_dsecount = $get_dealerupdated_arr[0]->emp_count;
  4975. $dealer_arr[$mkey]->autodealer_dsetcount = ($get_employee_arr[0]->emp_count > 0) ? ($get_employee_arr[0]->emp_count - $dealer_arr[$mkey]->dealerset_dsecount) : "0";
  4976. //DSE ASM SET
  4977. $get_am_updated_str = "SELECT COUNT(DISTINCT e.id) emp_count FROM (SELECT id,dealer_code,smpin FROM " . DMS_EMPLOYEE . " WHERE dealer_code='" . $res_user->dealer_code . "' AND is_current=1 AND status=1 )as e JOIN (SELECT id,smpin FROM " . TABLE_USER_SALESTARGET_STATUS . " WHERE sale_month LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND roleid=7)as s ON e.smpin=s.smpin ";
  4978. $get_amupdated_arr = $parent->getQueryValue($get_am_updated_str);
  4979. $dealer_arr[$mkey]->amset_dsecount = $get_amupdated_arr[0]->emp_count;
  4980. $dealer_arr[$mkey]->autoamset_dsecount = ($get_employee_arr[0]->emp_count > 0) ? ($get_employee_arr[0]->emp_count - $dealer_arr[$mkey]->amset_dsecount) : "0";
  4981. //SCOOTER TARGET
  4982. //$get_scooter_target_str="SELECT COALESCE(SUM(tot_target),'0')as grand_tot_target FROM (SELECT dealer_code,smpin FROM ".DMS_EMPLOYEE." WHERE dealer_code='".$res_user->dealer_code."' AND is_current=1 AND status=1 AND segment=2)as e JOIN (SELECT smpin,SUM(target) as tot_target FROM ".TABLE_USER_SALETARGET." WHERE sale_month LIKE '".date('Y-m',strtotime($year_data.'-'.$month_data."-01"))."-%' GROUP BY smpin )as s ON e.smpin=s.smpin ";
  4983. $get_scooter_target_str = "SELECT COALESCE(SUM(target),'0')as grand_tot_target FROM " . TABLE_USER_SALETARGET . " WHERE sale_month LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND smpin IN (SELECT smpin FROM " . DMS_EMPLOYEE . " WHERE dealer_code='" . $res_user->dealer_code . "' AND is_current=1 AND status=1 AND segment=2)";
  4984. $get_scooter_target_arr = $parent->getQueryValue($get_scooter_target_str);
  4985. $dealer_arr[$mkey]->scooter_target = $get_scooter_target_arr[0]->grand_tot_target;
  4986. //SCOOTER SALES
  4987. //$get_scooter_sales_str="SELECT COALESCE(SUM(tot_sales),'0')as grand_tot_sales FROM (SELECT dealer_code,smpin FROM ".DMS_EMPLOYEE." WHERE dealer_code='".$res_user->dealer_code."' AND is_current=1 AND status=1 AND segment=2)as e JOIN (SELECT smpin,SUM(sales_count) as tot_sales FROM ".DMS_EMPLOYEE_SALES." WHERE sale_date LIKE '".date('Y-m',strtotime($year_data.'-'.$month_data."-01"))."-%' GROUP BY smpin )as s ON e.smpin=s.smpin ";
  4988. $get_scooter_sales_str = "SELECT COALESCE(SUM(sales_count),'0')as grand_tot_sales FROM " . DMS_EMPLOYEE_SALES . " WHERE sale_date LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND smpin IN (SELECT smpin FROM " . DMS_EMPLOYEE . " WHERE dealer_code='" . $res_user->dealer_code . "' AND is_current=1 AND status=1 AND segment=2)";
  4989. $get_scooter_sales_arr = $parent->getQueryValue($get_scooter_sales_str);
  4990. $dealer_arr[$mkey]->scooter_achieved = $get_scooter_sales_arr[0]->grand_tot_sales;
  4991. //MOTORCYCLE TARGET
  4992. //$get_motorcycle_target_str="SELECT COALESCE(SUM(tot_target),'0')as grand_tot_target FROM (SELECT dealer_code,smpin FROM ".DMS_EMPLOYEE." WHERE dealer_code='".$res_user->dealer_code."' AND is_current=1 AND status=1 AND segment=1)as e JOIN (SELECT smpin,SUM(target) as tot_target FROM ".TABLE_USER_SALETARGET." WHERE sale_month LIKE '".date('Y-m',strtotime($year_data.'-'.$month_data."-01"))."-%' GROUP BY smpin )as s ON e.smpin=s.smpin ";
  4993. $get_motorcycle_target_str = "SELECT COALESCE(SUM(target),'0')as grand_tot_target FROM " . TABLE_USER_SALETARGET . " WHERE sale_month LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND smpin IN (SELECT smpin FROM " . DMS_EMPLOYEE . " WHERE dealer_code='" . $res_user->dealer_code . "' AND is_current=1 AND status=1 AND segment=1)";
  4994. $get_motorcycle_target_arr = $parent->getQueryValue($get_motorcycle_target_str);
  4995. $dealer_arr[$mkey]->motorcycle_target = $get_motorcycle_target_arr[0]->grand_tot_target;
  4996. //MOTORCYCLE SALES
  4997. //$get_motorcycle_sales_str="SELECT COALESCE(SUM(tot_sales),'0')as grand_tot_sales FROM (SELECT dealer_code,smpin FROM ".DMS_EMPLOYEE." WHERE dealer_code='".$res_user->dealer_code."' AND is_current=1 AND status=1 AND segment=1)as e JOIN (SELECT smpin,SUM(sales_count) as tot_sales FROM ".DMS_EMPLOYEE_SALES." WHERE sale_date LIKE '".date('Y-m',strtotime($year_data.'-'.$month_data."-01"))."-%' GROUP BY smpin )as s ON e.smpin=s.smpin ";
  4998. $get_motorcycle_sales_str = "SELECT COALESCE(SUM(sales_count),'0')as grand_tot_sales FROM " . DMS_EMPLOYEE_SALES . " WHERE sale_date LIKE '" . date('Y-m', strtotime($year_data . '-' . $month_data . "-01")) . "-%' AND smpin IN (SELECT smpin FROM " . DMS_EMPLOYEE . " WHERE dealer_code='" . $res_user->dealer_code . "' AND is_current=1 AND status=1 AND segment=1)";
  4999. $get_motorcycle_sales_arr = $parent->getQueryValue($get_motorcycle_sales_str);
  5000. $dealer_arr[$mkey]->motorcycle_achieved = $get_motorcycle_sales_arr[0]->grand_tot_sales;
  5001. $dealer_arr[$mkey]->total_target = $dealer_arr[$mkey]->motorcycle_target + $dealer_arr[$mkey]->scooter_target;
  5002. $dealer_arr[$mkey]->total_achieved = $dealer_arr[$mkey]->scooter_achieved + $dealer_arr[$mkey]->motorcycle_achieved;
  5003. $dealer_arr[$mkey]->total_percent = ($dealer_arr[$mkey]->total_target > 0) ? round((($dealer_arr[$mkey]->total_achieved / $dealer_arr[$mkey]->total_target) * 100), 2) : '0';
  5004. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $dealer_arr[$mkey]->scooter_dsecount);
  5005. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $dealer_arr[$mkey]->motorcycle_dsecount);
  5006. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $dealer_arr[$mkey]->dealerset_dsecount);
  5007. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $dealer_arr[$mkey]->autodealer_dsetcount);
  5008. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $dealer_arr[$mkey]->amset_dsecount);
  5009. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $dealer_arr[$mkey]->autoamset_dsecount);
  5010. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $dealer_arr[$mkey]->scooter_target);
  5011. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $dealer_arr[$mkey]->scooter_achieved);
  5012. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $dealer_arr[$mkey]->motorcycle_target);
  5013. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $dealer_arr[$mkey]->motorcycle_achieved);
  5014. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $dealer_arr[$mkey]->total_target);
  5015. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $dealer_arr[$mkey]->total_achieved);
  5016. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $dealer_arr[$mkey]->total_percent);
  5017. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->zm_name);
  5018. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->rm_name);
  5019. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->am_name);
  5020. }
  5021. }
  5022. //LOG
  5023. $logstr = 'DSE SALESTARGET EXPORT';
  5024. globalfunc::insertUserLog($parent, $logstr);
  5025. $objPHPExcel->getActiveSheet()->setTitle('DSE SALESTARGET REPORT');
  5026. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  5027. $fpath = "../../" . S3_REPORT_URL;
  5028. $filename = "dse_salestarget_report_" . uniqid() . ".xlsx";
  5029. $objWriter->save($fpath . $filename);
  5030. //CONNECT S3
  5031. $s3 = awsfileserver::connectS3();
  5032. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  5033. //delete report
  5034. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  5035. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  5036. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  5037. }
  5038. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  5039. /* /////////////////////////////// MANAGER SALESTARGET REPORT EXPORT //////////////////////////////////////////////// */
  5040. private function managersalestargetreportexport($parent)
  5041. {
  5042. globalfunc::checkMethodType($parent, array('POST'));
  5043. globalfunc::checkParamCount($parent, 3);
  5044. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  5045. $year_data = escape_str($parent->params[1]);
  5046. $last_data = escape_str($parent->params[2]);
  5047. $last_data_arr = explode('?', $last_data);
  5048. $month_data = escape_str(trim($last_data_arr[0]));
  5049. //Excel class library
  5050. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  5051. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  5052. $objPHPExcel = new PHPExcel();
  5053. $objPHPExcel->setActiveSheetIndex(0);
  5054. //EXCEL HEADER
  5055. $row += 2;
  5056. $excel_head = ($parent->current_user_role == 14) ? "SALESTARGET REPORT" : "AM SALESTARGET REPORT";
  5057. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, $excel_head);
  5058. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":J" . $row);
  5059. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  5060. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  5061. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  5062. /*
  5063. Zonal Manager Regional Manager Area Manager Dealer Count DSE Count Target set by Dealer
  5064. (DSE Count) Auto Set- Dealer (DSE Count) Approved /Modified by AM (DSE Count) Auto Approved (AM) (DSE Count) Target Set for Scooter Target Set for Scooter Total Target Set Total Target Achieved % (MTD)
  5065. */
  5066. $row += 2;
  5067. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row, "I" . $row, "J" . $row, "K" . $row, "L" . $row, "M" . $row);
  5068. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  5069. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  5070. //SET HEADER
  5071. $header_arr = array('Zonal Manager', 'Regional Manager', 'Area Manager', 'Dealer Count', 'DSE Count', 'Target set by Dealer(DSE Count)', 'Auto Set- Dealer (DSE Count)', 'Approved /Modified by AM (DSE Count)', 'Auto Approved (AM) (DSE Count)', 'Target Set for Scooter', 'Target Set for Motorcycle', 'Total Target Set', 'Total Target Achieved % (MTD)');
  5072. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('30');
  5073. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth('30');
  5074. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('30');
  5075. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth('15');
  5076. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth('15');
  5077. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth('25');
  5078. $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth('25');
  5079. $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth('25');
  5080. $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth('25');
  5081. $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth('25');
  5082. $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth('25');
  5083. $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth('25');
  5084. $objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth('25');
  5085. //$objPHPExcel->getActiveSheet()->getColumnDimension('N')->setWidth('25');
  5086. $i = 0;
  5087. foreach ($header_arr as $val) {
  5088. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  5089. }
  5090. $objPHPExcel->getActiveSheet()->getStyle("A" . $row . ":N" . $row)->getAlignment()->setWrapText(true);
  5091. $from_date = date('Y-m-d', strtotime($year_data . "-" . $month . "-01"));
  5092. $to_date = date('Y-m-t', strtotime($year_data . "-" . $month . "-01"));
  5093. $user_cond = "";
  5094. $zmemail = escape_str($parent->_request["zmemail"]);
  5095. $rmemail = escape_str($parent->_request["rmemail"]);
  5096. $amemail = escape_str($parent->_request["amemail"]);
  5097. $mcond = '';
  5098. if (($amemail != 'all' && $amemail != '') || ($rmemail != 'all' && $rmemail != '') || ($zmemail != 'all' && $zmemail != '')) {
  5099. $mcond = ($amemail != 'all' && $amemail != '') ? " AND am_email='" . $amemail . "'" : '';
  5100. $mcond .= ($rmemail != 'all' && $rmemail != '') ? " AND rm_email='" . $rmemail . "'" : '';
  5101. $mcond .= ($zmemail != 'all' && $zmemail != '') ? " AND zm_email='" . $zmemail . "'" : '';
  5102. }
  5103. if ($parent->current_user_role == 14) {
  5104. $mcond = " AND dealer_code='" . $parent->current_user_data->dealer_code . "'";
  5105. $dealer_cond = " AND dealer_code='" . $parent->current_user_data->dealer_code . "'";
  5106. }
  5107. $data_arr = array();
  5108. //GET ALL AM
  5109. $getamquery_str = "SELECT zm_name,zm_email,rm_name,rm_email,am_name,am_email FROM " . DMS_DEALER . " WHERE status=1 AND is_deleted=0 " . $mcond . " GROUP BY am_email ORDER BY zm_name,rm_name,am_name ASC";
  5110. $getam_data = $parent->getQueryValue($getamquery_str);
  5111. if (count($getam_data) > 0) {
  5112. foreach ($getam_data as $res_am) {
  5113. //DEALER COUNT
  5114. $getdealercount_str = "SELECT COUNT(id) dealer_count FROM " . DMS_DEALER . " WHERE status=1 AND is_deleted=0 AND zm_email='" . $res_am->zm_email . "' AND rm_email='" . $res_am->rm_email . "' AND am_email='" . $res_am->am_email . "' " . $dealer_cond;
  5115. $getdealercount_data = $parent->getQueryValue($getdealercount_str);
  5116. $res_am->dealer_count = (count($getdealercount_data) > 0) ? $getdealercount_data[0]->dealer_count : "0";
  5117. //DSE COUNT
  5118. $query_str = "SELECT COUNT(DISTINCT u.id) emp_count FROM " . DMS_EMPLOYEE . " u JOIN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE status=1 AND is_deleted=0 AND zm_email='" . $res_am->zm_email . "' AND rm_email='" . $res_am->rm_email . "' AND am_email='" . $res_am->am_email . "' " . $dealer_cond . ")d ON u.dealer_code=d.dealer_code WHERE u.role IN (SELECT rolename FROM `" . TABLE_ROLE . "` WHERE id>7 AND id<14) AND u.status=1 AND u.is_current=1 LIMIT 1 ";
  5119. $dsecount_arr = $parent->getQueryValue($query_str);
  5120. $res_am->dse_count = (count($dsecount_arr) > 0) ? $dsecount_arr[0]->emp_count : "0";
  5121. //Target Set by Dealers
  5122. $query_str = "SELECT COUNT(DISTINCT e.id) emp_count FROM (SELECT id,dealer_code,smpin FROM " . DMS_EMPLOYEE . " u WHERE status=1 AND u.is_current=1 )as e JOIN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE status=1 AND is_deleted=0 AND zm_email='" . $res_am->zm_email . "' AND rm_email='" . $res_am->rm_email . "' AND am_email='" . $res_am->am_email . "' " . $dealer_cond . ")d ON e.dealer_code=d.dealer_code JOIN (SELECT id,smpin FROM " . TABLE_USER_SALESTARGET_STATUS . " WHERE sale_month>='" . $from_date . "' AND sale_month<='" . $to_date . "' AND roleid=14)as s ON e.smpin=s.smpin LIMIT 1 ";
  5123. $target_arr = $parent->getQueryValue($query_str);
  5124. $res_am->dealer_target_set_dse_count = (count($target_arr) > 0) ? $target_arr[0]->emp_count : "0";
  5125. //Target Auto Target Dealers
  5126. $res_am->dealer_autotarget_dse_count = (string) ($res_am->dse_count - $res_am->dealer_target_set_dse_count);
  5127. //Target Set by AM
  5128. $query_str = "SELECT COUNT(DISTINCT e.id) emp_count FROM (SELECT id,dealer_code,smpin FROM " . DMS_EMPLOYEE . " u WHERE status=1 AND u.is_current=1 )as e JOIN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE status=1 AND is_deleted=0 AND zm_email='" . $res_am->zm_email . "' AND rm_email='" . $res_am->rm_email . "' AND am_email='" . $res_am->am_email . "' " . $dealer_cond . ")d ON e.dealer_code=d.dealer_code JOIN (SELECT id,smpin FROM " . TABLE_USER_SALESTARGET_STATUS . " WHERE sale_month>='" . $from_date . "' AND sale_month<='" . $to_date . "' AND roleid=7)as s ON e.smpin=s.smpin LIMIT 1 ";
  5129. $target_arr = $parent->getQueryValue($query_str);
  5130. $res_am->am_target_set_dse_count = (count($target_arr) > 0) ? $target_arr[0]->emp_count : "0";
  5131. //Target Auto Target AM
  5132. $res_am->am_autotarget_dse_count = (string) ($res_am->dse_count - $res_am->am_target_set_dse_count);
  5133. //MOTORCYCLE TARGET
  5134. $query_str = "SELECT COALESCE(SUM(s.target),'0')as tot_target FROM (SELECT smpin,target FROM " . TABLE_USER_SALETARGET . " WHERE sale_month>='" . $from_date . "' AND sale_month<='" . $to_date . "' ) s JOIN (SELECT smpin,dealer_code FROM " . DMS_EMPLOYEE . " WHERE is_current=1 AND status=1 AND segment=1) e On e.smpin=s.smpin JOIN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE status=1 AND is_deleted=0 AND zm_email='" . $res_am->zm_email . "' AND rm_email='" . $res_am->rm_email . "' AND am_email='" . $res_am->am_email . "' " . $dealer_cond . ") d On e.dealer_code=d.dealer_code ";
  5135. $target_arr = $parent->getQueryValue($query_str);
  5136. $res_am->motorcycle_target = (count($target_arr) > 0) ? $target_arr[0]->tot_target : '0';
  5137. //SCOOTER TARGET
  5138. $query_str = "SELECT COALESCE(SUM(s.target),'0')as tot_target FROM (SELECT smpin,target FROM " . TABLE_USER_SALETARGET . " WHERE sale_month>='" . $from_date . "' AND sale_month<='" . $to_date . "' ) s JOIN (SELECT smpin,dealer_code FROM " . DMS_EMPLOYEE . " WHERE is_current=1 AND status=1 AND segment=2) e On e.smpin=s.smpin JOIN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE status=1 AND is_deleted=0 AND zm_email='" . $res_am->zm_email . "' AND rm_email='" . $res_am->rm_email . "' AND am_email='" . $res_am->am_email . "' " . $dealer_cond . ") d On e.dealer_code=d.dealer_code ";
  5139. $target_arr = $parent->getQueryValue($query_str);
  5140. $res_am->scooter_target = (count($target_arr) > 0) ? $target_arr[0]->tot_target : '0';
  5141. //TOTAL TARGET
  5142. $query_str = "SELECT COALESCE(SUM(s.target),'0')as tot_target FROM (SELECT smpin,target FROM " . TABLE_USER_SALETARGET . " WHERE sale_month>='" . $from_date . "' AND sale_month<='" . $to_date . "' ) s JOIN (SELECT smpin,dealer_code FROM " . DMS_EMPLOYEE . " WHERE is_current=1 AND status=1 ) e On e.smpin=s.smpin JOIN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE status=1 AND is_deleted=0 AND zm_email='" . $res_am->zm_email . "' AND rm_email='" . $res_am->rm_email . "' AND am_email='" . $res_am->am_email . "' " . $dealer_cond . ") d On e.dealer_code=d.dealer_code ";
  5143. $target_arr = $parent->getQueryValue($query_str);
  5144. $res_am->tot_target = (count($target_arr) > 0) ? $target_arr[0]->tot_target : '0';
  5145. //TOTAL SALES
  5146. $query_str = "SELECT COALESCE(SUM(s.sales_count),'0')as tot_sales FROM (SELECT smpin,sales_count FROM " . DMS_EMPLOYEE_SALES . " WHERE sale_date>='" . $from_date . "' AND sale_date<='" . $to_date . "' ) s JOIN (SELECT smpin,dealer_code FROM " . DMS_EMPLOYEE . " WHERE is_current=1 AND status=1) e On e.smpin=s.smpin JOIN (SELECT dealer_code FROM " . DMS_DEALER . " WHERE status=1 AND is_deleted=0 AND zm_email='" . $res_am->zm_email . "' AND rm_email='" . $res_am->rm_email . "' AND am_email='" . $res_am->am_email . "' " . $dealer_cond . ") d On e.dealer_code=d.dealer_code ";
  5147. $sales_arr = $parent->getQueryValue($query_str);
  5148. $res_am->tot_sales = (count($sales_arr) > 0) ? $sales_arr[0]->tot_sales : '0';
  5149. $res_am->total_percent = ($res_am->tot_target) ? round((($res_am->tot_sales / $res_am->tot_sales) * 100), 2) : '0';
  5150. $data_arr[] = $res_am;
  5151. }
  5152. }
  5153. if (count($data_arr) > 0) {
  5154. foreach ($data_arr as $res_user) {
  5155. $i = 0;
  5156. $row++;
  5157. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->zm_name);
  5158. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->rm_name);
  5159. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->am_name);
  5160. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_count);
  5161. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dse_count);
  5162. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_target_set_dse_count);
  5163. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_autotarget_dse_count);
  5164. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->am_target_set_dse_count);
  5165. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->am_autotarget_dse_count);
  5166. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->motorcycle_target);
  5167. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->scooter_target);
  5168. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->tot_target);
  5169. //$objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->tot_sales);
  5170. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->total_percent);
  5171. }
  5172. }
  5173. //LOG
  5174. $logstr = 'AM SALESTARGET EXPORT';
  5175. globalfunc::insertUserLog($parent, $logstr);
  5176. $objPHPExcel->getActiveSheet()->setTitle('AM SALESTARGET REPORT');
  5177. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  5178. $fpath = "../../" . S3_REPORT_URL;
  5179. $filename = "am_salestarget_report_" . uniqid() . ".xlsx";
  5180. $objWriter->save($fpath . $filename);
  5181. //CONNECT S3
  5182. $s3 = awsfileserver::connectS3();
  5183. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  5184. //delete report
  5185. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  5186. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  5187. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  5188. }
  5189. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  5190. /* /////////////////////////////// ZM REPORT EXPORT //////////////////////////////////////////////// */
  5191. private function zmcoursereport($parent)
  5192. {
  5193. globalfunc::checkMethodType($parent, array('POST'));
  5194. globalfunc::checkParamCount($parent, 1);
  5195. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  5196. //Excel class library
  5197. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  5198. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  5199. $objPHPExcel = new PHPExcel();
  5200. $objPHPExcel->setActiveSheetIndex(0);
  5201. //EXCEL HEADER
  5202. $row += 2;
  5203. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "COURSE COMPLETION REPORT");
  5204. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":H" . $row);
  5205. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  5206. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  5207. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  5208. $row += 2;
  5209. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row);
  5210. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  5211. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  5212. //SET HEADER
  5213. $header_arr = array('Name', 'Emp Code', 'Mobile', 'EmailID', 'Overall Progress %');
  5214. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  5215. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  5216. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  5217. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('25');
  5218. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('20');
  5219. $i = 0;
  5220. foreach ($header_arr as $val) {
  5221. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  5222. }
  5223. $qry_params = explode("?", $parent->params[1]);
  5224. $type = strtolower($qry_params[0]);
  5225. $user_cond = "";
  5226. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[1]);
  5227. $order_by_cond = "ORDER BY u.fname ASC,u.lname ASC,u.userid ASC ";
  5228. if (isset($parent->_request["search"])) {
  5229. $search_txt = escape_str($parent->_request["search"]);
  5230. $user_cond .= " AND (u.fname LIKE '%" . $search_txt . "%' OR u.lname LIKE '%" . $search_txt . "%' )";
  5231. }
  5232. //$user_cond.=" AND e.is_current='1' ";
  5233. // u.status='1' AND
  5234. $get_user_str = "SELECT u.userid,u.fname,u.lname,u.emp_code,u.mobileno,u.emailid FROM " . TABLE_USER . " u JOIN " . DMS_DEALER . " d ON u.emailid=d.zm_email WHERE u.is_deleted='0' AND u.role=4 " . $user_cond . " GROUP BY u.userid " . $order_by_cond;
  5235. $user_arr = $parent->getQueryValue($get_user_str);
  5236. if (count($user_arr) > 0) {
  5237. foreach ($user_arr as $mkey => $res_user) {
  5238. //'Name','Emp Code','Mobile','EmailID','Overall Progress %'
  5239. $i = 0;
  5240. $row++;
  5241. $objPHPExcel->getActiveSheet()->getStyle('A' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  5242. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, trim($res_user->fname . " " . $res_user->fname));
  5243. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->emp_code);
  5244. if (empty($res_user->mobileno)) {
  5245. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  5246. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  5247. } else {
  5248. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobileno);
  5249. }
  5250. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->emailid);
  5251. $content_arr = projectfunc::managerCourseCompleteStatus($parent, $res_user->userid, 4);
  5252. $percentage = ($content_arr['total'] > 0) ? round(($content_arr['completed'] / $content_arr['total']) * 100) : '0';
  5253. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $percentage . "%");
  5254. }
  5255. }
  5256. //LOG
  5257. $logstr = 'ZM COURSE COMPLETION REPORT EXPORT';
  5258. globalfunc::insertUserLog($parent, $logstr);
  5259. $objPHPExcel->getActiveSheet()->setTitle('ZM COURSE REPORT');
  5260. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  5261. $fpath = "../../" . S3_REPORT_URL;
  5262. $filename = "zm_course_completion_report_" . uniqid() . ".xlsx";
  5263. $objWriter->save($fpath . $filename);
  5264. //CONNECT S3
  5265. $s3 = awsfileserver::connectS3();
  5266. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  5267. //delete report
  5268. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  5269. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  5270. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  5271. }
  5272. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  5273. /* /////////////////////////////// TRAINER REPORT EXPORT //////////////////////////////////////////////// */
  5274. private function trainercoursereport($parent)
  5275. {
  5276. globalfunc::checkMethodType($parent, array('POST'));
  5277. globalfunc::checkParamCount($parent, 1);
  5278. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  5279. //Excel class library
  5280. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  5281. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  5282. $objPHPExcel = new PHPExcel();
  5283. $objPHPExcel->setActiveSheetIndex(0);
  5284. //EXCEL HEADER
  5285. $row += 2;
  5286. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "COURSE COMPLETION REPORT");
  5287. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":H" . $row);
  5288. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  5289. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  5290. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  5291. $row += 2;
  5292. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row);
  5293. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  5294. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  5295. //SET HEADER
  5296. $header_arr = array('Name', 'Emp Code', 'Mobile', 'EmailID', 'Overall Progress %');
  5297. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  5298. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  5299. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  5300. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('25');
  5301. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('20');
  5302. $i = 0;
  5303. foreach ($header_arr as $val) {
  5304. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  5305. }
  5306. $qry_params = explode("?", $parent->params[1]);
  5307. $type = strtolower($qry_params[0]);
  5308. $user_cond = "";
  5309. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[1]);
  5310. $order_by_cond = "ORDER BY u.fname ASC,u.lname ASC,u.userid ASC ";
  5311. if (isset($parent->_request["search"])) {
  5312. $search_txt = escape_str($parent->_request["search"]);
  5313. $user_cond .= " AND (u.fname LIKE '%" . $search_txt . "%' OR u.lname LIKE '%" . $search_txt . "%' )";
  5314. }
  5315. //$user_cond.=" AND e.is_current='1' ";
  5316. // u.status='1' AND
  5317. $get_user_str = "SELECT u.userid,u.fname,u.lname,u.emp_code,u.mobileno,u.emailid FROM " . TABLE_USER . " u WHERE u.is_deleted='0' AND u.role=5 " . $user_cond . $order_by_cond;
  5318. $user_arr = $parent->getQueryValue($get_user_str);
  5319. if (count($user_arr) > 0) {
  5320. foreach ($user_arr as $mkey => $res_user) {
  5321. //'Name','Emp Code','Mobile','EmailID','Overall Progress %'
  5322. $i = 0;
  5323. $row++;
  5324. $objPHPExcel->getActiveSheet()->getStyle('A' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  5325. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, trim($res_user->fname . " " . $res_user->fname));
  5326. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->emp_code);
  5327. if (empty($res_user->mobileno)) {
  5328. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  5329. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  5330. } else {
  5331. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobileno);
  5332. }
  5333. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->emailid);
  5334. $content_arr = projectfunc::managerCourseCompleteStatus($parent, $res_user->userid, 5);
  5335. $percentage = ($content_arr['total'] > 0) ? round(($content_arr['completed'] / $content_arr['total']) * 100) : '0';
  5336. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $percentage . "%");
  5337. }
  5338. }
  5339. //LOG
  5340. $logstr = 'TRAINER COURSE COMPLETION REPORT EXPORT';
  5341. globalfunc::insertUserLog($parent, $logstr);
  5342. $objPHPExcel->getActiveSheet()->setTitle('TRAINER COURSE REPORT');
  5343. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  5344. $fpath = "../../" . S3_REPORT_URL;
  5345. $filename = "trainer_course_completion_report_" . uniqid() . ".xlsx";
  5346. $objWriter->save($fpath . $filename);
  5347. //CONNECT S3
  5348. $s3 = awsfileserver::connectS3();
  5349. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  5350. //delete report
  5351. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  5352. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  5353. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  5354. }
  5355. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  5356. /* /////////////////////////////// RM REPORT EXPORT //////////////////////////////////////////////// */
  5357. private function rmcoursereport($parent)
  5358. {
  5359. globalfunc::checkMethodType($parent, array('POST'));
  5360. globalfunc::checkParamCount($parent, 1);
  5361. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  5362. //Excel class library
  5363. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  5364. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  5365. $objPHPExcel = new PHPExcel();
  5366. $objPHPExcel->setActiveSheetIndex(0);
  5367. //EXCEL HEADER
  5368. $row += 2;
  5369. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "COURSE COMPLETION REPORT");
  5370. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":H" . $row);
  5371. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  5372. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  5373. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  5374. $row += 2;
  5375. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row);
  5376. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  5377. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  5378. //SET HEADER
  5379. $header_arr = array('Name', 'Emp Code', 'Mobile', 'EmailID', 'Overall Progress %');
  5380. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  5381. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  5382. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  5383. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('25');
  5384. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('20');
  5385. $i = 0;
  5386. foreach ($header_arr as $val) {
  5387. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  5388. }
  5389. $qry_params = explode("?", $parent->params[1]);
  5390. $type = strtolower($qry_params[0]);
  5391. $user_cond = "";
  5392. $dealer_cond_arr = $this->getmanagerconditon_arr($parent);
  5393. if (count($dealer_cond_arr) > 0) {
  5394. //APPEND prefix
  5395. array_walk($dealer_cond_arr, function (&$value, $key) {$value = 'd.' . $value;});
  5396. $user_cond .= " AND " . @implode(" AND ", $dealer_cond_arr);
  5397. }
  5398. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[1]);
  5399. $order_by_cond = "ORDER BY u.fname ASC,u.lname ASC,u.userid ASC ";
  5400. if (isset($parent->_request["search"])) {
  5401. $search_txt = escape_str($parent->_request["search"]);
  5402. $user_cond .= " AND (u.fname LIKE '%" . $search_txt . "%' OR u.lname LIKE '%" . $search_txt . "%' )";
  5403. }
  5404. //$user_cond.=" AND e.is_current='1' ";
  5405. // u.status='1' AND
  5406. $get_user_str = "SELECT u.userid,u.fname,u.lname,u.emp_code,u.mobileno,u.emailid FROM " . TABLE_USER . " u JOIN " . DMS_DEALER . " d ON u.emailid=d.rm_email WHERE u.is_deleted='0' AND u.role=6 " . $user_cond . " GROUP BY u.userid " . $order_by_cond;
  5407. $user_arr = $parent->getQueryValue($get_user_str);
  5408. if (count($user_arr) > 0) {
  5409. foreach ($user_arr as $mkey => $res_user) {
  5410. //'Name','Emp Code','Mobile','EmailID','Overall Progress %'
  5411. $i = 0;
  5412. $row++;
  5413. $objPHPExcel->getActiveSheet()->getStyle('A' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  5414. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, trim($res_user->fname . " " . $res_user->fname));
  5415. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->emp_code);
  5416. if (empty($res_user->mobileno)) {
  5417. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  5418. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  5419. } else {
  5420. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobileno);
  5421. }
  5422. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->emailid);
  5423. $content_arr = projectfunc::managerCourseCompleteStatus($parent, $res_user->userid, 6);
  5424. $percentage = ($content_arr['total'] > 0) ? round(($content_arr['completed'] / $content_arr['total']) * 100) : '0';
  5425. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $percentage . "%");
  5426. }
  5427. }
  5428. //LOG
  5429. $logstr = 'RM COURSE COMPLETION REPORT EXPORT';
  5430. globalfunc::insertUserLog($parent, $logstr);
  5431. $objPHPExcel->getActiveSheet()->setTitle('RM COURSE REPORT');
  5432. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  5433. $fpath = "../../" . S3_REPORT_URL;
  5434. $filename = "rm_course_completion_report_" . uniqid() . ".xlsx";
  5435. $objWriter->save($fpath . $filename);
  5436. //CONNECT S3
  5437. $s3 = awsfileserver::connectS3();
  5438. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  5439. //delete report
  5440. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  5441. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  5442. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  5443. }
  5444. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  5445. /* /////////////////////////////// RM REPORT EXPORT //////////////////////////////////////////////// */
  5446. private function amcoursereport($parent)
  5447. {
  5448. globalfunc::checkMethodType($parent, array('POST'));
  5449. globalfunc::checkParamCount($parent, 1);
  5450. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  5451. //Excel class library
  5452. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  5453. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  5454. $objPHPExcel = new PHPExcel();
  5455. $objPHPExcel->setActiveSheetIndex(0);
  5456. //EXCEL HEADER
  5457. $row += 2;
  5458. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "COURSE COMPLETION REPORT");
  5459. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":H" . $row);
  5460. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  5461. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  5462. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  5463. $row += 2;
  5464. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row);
  5465. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  5466. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  5467. //SET HEADER
  5468. $header_arr = array('Name', 'Emp Code', 'Mobile', 'EmailID', 'Overall Progress %');
  5469. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  5470. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  5471. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  5472. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('25');
  5473. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('20');
  5474. $i = 0;
  5475. foreach ($header_arr as $val) {
  5476. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  5477. }
  5478. $qry_params = explode("?", $parent->params[1]);
  5479. $type = strtolower($qry_params[0]);
  5480. $user_cond = "";
  5481. $dealer_cond_arr = $this->getmanagerconditon_arr($parent);
  5482. if (count($dealer_cond_arr) > 0) {
  5483. //APPEND prefix
  5484. array_walk($dealer_cond_arr, function (&$value, $key) {$value = 'd.' . $value;});
  5485. $user_cond .= " AND " . @implode(" AND ", $dealer_cond_arr);
  5486. }
  5487. $filter_arr = globalfunc::getFilterValues($parent, $parent->params[1]);
  5488. $order_by_cond = "ORDER BY u.fname ASC,u.lname ASC,u.userid ASC ";
  5489. if (isset($parent->_request["search"])) {
  5490. $search_txt = escape_str($parent->_request["search"]);
  5491. $user_cond .= " AND (u.fname LIKE '%" . $search_txt . "%' OR u.lname LIKE '%" . $search_txt . "%' )";
  5492. }
  5493. //$user_cond.=" AND e.is_current='1' ";
  5494. // u.status='1' AND
  5495. $get_user_str = "SELECT u.userid,u.fname,u.lname,u.emp_code,u.emailid FROM " . TABLE_USER . " u JOIN " . DMS_DEALER . " d ON u.emailid=d.am_email WHERE u.is_deleted='0' AND u.role=7 " . $user_cond . " GROUP BY u.userid " . $order_by_cond;
  5496. $user_arr = $parent->getQueryValue($get_user_str);
  5497. if (count($user_arr) > 0) {
  5498. foreach ($user_arr as $mkey => $res_user) {
  5499. //'Name','Emp Code','Mobile','EmailID','Overall Progress %'
  5500. $i = 0;
  5501. $row++;
  5502. $objPHPExcel->getActiveSheet()->getStyle('A' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  5503. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, trim($res_user->fname . " " . $res_user->fname));
  5504. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->emp_code);
  5505. if (empty($res_user->mobileno)) {
  5506. $bordercells_arr = array(getColumnFromNumber($i++) . $row);
  5507. projectfunc::highlighRows($bordercells_arr, $objPHPExcel);
  5508. } else {
  5509. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobileno);
  5510. }
  5511. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->emailid);
  5512. $content_arr = projectfunc::managerCourseCompleteStatus($parent, $res_user->userid, 7);
  5513. $percentage = ($content_arr['total'] > 0) ? round(($content_arr['completed'] / $content_arr['total']) * 100) : '0';
  5514. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $percentage . "%");
  5515. }
  5516. }
  5517. //LOG
  5518. $logstr = 'AM COURSE COMPLETION REPORT EXPORT';
  5519. globalfunc::insertUserLog($parent, $logstr);
  5520. $objPHPExcel->getActiveSheet()->setTitle('AM COURSE REPORT');
  5521. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  5522. $fpath = "../../" . S3_REPORT_URL;
  5523. $filename = "am_course_completion_report_" . uniqid() . ".xlsx";
  5524. $objWriter->save($fpath . $filename);
  5525. //CONNECT S3
  5526. $s3 = awsfileserver::connectS3();
  5527. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  5528. //delete report
  5529. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  5530. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  5531. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  5532. }
  5533. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  5534. /* /////////////////////////////// ilearn EXPORT //////////////////////////////////////////////// */
  5535. private function ilearnreportold($parent)
  5536. {
  5537. globalfunc::checkMethodType($parent, array('POST'));
  5538. globalfunc::checkParamCount($parent, 1);
  5539. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  5540. $REQUEST_KEYS = array('fromdate' => 'date|Y-m-d', 'todate' => 'date|Y-m-d');
  5541. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  5542. $fromdate = escape_str($parent->_request["fromdate"]);
  5543. $todate = escape_str($parent->_request["todate"]);
  5544. //Excel class library
  5545. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  5546. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  5547. $objPHPExcel = new PHPExcel();
  5548. $objPHPExcel->setActiveSheetIndex(0);
  5549. //EXCEL HEADER
  5550. $row += 2;
  5551. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "i-Learn REPORT");
  5552. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":H" . $row);
  5553. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  5554. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  5555. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  5556. $row++;
  5557. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "From :" . date('d-m-Y', strtotime($fromdate)));
  5558. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":B" . $row);
  5559. $objPHPExcel->getActiveSheet()->SetCellValue('C' . $row, "To :" . date('d-m-Y', strtotime($todate)));
  5560. $objPHPExcel->getActiveSheet()->mergeCells("C" . $row . ":D" . $row);
  5561. //GET ALL TRAINING
  5562. $ilearn_arr = $parent->getQueryValue("SELECT s.*,CONCAT(u.fname,' ',u.lname) as organiser_name,u.emp_code FROM " . TABLE_VIDEOTRAININGSCHEDULE . " s JOIN " . TABLE_USER . " u ON u.userid=s.organiser WHERE s.fromdate>='" . $fromdate . " 00:00:00' AND s.fromdate<='" . $todate . " 23:59:59' AND s.is_deleted=0 ORDER BY s.fromdate ASC,s.id ASC");
  5563. $row++;
  5564. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row, "I" . $row, 'J' . $row, 'K' . $row, 'L' . $row, 'M' . $row);
  5565. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  5566. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  5567. //SET HEADER
  5568. $header_arr = array('Title', 'Organiser', 'From', 'To', 'SMPIN', 'Name', 'Mobile', 'EmailID', 'Dealer code', 'Dealer', 'Start time', 'End Time', 'Time Taken');
  5569. $i = 0;
  5570. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  5571. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  5572. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('25');
  5573. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('25');
  5574. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  5575. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  5576. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  5577. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('25');
  5578. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  5579. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  5580. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('20');
  5581. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('20');
  5582. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('20');
  5583. $i = 0;
  5584. foreach ($header_arr as $val) {
  5585. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  5586. }
  5587. if (count($ilearn_arr) > 0) {
  5588. foreach ($ilearn_arr as $res_ilearn) {
  5589. // $row+=2;
  5590. // $objPHPExcel->getActiveSheet()->SetCellValue('A'.$row,"Title :".$res_ilearn->title);
  5591. // $objPHPExcel->getActiveSheet()->mergeCells("A".$row.":D".$row);
  5592. // $row++;
  5593. //
  5594. // $objPHPExcel->getActiveSheet()->SetCellValue('A'.$row,"Organiser :".$res_ilearn->organiser_name);
  5595. // $objPHPExcel->getActiveSheet()->mergeCells("A".$row.":B".$row);
  5596. // $objPHPExcel->getActiveSheet()->SetCellValue('C'.$row,"From :".date('d-m-Y h:i A',strtotime($res_ilearn->fromdate)));
  5597. // $objPHPExcel->getActiveSheet()->mergeCells("C".$row.":D".$row);
  5598. // $objPHPExcel->getActiveSheet()->SetCellValue('E'.$row,"To :".date('d-m-Y h:i A',strtotime($res_ilearn->todate)));
  5599. // $objPHPExcel->getActiveSheet()->mergeCells("E".$row.":F".$row);
  5600. $user_arr = $parent->getQueryValue("SELECT u.userid,u.fname,u.lname,u.smpin,u.dealer_code, u.role,u.emp_code,u.mobileno,u.emailid,CASE WHEN u.role IN (8,9,10,11,12,13) THEN d.dealer_name ELSE '' END as dealer_name,CASE WHEN u.segment=0 THEN 'Common' WHEN u.segment=1 THEN 'Motorcycle' WHEN u.segment=2 THEN 'Scooter' END as segment_str FROM " . TABLE_VIDEOSCHEDULEUSER . " vu JOIN " . TABLE_USER . " u ON vu.userid=u.userid LEFT JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code WHERE u.status='1' AND u.is_deleted='0' AND vu.sid='" . $res_ilearn->id . "' ORDER BY u.dealer_code ASC,u.fname ASC,u.userid ASC");
  5601. if (count($user_arr) > 0) {
  5602. foreach ($user_arr as $res_user) {
  5603. $i = 0;
  5604. $row++;
  5605. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_ilearn->title);
  5606. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_ilearn->organiser_name);
  5607. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, date('d-m-Y h:i A', strtotime($res_ilearn->fromdate)));
  5608. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, date('d-m-Y h:i A', strtotime($res_ilearn->todate)));
  5609. $smpin = ($res_user->role > 7 && $res_user->role < 14) ? $res_user->smpin : $res_user->emp_code;
  5610. $objPHPExcel->getActiveSheet()->getStyle('A' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  5611. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $smpin);
  5612. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, trim($res_user->fname . " " . $res_user->fname));
  5613. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->mobileno);
  5614. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->emailid);
  5615. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_code);
  5616. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_name);
  5617. $time_arr = $parent->getQueryValue("SELECT MIN(fromtime)fromtime,MAX(totime)totime,SUM(timetaken) tottime FROM `" . TABLE_VIDEOTRAININGTIMER . "` WHERE sid='" . $res_ilearn->id . "' AND userid='" . $res_user->userid . "' GROUP BY userid");
  5618. //$start_arr=$parent->getQueryValue("SELECT * FROM ".TABLE_VIDEOTRAININGTIMER." WHERE sid='".$res_ilearn->id."' AND userid='".$res_user->userid."' ORDER BY id ASC LIMIT 1");
  5619. $start_time = (count($time_arr) > 0 && $time_arr[0]->fromtime) ? date('d-m-Y h:i A', strtotime($time_arr[0]->fromtime)) : '';
  5620. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $start_time);
  5621. //$end_arr=$parent->getQueryValue("SELECT * FROM ".TABLE_VIDEOTRAININGTIMER." WHERE sid='".$res_ilearn->id."' AND userid='".$res_user->userid."' ORDER BY id DESC LIMIT 1");
  5622. $end_time = (count($time_arr) > 0 && $time_arr[0]->totime) ? date('d-m-Y h:i A', strtotime($time_arr[0]->totime)) : '';
  5623. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $end_time);
  5624. //$tot_arr=$parent->getQueryValue("SELECT SUM(timetaken) tottime FROM ".TABLE_VIDEOTRAININGTIMER." WHERE sid='".$res_ilearn->id."' AND userid='".$res_user->userid."' GROUP BY userid");
  5625. $timetaken = (count($time_arr) > 0 && $time_arr[0]->tottime) ? $time_arr[0]->tottime : '';
  5626. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $timetaken);
  5627. }
  5628. }
  5629. }
  5630. }
  5631. //LOG
  5632. $logstr = 'ILEARN REPORT EXPORT';
  5633. globalfunc::insertUserLog($parent, $logstr);
  5634. $objPHPExcel->getActiveSheet()->setTitle('i LEARN REPORT');
  5635. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  5636. $fpath = "../../" . S3_REPORT_URL;
  5637. $filename = "ilearn_report_" . uniqid() . ".xlsx";
  5638. $objWriter->save($fpath . $filename);
  5639. //CONNECT S3
  5640. $s3 = awsfileserver::connectS3();
  5641. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  5642. //delete report
  5643. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  5644. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  5645. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  5646. }
  5647. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  5648. /* /////////////////////////////// ilearn EXPORT //////////////////////////////////////////////// */
  5649. private function ilearnreport($parent)
  5650. {
  5651. globalfunc::checkMethodType($parent, array('POST'));
  5652. globalfunc::checkParamCount($parent, 1);
  5653. globalfunc::checkAuthrozation($parent, array('type' => 'user'));
  5654. $REQUEST_KEYS = array('fromdate' => 'date|Y-m-d', 'todate' => 'date|Y-m-d');
  5655. globalfunc::mandatoryKey($parent, $REQUEST_KEYS);
  5656. $fromdate = escape_str($parent->_request["fromdate"]);
  5657. $todate = escape_str($parent->_request["todate"]);
  5658. $row = 0;
  5659. //Excel class library
  5660. require_once dirname(__FILE__) . '/../../PHPExcel.php';
  5661. require_once dirname(__FILE__) . '/../../PHPExcel/Writer/Excel2007.php';
  5662. $objPHPExcel = new PHPExcel();
  5663. $objPHPExcel->getActiveSheet()->setTitle("Dashboard");
  5664. $row += 2;
  5665. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "i-Learn REPORT");
  5666. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":H" . $row);
  5667. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  5668. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  5669. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  5670. $row++;
  5671. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "From :" . date('d-m-Y', strtotime($fromdate)));
  5672. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":B" . $row);
  5673. $objPHPExcel->getActiveSheet()->SetCellValue('C' . $row, "To :" . date('d-m-Y', strtotime($todate)));
  5674. $objPHPExcel->getActiveSheet()->mergeCells("C" . $row . ":D" . $row);
  5675. $row++;
  5676. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row);
  5677. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  5678. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  5679. //SET HEADER
  5680. $header_arr = array('Trainer Name', 'No.of Sessions', 'Total Duration (Mins)', 'Total Participants', 'Total Participants planned', 'Total Participants Attended', 'Avg. Batch Size');
  5681. $i = 0;
  5682. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  5683. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('25');
  5684. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('25');
  5685. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('25');
  5686. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('25');
  5687. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('25');
  5688. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('25');
  5689. $i = 0;
  5690. foreach ($header_arr as $val) {
  5691. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  5692. }
  5693. $trainer_arr = $parent->getQueryValue("SELECT userid,fname,lname FROM " . TABLE_USER . " WHERE role=5 AND is_deleted=0 AND status=1 ORDER BY userid");
  5694. if (count($trainer_arr) > 0) {
  5695. foreach ($trainer_arr as $res_user) {
  5696. $schdeule_arr = $parent->getQueryValue("SELECT COUNT(id) no_of_session FROM " . TABLE_VIDEOTRAININGSCHEDULE . " WHERE organiser='" . $res_user->userid . "' AND is_deleted=0 AND fromdate>='" . $fromdate . " 00:00:00' AND fromdate<='" . $todate . " 23:59:59' LIMIT 1");
  5697. $no_of_session = (count($schdeule_arr) > 0) ? $schdeule_arr[0]->no_of_session : '';
  5698. $time_arr = $parent->getQueryValue("SELECT SUM(t.timetaken) tottime FROM `" . TABLE_VIDEOTRAININGTIMER . "` t JOIN " . TABLE_VIDEOTRAININGSCHEDULE . " s ON t.sid=s.id WHERE s.organiser='" . $res_user->userid . "' AND s.is_deleted=0 AND s.fromdate>='" . $fromdate . " 00:00:00' AND s.fromdate<='" . $todate . " 23:59:59'");
  5699. $tot_duration = (count($time_arr) > 0) ? $time_arr[0]->tottime : '0';
  5700. $tot_duration = ($tot_duration > 0) ? round($tot_duration / 60) : 0;
  5701. $participant_arr = $parent->getQueryValue("SELECT COUNT(DISTINCT u.id) tot_part FROM `" . TABLE_VIDEOSCHEDULEUSER . "` u JOIN " . TABLE_VIDEOTRAININGSCHEDULE . " s ON u.sid=s.id WHERE u.status=1 AND s.organiser='" . $res_user->userid . "' AND s.is_deleted=0 AND s.fromdate>='" . $fromdate . " 00:00:00' AND s.fromdate<='" . $todate . " 23:59:59'");
  5702. $tot_participant = (count($participant_arr) > 0) ? $participant_arr[0]->tot_part : '0';
  5703. $participant_arr = $parent->getQueryValue("SELECT COUNT(DISTINCT t.userid,t.sid) attend_participant FROM `" . TABLE_VIDEOTRAININGTIMER . "` t JOIN " . TABLE_VIDEOTRAININGSCHEDULE . " s ON t.sid=s.id WHERE s.organiser='" . $res_user->userid . "' AND s.is_deleted=0 AND s.fromdate>='" . $fromdate . " 00:00:00' AND s.fromdate<='" . $todate . " 23:59:59'");
  5704. $tot_attend_participant = (count($participant_arr) > 0) ? $participant_arr[0]->attend_participant : '0';
  5705. $avg_bacth = ($tot_attend_participant > 0) ? round($tot_participant / $tot_attend_participant) : 0;
  5706. $i = 0;
  5707. $row++;
  5708. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, trim($res_user->fname . " " . $res_user->lname));
  5709. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $no_of_session);
  5710. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $tot_duration);
  5711. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $tot_participant);
  5712. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $tot_participant);
  5713. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $tot_attend_participant);
  5714. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $avg_bacth);
  5715. }
  5716. }
  5717. $row = 0;
  5718. $objPHPExcel->createSheet(1);
  5719. $objPHPExcel->setActiveSheetIndex(1);
  5720. $objPHPExcel->getActiveSheet()->setTitle('Report');
  5721. //EXCEL HEADER
  5722. $row += 2;
  5723. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "i-Learn REPORT");
  5724. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":H" . $row);
  5725. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  5726. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setBold(true);
  5727. $objPHPExcel->getActiveSheet()->getStyle("A" . $row)->getFont()->setSize(14);
  5728. $row++;
  5729. $objPHPExcel->getActiveSheet()->SetCellValue('A' . $row, "From :" . date('d-m-Y', strtotime($fromdate)));
  5730. $objPHPExcel->getActiveSheet()->mergeCells("A" . $row . ":B" . $row);
  5731. $objPHPExcel->getActiveSheet()->SetCellValue('C' . $row, "To :" . date('d-m-Y', strtotime($todate)));
  5732. $objPHPExcel->getActiveSheet()->mergeCells("C" . $row . ":D" . $row);
  5733. //GET ALL TRAINING
  5734. $ilearn_arr = $parent->getQueryValue("SELECT s.*,CONCAT(u.fname,' ',u.lname) as organiser_name,u.emp_code,s.fromdate FROM " . TABLE_VIDEOTRAININGSCHEDULE . " s JOIN " . TABLE_USER . " u ON u.userid=s.organiser WHERE s.fromdate>='" . $fromdate . " 00:00:00' AND s.fromdate<='" . $todate . " 23:59:59' AND s.is_deleted=0 ORDER BY s.fromdate ASC,s.id ASC");
  5735. $row++;
  5736. $bordercells_arr = array("A" . $row, "B" . $row, "C" . $row, "D" . $row, "E" . $row, "F" . $row, "G" . $row, "H" . $row, "I" . $row, 'J' . $row, 'K' . $row, 'L' . $row, 'M' . $row, 'N' . $row, 'O' . $row);
  5737. projectfunc::setCellBorder($bordercells_arr, $objPHPExcel);
  5738. $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
  5739. //SET HEADER
  5740. //S.no. Date Trainer Name Participant Name(Planned) Participant Name(Attended) smpin from time to time time taken Dealer Name Dealer Code Zone RM AM
  5741. $header_arr = array('S.no.', 'Date', 'Trainer Name', 'Participant Name(Planned)', 'Participant Name(Attended)', 'SMPIN', 'From time', 'To time', 'Time taken (Min)', 'Dealer Name', 'Dealer Code', 'Zone', 'ZM', 'RM', 'AM');
  5742. //$header_arr=array('Title','Organiser','From','To','SMPIN','Name','Mobile','EmailID','Dealer code','Dealer','Start time','End Time','Time Taken');
  5743. $i = 0;
  5744. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  5745. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('20');
  5746. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  5747. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  5748. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  5749. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  5750. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('25');
  5751. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('25');
  5752. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('20');
  5753. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  5754. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('15');
  5755. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('20');
  5756. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  5757. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  5758. $objPHPExcel->getActiveSheet()->getColumnDimension(getColumnFromNumber($i++))->setWidth('30');
  5759. $i = 0;
  5760. foreach ($header_arr as $val) {
  5761. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $val);
  5762. }
  5763. if (count($ilearn_arr) > 0) {
  5764. $sn = 0;
  5765. foreach ($ilearn_arr as $res_ilearn) {
  5766. // $row+=2;
  5767. // $objPHPExcel->getActiveSheet()->SetCellValue('A'.$row,"Title :".$res_ilearn->title);
  5768. // $objPHPExcel->getActiveSheet()->mergeCells("A".$row.":D".$row);
  5769. // $row++;
  5770. //
  5771. // $objPHPExcel->getActiveSheet()->SetCellValue('A'.$row,"Organiser :".$res_ilearn->organiser_name);
  5772. // $objPHPExcel->getActiveSheet()->mergeCells("A".$row.":B".$row);
  5773. // $objPHPExcel->getActiveSheet()->SetCellValue('C'.$row,"From :".date('d-m-Y h:i A',strtotime($res_ilearn->fromdate)));
  5774. // $objPHPExcel->getActiveSheet()->mergeCells("C".$row.":D".$row);
  5775. // $objPHPExcel->getActiveSheet()->SetCellValue('E'.$row,"To :".date('d-m-Y h:i A',strtotime($res_ilearn->todate)));
  5776. // $objPHPExcel->getActiveSheet()->mergeCells("E".$row.":F".$row);
  5777. $user_arr = $parent->getQueryValue("SELECT u.userid,u.fname,u.lname,u.smpin,u.dealer_code, u.role,u.emp_code,u.mobileno,u.emailid,CASE WHEN u.role IN (8,9,10,11,12,13) THEN d.dealer_name ELSE '' END as dealer_name,CASE WHEN u.segment=0 THEN 'Common' WHEN u.segment=1 THEN 'Motorcycle' WHEN u.segment=2 THEN 'Scooter' END as segment_str,d.zm_name,d.rm_name,d.am_name,d.zone FROM " . TABLE_VIDEOSCHEDULEUSER . " vu JOIN " . TABLE_USER . " u ON vu.userid=u.userid LEFT JOIN " . DMS_DEALER . " d ON u.dealer_code=d.dealer_code WHERE vu.status=1 AND u.status='1' AND u.is_deleted='0' AND vu.sid='" . $res_ilearn->id . "' GROUP BY vu.sid,vu.userid ORDER BY u.dealer_code ASC,u.fname ASC,u.userid ASC");
  5778. if (count($user_arr) > 0) {
  5779. foreach ($user_arr as $res_user) {
  5780. $i = 0;
  5781. $row++;
  5782. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, ++$sn);
  5783. // $header_arr=array('S.no.','Date','Trainer Name','Participant Name(Planned)','Participant Name(Attended)','SMPIN','From time','To time','Time taken','Dealer Name','Dealer Code','Zone','ZM','RM','AM');
  5784. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, date('d-m-Y', strtotime($res_ilearn->fromdate)));
  5785. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_ilearn->organiser_name);
  5786. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, trim($res_user->fname . " " . $res_user->fname));
  5787. $check_arr = $parent->getQueryValue("SELECT id FROM `" . TABLE_VIDEOTRAININGTIMER . "` WHERE sid='" . $res_ilearn->id . "' AND userid='" . $res_user->userid . "' LIMIT 1");
  5788. $attend_name = (count($check_arr) > 0) ? trim($res_user->fname . " " . $res_user->fname) : '-';
  5789. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $attend_name);
  5790. $smpin = ($res_user->role > 7 && $res_user->role < 14) ? $res_user->smpin : $res_user->emp_code;
  5791. $objPHPExcel->getActiveSheet()->getStyle('A' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  5792. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $smpin);
  5793. $time_arr = $parent->getQueryValue("SELECT MIN(fromtime)fromtime,MAX(totime)totime,SUM(timetaken) tottime FROM `" . TABLE_VIDEOTRAININGTIMER . "` WHERE sid='" . $res_ilearn->id . "' AND userid='" . $res_user->userid . "' GROUP BY userid");
  5794. $start_time = (count($time_arr) > 0 && $time_arr[0]->fromtime) ? date('d-m-Y h:i A', strtotime($time_arr[0]->fromtime)) : '';
  5795. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $start_time);
  5796. $end_time = (count($time_arr) > 0 && $time_arr[0]->totime) ? date('d-m-Y h:i A', strtotime($time_arr[0]->totime)) : '';
  5797. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $end_time);
  5798. $timetaken = (count($time_arr) > 0 && $time_arr[0]->tottime) ? round($time_arr[0]->tottime / 60) : '';
  5799. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $timetaken);
  5800. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_name);
  5801. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $res_user->dealer_code);
  5802. $zone = ($res_user->role > 7 && $res_user->role < 14) ? $res_user->zone : '';
  5803. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $zone);
  5804. $zm_name = ($res_user->role > 7 && $res_user->role < 14) ? $res_user->zm_name : '';
  5805. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $zm_name);
  5806. $rm_name = ($res_user->role > 7 && $res_user->role < 14) ? $res_user->rm_name : '';
  5807. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $rm_name);
  5808. $am_name = ($res_user->role > 7 && $res_user->role < 14) ? $res_user->am_name : '';
  5809. $objPHPExcel->getActiveSheet()->SetCellValue(getColumnFromNumber($i++) . $row, $am_name);
  5810. }
  5811. }
  5812. }
  5813. }
  5814. //LOG
  5815. $logstr = 'ILEARN REPORT EXPORT';
  5816. globalfunc::insertUserLog($parent, $logstr);
  5817. $objPHPExcel->setActiveSheetIndex(0);
  5818. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  5819. $fpath = "../../" . S3_REPORT_URL;
  5820. $filename = "ilearn_report_" . uniqid() . ".xlsx";
  5821. $objWriter->save($fpath . $filename);
  5822. //CONNECT S3
  5823. $s3 = awsfileserver::connectS3();
  5824. awsfileserver::checkupload($parent, $s3, S3_BUCKET, S3_REPORT_URL . $filename, dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  5825. //delete report
  5826. @unlink(dirname(__FILE__) . "/../../../" . S3_REPORT_URL . $filename);
  5827. $filename = awsfileserver::getS3FileUrl($s3, S3_BUCKET, S3_REPORT_URL . $filename);
  5828. $parent->response(array('response' => 'success', 'data' => $filename, 'message' => $this->page_data['success1']), 200);
  5829. }
  5830. /* //////////////////////////////////////////////////////////////////////////////////////////// */
  5831. }