From 1211a793c4062db9a8dbc3fdcf66780f7fffa010 Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Fri, 12 Aug 2022 14:57:23 -0400 Subject: [PATCH 01/37] =?UTF-8?q?novas=20configura=C3=A7=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 4 ++-- index.php | 2 +- public/images/favicon.ico | Bin 438 -> 15406 bytes public/images/icons/csv-file.png | Bin 12605 -> 0 bytes public/images/icons/doc-file.png | Bin 9930 -> 0 bytes public/images/icons/notfound-file.png | Bin 12799 -> 0 bytes public/images/icons/pdf-file.png | Bin 8217 -> 0 bytes public/images/icons/ppt-file.png | Bin 8343 -> 0 bytes public/images/icons/txt-file.png | Bin 9495 -> 0 bytes public/images/icons/xls-file.png | Bin 11617 -> 0 bytes public/images/icons/zip-file.png | Bin 8533 -> 0 bytes public/js/main.js | 13 ++++++------- 12 files changed, 9 insertions(+), 10 deletions(-) delete mode 100644 public/images/icons/csv-file.png delete mode 100644 public/images/icons/doc-file.png delete mode 100644 public/images/icons/notfound-file.png delete mode 100644 public/images/icons/pdf-file.png delete mode 100644 public/images/icons/ppt-file.png delete mode 100644 public/images/icons/txt-file.png delete mode 100644 public/images/icons/xls-file.png delete mode 100644 public/images/icons/zip-file.png diff --git a/Dockerfile b/Dockerfile index e34b651..8ed317c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,7 @@ RUN php composer-setup.php --filename=composer --install-dir=/bin WORKDIR /var/www/html -RUN git clone http://desenvolvimento:SimpleS_G1t34@192.168.115.83:3000/awade/simples_client.git +RUN git clone http://desenvolvimento:SimpleS_G1t34@192.168.115.233:3000/awade/simples_client.git WORKDIR /var/www/html/simples_client @@ -26,5 +26,5 @@ ENTRYPOINT [ "php" ] CMD ["-S", "0.0.0.0:80", "-t", "/var/www/html/simples_client"] -#docker image build -t client_whatsapp . +# docker image build -t client_whatsapp . # docker run -d --name client_whatsapp -p 8001:80 client_whatsapp \ No newline at end of file diff --git a/index.php b/index.php index 5b009c7..70ff8ad 100644 --- a/index.php +++ b/index.php @@ -9,7 +9,7 @@ $crypt = new Crypt('aes-256-cbc', getconfig('app')['PASSWORD']); $geturl = bootstrap(); $connected = false; -if($geturl['t'] == 'gerar' && $_SERVER['SERVER_NAME'] == 'localhost'){ +if($geturl['t'] == 'gerar' && ($_SERVER['SERVER_NAME'] == 'localhost' || $geturl['password'] == 'S1MPL3S1P_CH4T')){ $expireToken = strtotime( '+1 days', time()); $json_info = '{"servidor": "http://sipcloud02.simplesip.com.br:8000", "websocket": "ws://sipcloud02.simplesip.com.br:8000/wss", "matricula": "1000", "fila": "102", "expire": "'.$expireToken.'"}'; echo $json_info; diff --git a/public/images/favicon.ico b/public/images/favicon.ico index cd8751f817f5d802807edf45a6b13c1ff4fb6db7..941efe3f042817ae2d4c8e316b195ba1bf370a3e 100644 GIT binary patch literal 15406 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 diff --git a/public/images/icons/csv-file.png b/public/images/icons/csv-file.png deleted file mode 100644 index d483883ab799021785a5432bb8c5d51187a320ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12605 zcmeHthf~vE)9;s}L=izzPl+Z*0 zktQ{CRC)=$x7?H8^SuASo%g*n_s-1>L$YVTd&+mu?q^Ggj+QFTd8YFa1ktEHeDDN< z$iY`~2zD0y+x8qd1pg>q6xH-#;NuIkdwc>Lji+nFIQ@7}8G7!_wuAPR7lS!Akw_F)NmR83mdg^;>{2Ef@>SgCkVh83uQnqA? zs-&I$H+(p%S;o$!-R0FzvA-3wNqf|AZ$`4VeJ?p8YU<`K>l)EChm%yHdv5Er@ z%rJ<|?eutyMiopb zNm9|SENe~RD}jwoI!!I~baK&2})?a=~J#Axg?^b%EguIZ67 zR9dL_Q=UKJ7<$#302Mx|fv%=(iiv5FZU$)7`dbv+_DZo~-DYH<0*2-*FoS}F-4fddpZb83xbis&I6SixW)^@9E04$k90j%RH;Gn#~2~`3SXo!n4Z4|77 zPUj7zN0LDfR%piw*3oo{T!$nim*Nc+uL4-5@59h)Bmy@eD3S;Ck(XWpEJkE7G9!L4aUmVxJqvgZ=oF#b%7FK35FPpv*q-?r zE=qGw67OdiSv)O?MOYD>_DN*)X!NzlQ}mRxoUGD`UlEko|Bal6H?HEFK8rcmu>jZ|J~RG#yDGog$D1{c|)5 zFw(kVoInV~Nm}UtXa1i&jnBCRavj83A%glZ3Y zWNmf^+WCDbu)MuNwKpb6;f99LXOy{${SQQF7aL@D*QFuYzwmC`uVnTX;_hv|=Mroj zEfe-nG%*m$Au|&fl`U2(*~weeYi#AU{wQ<>6-W8TfQwC6)u-Iu;c1D?9w8TJ8=yr| z5yswNwZj0e{S|UFyc3w!|9dW&&VV~vu23Lj+fH+Vs@vb~wAP#1`u~cxCv8=hLEpwF z4C`oCaB}3HUxoYTu9nME z^;jKyhPyz?LI!Ou5mtYJ?PK9*(aP0(yAw-KCmjAgM1A-@@Tk&Hq=X#p{qiK%?QlQv z2o?8AS^;W$&2`DJ@%U4)>lCYxCo4qxaasDXDcNURJ=N>sr8oq^=vrf!KtWtTB*e_b zhX0H|9Pr3TOw)_}WDLcslPmIFipX!)J{?6SqB5?bquz<7&V#N71gY-)xfv zo7#wArWqY{dtiLww0LI90e2B_ zMa6c~mqt*0jk%6KU+wGh~^oXi4q%Vm8|s_=8`UAcnsS{@`js3~f%wv?Ilw0Pa%b z+5w72w`?3t)N_zGHH(i50!Z|*p|Rcl+5VD;oU5;w14om)Wo(Nq0nORFH~O8B&|qE<40@$b9r^W025w1a+_QBj)48o>u4f9-~{G=f$Fy4YNh9(l(J{wN6E9D1FCo3~o2^1w2Cs zN~t{`twrOd@;q#&`W~+O4lWrLS0@g{#?~7r)|#<~RLXCAJlQ-P{ah>Q2U+&#^|# z_Hdh1}XTNCUzsa?Y^CEWd#0|H1bl*N>P4qRJ?+Y&K#uieh9t~TJ zPtSd&wIQQ~jz%xTM<<T4;)Zkcwb4E_nR5smWkP@7_Rp|8!GCPO()nrw8o#54r_QD^#@WZG9*@YRXM&$3G> zU!b>gVJ%q@vo!m`(e8#v@%fmy6lCW9b>s@>m2Ez*N^K`gny3#JoCPIjO-X(VA&qz-UJ2louF{9!(?@iD!4^EUm4*W##?KPuj)gf{pwgCoaj9q{hsN+M9Ym)9w2E2!Uamk_ zmB8YyQl?ra@!W!Efr8dOOI;glFJ$HQwwNw|_~@|YsgRi9_~r6D1`AC)+`U@=Kr^<3 zpzfSVf&CrShTz21QU9X{PdaKHY@XNubqG9f=Kgd#zHhA5?djB-B*wjRf*T*Q5K*>v zE&qJ=jcZ#$O|-5zhL*m%5w*sQ9cVkdh>yT_cK(RTmn6#gKe&|Reo!M(sYzROWQB5Q zkXn}@cKmfvJi?vEV6iL7d&^u}dVAZxb|YY0&aA3%8s<1T%q_XRE|u1iUhlYKdZ6#arF5_YwOsAe`;A72qMww;a=|?2l&oQ&D8w3 z0v_xm`Mx6;W4x!Ieyhjq(&}pJFHKh30bi>|wM)GDas>9It*wISqwH3Om`SxsAS4O*7F0y(VGQUU$8Gu!PW}fqsE~Ek*oyrfcXfcOX z*Dtr_iMx&_u{2c$HrI$Ma6dmKK*CYsgE=nTk}WVF8xsg zA$T!;FC3n#GY~Q&*m4c;RMB|U7Pk}DDA!wHA{{VbuK)FekWKNyM%ai)xcrDakHpW) z{pBKFEC0g)4wv!$c$fq^R5;x09tZ3hD(;zSv*sdZFj8>QhgGW9Z7|R|`Q4xVm8}_D ztf+riPfT5upylKp?|NWpRh^T2?=WWMobM-6klDR_6Y~l}C#Wl%R2J-*jalhwdVITy zdNEqRur@Z}n;}iV>tH-6`hopPd*V@A)~Rdi2GYRdk{ORFZ+h{Jn@U?}oCs47)m|z0 z053UY=K%EOD(m`_9*5Qa^>nPLwDbJLZNs%72G3^pA4#JAmn}-N+@OM}@J0tj(T4O>*3&bXiu={pyH--dp6n_-v-egl-Q2WCJ z4y(O&$70=z_-Zg2t3eT0laZjae6XILSQq5;;sG}DiMH}qRO3lPX$J4KQ;bBKLSL^B~uMu-X8?f>&rd3Ov837VFD^ypg3uZ+p|*=1@O5*-yRyZSS7Lv0+$^T9GDd5IZ!M z->~4IX&0uY0g%OzXoAmD{gZ&hcr(_M*e|mqJduA6tbmsoNL|%c%2Z1E93R`NUUdM zFH&nJc>8cz{(AiZB5#FpP{QjWZ;shuP&T}_*tW{}IsB0dbIdI*q_EEuzi6tMTV4F# zE3Z255C$We2p31jN}uu~uRt2Euj~3A_`g(>S53PN-oTq>$t8_qv3si_i;Qu;TaEU$ zlG*cu_p*YjxxFbGknqZM^7g~9p)rF(0Up_w=h0YC$HHzD?-Cb;spJWRd z{b7_*5e{8B-_-#SPqDKhH0iRk6*OWN3WH+oAjcpoyAuIa6XsuD5 zl>QRyO%ayq5>QjU+2~l|)mhfgsF&Mpx4h31{QKdP&h^+IuC`B7WHT&=M!mj~am?M! zzkB2=)=x#3rLLRMNz2SiUwxS*f1F2PT&3@Ib50-Jevl=D-X$zAGwY$J4W|z2=W<} zM!YQJ+MVBpnE!HwB(4;hp52 zjOmD3stAms<_E8o&4M!H0K+l4EkW5rs_27fT~`<#*iCQYod&E*8=D3-dW0`nX$@KO zQZ+|_hlT6U%OJFvSxXYE)m=QA`3(QW`3^)ZPo`++_pT%3jF%;jFV?lKvz>H2cTi+) z7gK3tu{>lKQveoEQtSJIXG8v$>&LB5s<8IvmYR~PaPj&r+mNE6VEn0XSGQU2*?zJ# z3H@X@2srzQv!>c9XGLRUgat z=*iuvKHyt^QF#aC3))b$Zc%KVt}qnb8O_dqfh*e(6p=fTkCH3+n-nZcHb)1c`7G5% zs8isL*V=Lr342=&zFk*T!{KYj-ptsgjO73|nXz4FMA&1^2H&j`vI}d2ah(zn(?gMy z$WaamGW7CW8M~T{XncRVeTPQx*MK#@e8mb<;KtH-SKT%W@0nV}AOzT20ZD09#E z7OY~@%6F~SHsin}hR-HE!sgJgeo^7hC-&m~eM|Ei$qTURpt`tTzKp4XKOq4_LD_Qu zf!3k5F2p!6$zbZe;(igw7rvLquBdLU-9~i(>+#!u*nCvD=+ay_dvD4v2_BbfX|VQH zd_{R=dp4AO?K}tY)W{FdIK!35xx~+b$V$Dp8@ylQJI(rC96g!xol=czR^iXoJh15+nUT*;EXH<;A!Qpq3rr(_FnGg0DaupYGtkYuNn6y zb<`^fejk?pHR4f!;i)R>5&(el0K_lMxL`XxQy<*OB0*@?;-kIMUiX|0Y?fzs=&)x83N|oU`ndS(?hxbM91vLk*R$WFb8LiUi|fADuVq($m)`k08BipH zyXRp4%#25);p~f0Y{4z;_U;e4pq{J0*V%^^zikT+ttn9_J{9msxXnNa}`e5wT4`@`qzRLJJb_($HZgv{ z?L4EmV|;Sm1r?2B78lH0d%bA!R_d4v3oa}qBX*K-(F{0{tLuYbGIj(fdUsyvdz{8fhYgrQEkK;kr!$L^$WU}CyN$`lfMzS3{xuMKVOsfBvZ>4Gp%QHlfzI8 zDH||3>=_29`Ynm6rCCMC3t*@=FPwb?swTM<76)X01;ifFkA7|Lx2Q*dRjB&NuosT* zpPZ%be7e$ACoq|j`Bf=V+q*xzjTE1vU#;z+V?gO{;1;5xySt%?w}%)4@D=t;7D!XpYwH$j0u=_{ z`=FvGnw~Ft2$5W;b*XLq+*09bFp3fs-eOLo4sX&fhHM2C#;KK}@*^kN$p#)fmll~^+pvPGvg5$7r zFB^LemCE;t29nD=z?0qJ*0hT#5qFoXC33=GP}6zw1eqKgL0>iEFmYa5<_KGqokq?d*ZoKe1$Kb0nA8i z2(D&KDE5bwpw;|4dT<8FeBu0%=J%U!&V|TY(JV&Q)BC*Hh@r`DTBKXwN`#kSeIAOb zGahLpn;>5TY#YsoY^zAp)`EFcyr$Yr=nEpk14a~LcN<}6$su7XRgCu&lghkBm7Pp1 z|M1~F;Qw%n_4qZ(ur}z^-o9>IxU@5riCxkUoIW7=0wtbP0rw6B4317f-sC7zch0g+SvA?U^S>~ z$zix~!U)B<~A&dW}d1l zPLr{Hd6?P~0HYfM9ySE0=9e~~!|1lvXsnuUc!Ue^os5~iAH8??@buTzQe{~{;S$%^ zIiuj-jUW*l{q-*@t+n1I0U(Ag_#@42q27o7%Fx>642)EPy<`2iADa1mHIEY$9K>}V z6ZSXVo-gspiEOvzCrb{qm{_^W0;JJr?agXBL2%UHl(vvzJa1;kUE`wCO0Gfj_fPSj z^<`z)Duell<94|BavAf%jm9x$iRsi;6YxTRr7^O^5<6v%y`W6bn$Z*jb^M#)1kta>hv4c^(15rq)FI}}q6-5evH{mjk%k_UuW z&D;K4cJ(HaIJN0EJhlY~aGH8B@9D^XeDPQM9a1C(7p|yZcZNWo&MxfJ0S-jGKYs73 zHc^rumZ;0^d<=kAT-I}exwh~G_Hu*lFbm*Egr&1hvJf)a3FL0XG=Z1e->jvAUe7(; zgXrLmX@rFgt zZ@57b;cZ`5w!%&Frr0^ZN6LvbdN(u~f{NZsnBN1rG|fzPU6r=6;fkEw)MSP{`0MO0 zpP9`%HJ4sZrut2RToXvjBucaW@|%#)dXsn;{cbuc?we~BW7a8sMM+};PTZJ3j$Nu=#JT6a5e@IdBTM)!25Bz_) zUk6PHkPiLy+xycdWHOiQM@QV_K9qq=Zl^Tuz-$m@)(=vv9Td9>?Sm4>0}{L(XGgjygSV4lQvn``^cnuHG3cH><6Ht#%iy zMi4bxohkI;l>buucO-S~UkeEnkm>e z6$Jz{kfs)UGBz0GvSwg4UO>~DZanAxljGSziZn0y1#u7fX=A4_D zy-u86IegW)Tch#Ld~=&|GVSjlk8h8fR{pBIW@9s1y!g8MwDS&ZDFtXXh5)8}_KU%)7dN`I0m7 zEjA?-X)7zAX%Q`CRCn5x?xVzSC|^K)%nO4`xe(n8gT1_l0|jUhply9aB$gAK27~VM zA{&H@V?o9sSf#g>{7qSseSS}gaLCP?7vMxykmaM4T6AHTzq4iVNmVd8L z;R!=c_O>ch%!hn5HgS{F4Zml1>c2MTA937(A0GMIZl6m|@b7ZJwYK5gXiaQb+L^l3 z4C=tkvW5-Oy-3!d_?po^@USJN?QO zuM?KAX{N&X#g(XZl6F;?{PRlO_IOJpekitnbnGC_l=nFRQ6pV^twAr4tQyT`W z4uFg?`E2qcUNnJu097EL-~C;BY__gPXP349-XThpQMJH5qIX>C#DbWL1eE}SJ&u>o z?|A;n`WJ7X<5V}hxxuC$Qx>LEs*{CUgihUgRr$zSssRbNAN$n`z_8LuM!%&#?Ea0g zbLsCIoj84^Fb=5#6|vl`Nf5B#ngxL>pS0Lkt+?1!=CX;Sp}M`BW-&Y@%CK+o6W+~o z^ZM*^X6iS4Tg4u;eUpialUqF8bC~CBT|3Jo)RFC59j&dDc3;cj3cvhzL$s-m%Bz93R63&NwFhxi zfoc*QU#+^#kUy^NMY9qMwPey&RPwb>2dm4*#dA~&IsA$cm~Q&;XVBqs5IZ1`K?X2Kg>w5 zU=79H;>m~z#i=PL@6!^B|K;uF<^R-6s7S+BWuz~>FRNWg%f{xBuCxquC+h_TkV`Io z{_*&4mhP}*h$g5j);N!XrWEpU6%eTW@AcX77ne~Rtfu>_{q7^oELaZAC%DIjwv**0SFziH@q z^j?ZjT0w&?I@F5GmZ&zSOvy@SPDaIcm}o2I-ANkwDTOOfjBJLJv^MCYRCy&Hw{ zEJ=L?ulrgaZo6Q^a;YfM=Y2^{5pl=zU*J@bIp-<+ad%*VoFy(4^ta}|AB#VvY4;*^ z@}i|!-A`85Mg-H%B(c=Fyp0DD+Qku)tLjlhpj{YRS5g`OQblaah-|dLz4!ilp^58w zmphWSx`FM3s2z?0YVuJrMbJ8LAy~+pxL8Tu5vHmh>eBXL2tDcEF?kAFDs~eHic2)4 zrVH8Q;dA(&an8jm$trswM1zE47n|?_&Jm0o@_dUTQBSbTWaz7c z(~{kcp&u6JjR=jhl#r4?VOf4C$yJwD3Pa>X)T;Gas})84ja8>Wd+Wbn)Bfqy{m}cH z$MKqS-)Xey!JR#02 zj|kX86BO5lK!VrfNoE n6R6Sdo1p@4{=ehHk0(-n9psky!}|3dNuHXr)`Mb2^Vk0i1(Is` diff --git a/public/images/icons/doc-file.png b/public/images/icons/doc-file.png deleted file mode 100644 index c10d2123eeae6629e471e8f278b92dcb54a68274..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9930 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⁡Awl<` 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 diff --git a/public/images/icons/notfound-file.png b/public/images/icons/notfound-file.png deleted file mode 100644 index e07f515b684ab0c4395a9c6e2e4bba4205db9d14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12799 zcmeHtdpOkF+xI-}S2*L(fm=bz`=`{}wG-?i3#-|KT9*ZQvY4cTRG zG3%DJ#+JGqiO1$ zu|qGu*|9B8cYPRdI+s5&WLDv2wj$E7V9oQ3w4H|Yf)-todMmx{fxD8_ljqV4>mRvE zDjqnx@?X+VLVtOb7OFHq-y^ABSW51&oJ6o$#iZQAM)l6PBDN`GvN<=QV#W>i%6O*x znRc%0baSpqaB#3NVocBB)e7NX*6;K17Zh0J7brwy5LF<*bfAzwR8jIPK_|Z~ppri{ z3G(|lVUf;}hjW|a%3m-}k0j_bd#66!;}|?U0sY3)gMrf%>uyawFDZWSHv?X8($vv8 zRY=h~v4P#Qzh@uKBQ&`54onJfi2hUF@F@~>k@*BJ)K=qH@qQM@{ zDwJ^r=od=8Hm7sK88z!_*y5A94Qr_^@1|M6Kz1n#D{6CGc|bZx&ze!ZkKrHM4s_)Y zvcNF})_f|gW^Q0NrgEB7wU>O?e|ts@yviR7(W6A+Djn>PncdB{*jv+A!(Kk+L>QU6 zDzG;MAk7>S>sD0PA7o5=FwWiM1l;*12OSrKg;|KmK58ZmRW-(pPx>*=-RC4Y>&yVZ zFS{v;J7{3VphDpWV#?w7jN#xfJEy>HS@>)MmA`7>=Eg$zQJLxKbdKwF@oC7~m02{^ z&^zkVJQZF%SrX{?V0ZzvJ(~$yt_V7vqo2vK$Z4WNT8oM@G<{M8ewPGvq@yu7oQnN5 zF=;0sBP=VKl9>YeoPJSYZ$w*gI8%k3sfTC(oWZ)QBL-QEZbG6ZYU9l~$K?d1;3QUz z5?xCF0%Zz}zrpDoHn7hna;A8M!`wp(5}RqDbr?HyI8$7X-dn%f(C>!E4)mq5?xLW5 zjB|zG)AT|0jmZ+qqnHvDgBWhanK3J(mrp~bsW}yf!ht>y9oybrervBn-GWH=_8|<@S)YMt`0pxE*UJ(i_57l3i!6{x_ydU_F5r5BE;tLy$ zuu0DNW6q*nbfj0LC{#uR|6b!{esS?V&T3+T#uZeY3)IAMV)0yg3Je7y)vri}ycqKf z$t2_3Ft+q4ta1Wgu*JhVaC+Awf#N=HZG$=8QOC9*?YrSO5;Vr&5sJs-$Zpr;#g7=?s4p#3x%M?7AGnd1)Wz5U-hBg46yla%&kNS zJrqx(KpQ}QI}J3^yTM~NjL?JV?lbdIat951)#J)V7{l>IE4hm(d?N}U_{j0g9~K2x zk`x8xEuh6f@4X)Y-yN+Qz5@EiB0Eo|aRQPNAS+S=Nz9?8QSShQNdif8B}#rmgQlL` zgW}j+gUtXcxT4$YI9*I)(%2c;$HvKrvl+Z5REuALo@ho-WQISK2T*fG6&6!rbo_WX zEM(a_R+wbK^Xe+lL`p8X=2SM>0eWuz-+lCuG8e49y1i=aFnRA+u6LGDM111IZ2wWSHQflAy~N zy9D&5*dX`!qIJMn=PhV%tT|Ia zhSI`*kfF5C01eDoxC=m5bBsD7_Ywv)8M+`rQHUoa28Qrb3IEbj%MFBG!kEU= z5s*kx$QA>{QIQza^0R?y|O3{(YkZd^(wD*~EI z9lHebH!5KlkxKW(t^~s9^@}K6CN>8)(ti>Rrd)z7X%t3}Na++x)k%BG}dR5Bu}pxCDqQeUu#Gz zHZBWg$5qf@*wPZTew_#D7$#xciO}rL(r=HSd*>%ohGiw37>VXFi^Wi+@{@=K&eLEY z4u}f|8v2*f_r+q1_=7gUV5MtGLhp|uIoDcy)KO@`4jRjc=t$+x72)yLyI>dM>?62- zc6N2)B@ic&+6?qm_M10|^MoOgtU2NwR>Irtrfn=H$@0qh6X3SUrc~z?5M55aYKG&Y zIl2qrB{p^l8rfgAv5rbnj1{p(lMUZ|QfCn_fwJ=w+#$jGl-*eGtV_8eNiklA%?sMf zAYo2ZxQNdZE|2um**p8FxLnc&H7J}y4}o+&G!9EEyYP@xkU_UhoSvt(0Fn`#^wXI>-cJ4n z^?o8=(W3NbfW>Y?{ zH-vFI(zINw6$#4s`*;N9`!0h+#O3`~%p9MSOwY98IUPEZKh^=w2&b5}b>lbQ8=XOg zGCYK5K#TGA?q~S{ojZ_qHnI|EZbu(mzd!x$YaUu+q2Z5JqQxrX=Hp$~pNRzt9r2o* zYS5F!k##-3OF-_LD1HBpYV1L%zB=*D3W0v6j!H94AG+<$1=< zVk^|$x`NdtK{;+h`u1kn71(IUTceV$m*Am5_$n0cVw2YuPic`hgo7jmHF>-zi3yK9 zxSO{p)mkQM7(z4=X}`9%uC}YKiMNO=Zf$WMr3#iHR-R0Tcz0=`(Ykc9h*WyrP=C|WX!}B}lO0u?*@Upt}aon%5z^^dp zMLai!pi_;&ZvNAP;UoM;ZqE-G3$_s$w?%>s8XrB_-|p@GpD@UJ#=0o`HZj94f6xAM zyHta@2P@9oN>E}o$VhUY*T`8E&i%E!XeosKOtViQ0HaSj6&%RTXzsTK&1I4-Uy?9Z z`NKS(-=|kK4cdYCMTEj>{Lh!5EC@&F>I*9p(thZ34Txi_Nq!$c>EvLOo6(p$n^~Td zKxHda$+i;U4VTNUshJ(qRm+p*ZIaJT5Mr;Oy6quD?Db9WQd2T|>v$N2=iYEv>0A-z zn>^xBp>j*RPsLmRkz475kC_K8&X-G3G}jUh%n#aGr#UTLS7%u_;zWW?u0v7s$12ts>&;c$s zO=+Vxfxngae639s;VK&_U;42+)7Lp)*?xMmDr)?^tVM0p#ml_B`+xXJZB(ZAs}L0m zH`~}{US^ipRM)w@<#uayeX92qxPLa5nlsV_a@2Zx=eJE`mxr5VHAr-v_V&-Mt^F_% zVMJ>&Am=7rjmpZST7$E3WiN=a^XIt~4|p^Ne2L1R>{|UrK6d`+KVFP_=jQ7F*=ce1 zJHFsmCSdKtxvS*lwazxM z(ANL+u(p2R)Tpd$QN5o$E~L0c&B6^U96zxus6jgHq=RODU!RzmSQigjG{l?IgPuLp z($q|S_AJP6uq8`OOuVb5B@zF0_qQZI@z9KJG?+V;$4PL}z2Hsa=*%S^Z{QlROm)a>^INqMOFaaw+SUs40?ax()P*ITh`uqEJ zxcGr;eLy#bu1*$a_&Xki{e?{wh<*MtB%aj@vAh!seba_9p6pF-62gDHQAnNndmWDc zTQTt$>i>#ww>>(ePX{rVz%(b&H*=Vlh$k(-6rPz#uAK)grT4Cwb}s}QdI>tQ-#<5s z?BDr8WqG!SE2%c18bWp%f8&Gq|88ty;rU0dT729JB(mFW&lF+pwJ#l6*N5?fZ^iVi zg|5YK@f0!Z=me(Sn==9f{oSu`{$Eiv2hY(Od`H^2SZ%P}xC@HZKiw$gmGXZp3o*if ztv2Kq@ZsQx*%i5ho!-=!!rFN(JUJH~`P370&;nn*P8DO?$q3Gr{&Gk37pvdjwL-BD z<3?D!qN$(;s|{o+l6M^VryGSF-ow9pTRyhIBO0$4+{m{8{~zrC%ku9U{C|?gSZ?G@ zfgH)1wlpoFD110ij{6PW`ock?7vJ9nuU0cZOf1J!P)#p9>tWG)Cne$OJr*7qJSo(t z(lsk66rhWYPKmx(=0y#HlVSSeo@LA%xLXdwTo-$+>fAj0cLr}idqfsLe9pwln z`*V7vcg^;yhYCXd+9m8~y$@a+%s+A^gnCW7uxhr#C8dLZ{HH zWRK$^uYH2dV5ABdS9Lr6-!1i@khJZ_di@Y8>p0$S**E|XCql)TkO1^UT=|ShdZUsB!xkv{$0Z=f>v6{!9QUqg}-xi z?t7Wg?SffG4{uy_%=7UfEfLG@IKtt)ax4kLa_d;{n8N08c9ht^Qh_sJp*i<{#`~1l zS32{45{8OD>O1f1OJ5H|p&x>#?5~!a=X%Y#dzH$vuEOgL{;3Vo?cVd@L)CWw>KjWD z&w2*u)I$x^68jx1;ZZU&>@)I2oY{A3T&&AqJ7Xue?ZtM1p(q=zyOWoz{f_MWTq`YJ zU&Am|o3~lJXJ~v9je2Aj^rq(BHlP9PK+F5UUIe|kXUM<4q4x(GgU65AE}8pL9dio* z5I0sBEou3t?9j+oY@YVlKH-yVT7rEpx3jBvGE=OzMAYdNev!=qr@I_Z)p~RVGw(rz z>f-YJ#*UYC@b z6HA6F=7Z5qDoaS8mXY2dfxFEe_c&d)8dH`a=ROO>zDsn>9Y2w?dBru<=h00d3d87k3F$e(d5<3GloPd5GY#3pBuLSAWTkX~4+MW*7?5(kq$7>w7Rt6*L^6LH7OFq=)Ps^?( z5HO2V>!KsC9Mjv)Oo_j|GoFeurimz18XM*7zSNGqn36k;$<`YGIlmIa_I27D_d{ZM zmwjio)0>A{J?^$1ryK$tW2mg7WtQh_a}OSga_y?Po-##AM#7X}a1wzwcU$+{eZ6c03V+iriw!r1cJ8y5 z&3kKO9u=|~&(G9qP>VbDTGx}Zjp`S72T@svLj9cAl-7xTww3MS+E^9c*uCjn5jy(r ztK+WW>05O+OgQ;FoZAI%kz1{0AMzSYEo0U>rZj7(<3%ZbcVU2jbKco+S>dm8rfzj( z(st~s6B!<#)HywNWV2Z2BdYl#~O_vk$K$9vpHGtIJ$AYp5ktB3))_o6WMC1)O#okD;X=~U48sO@gGgAe)?$X z?{L=mH)zSz+uik|uGa8?6ozj4`*#gxKCc3wFixGS@Y32B=lv#IRdwyT)urN5Wp2G? zacBFI)|GWyrtElunJ&~hJdszB6Jefft@UbpQx|W^+Qq+g9ua}ufzm39R-;Qo!P%v+ zyPZZv(7autoK^VjJ1}tZ#F;URyY^-kLkMtnVAP#It$i4b6FIemt;s3bzK@KO5lNA= zi_ZYIt50#6I~=X{*DtPqwo{eT61`wSOwsk$nq(HcZ!ST zJ*X|K9XfYl_{;XfksDP@WA&QuJYt74U(I51d(0aedvyA~2l+mE7EW#(RDRQ!zEgj& zV!OZ7!J==0IpHy4e6InK-+R8Fju=%MOQ}QU^q59<>VNLC3wb)5a?AhD&D0w^g`m z-gn82nZ0`d;Pd1ZpW@+LO)=AoWBpB5@(Iu8K=09|rG3i2552Bx*MEJOU4NpTDA=)8 zy#0Gzb~1iQqBa8+NO#V;>mEAYlde2w)hS`NE*?CLW?we#GZ_d@_LO^GI!}3^U{Jj6 zBmO^cnPQ6Hz1jczb!g%QPb2#e7p9ur^)Sy}ea>&4`iQTNiGa`GABx5Ct+%TTMx4~- z?$$RLXY;P9r&zT6wl8`0ti8PbdC0uvB%J)>uStgw_IP73c8+-OD9PL3qqt-x%5X#( zysSqZajO+=GLO&j~F857$O0VkYyKm{Z2ybgz1d93+#Y(+LN}mn{SP| zDqGxqiNWqM-g+-SAVD)=SxNZf*Y_PtUI~kU=2KkjQ#l*t=2mx)R?7~#j&G3`Gd0pN zi-{;m@e*|ml7X-9pMI*UP#$|+wdL;b$ma3=-8VV?03GEp{lN+M-%&BEE1XqHf2bs# zy#BExuDS5phdX$;6ul$ZezOW_UcLBxvW2p*L#G_Rw&}gcOD8)mTK2PLOtG%q$g;2X zDp-w_{Y;u{v3DDVe|}>Z&sAxxx@rqv$X=STPqLlZ-YHSG0N1Ba;gLEF@ z6T8(kc`L$}{1){!?8(OjO_8e;576~higp$QPpb}Knul>$jD17HHdYzL9&!XXJCt=% z(KTce*9-fIfST9(qox%8Ij6Tyx6B956Rh^;x`<>d4{dgf%5wMhiC7mShV|34EzM*q z(Mz-~NEf8z(H0Aj< zmC6=;S2v#pFF3n1b)#CDk*DU93X#o;YHdeExu!D?7pZ{sV??TN(sccfwHEF}%3|4y zt}bt#>{c(nFqQ=N%aF2I`JS>&bUE^>AGuDvQ?yGC_ERFIpCJD3^_rSKJFUJ)_Z2^ir+<-NND z?ba>6kc1nv+tyY#rqb*;)h~ZcYW1Wv5RY*OZC6_84VIJ z{6PEHbICD*cdyBS84u$jMrq6{qArG*!>8ZXq=`7^fR^ZoFe)o93#0O~iM;7R1c}NP zk%f^3X$af7Q^8Fm8u!B^@~N3GU1nCUk(+^E$JQ^7FM9e~Kl|w%a4biSu=p1$x|(_v zxnb&sMSDjS8xK4|UG8~FYl;ekx)U1ZqDfO+Yi@*&jV5NvAUCSDBI0c7?o94=F`?0) zDf}{YiJu}Cx9{c=?F++%@JrJJI|r^QF2T~ zx2aS);%ve0Oy?*uq0foIfl~DEnNBq|ms!x( zfSB(qX1?hyW7!!G?5Z~eFpJ|V2Ht9PozQPitt(JipF1DqWN@8eMi#6swdgw+pc?iR zzc@X~QJiMC4w~r2G{#JM*BiTOBHaO`tElMx%5u8M55JCI((*5ScTMp9IDI6^)@ebx z&^8sYufQoUM}9vVvH$Bi+oI9xQj%SVHW0D$j;9?lE^Bz!~yp6#$%3M8{(gYrFp!GZ_=LU^u4L7MlL-eq3^_*=LB zh-6uQQTS5CPutqh+}qVJ;OcD`5D*Y>;<}fIuk+PgE+@QiyJgIs-4B37$_3mxi@;3! za8OcaKTGq>(qBovxtfXP?tXoyc;jM2e}5}R`cQ5ici5vswI3kJslko5xb7HWn_c;`#|p*oHw#4@pX_Y(MuZami=vh zJ<|C51gMYR>T|ZE@wKEgZiC_TprGz76F7#Q6~rp<0@KVwaqx-qP%HTPK7^kl0=&RV z5seQ6AaoAZRf+;FQqe%|J^&>|p4?s@K#Yk3YSEBP;>k7NB4O`c0NjyiY=a;GMp8(3 zHzdf7#sRuM0H@MaN7QD_&UMic?Mq@;-cQUKWKp}J0>05&!n48p;BSX9zu*x*n} z4`2fqBnCEcQvZO!Tv9|!2<&+t)uj)C35sUirucSM6ps7n1K9>+6~gsK?p!ojNO z7Fjg3)m?}XO$12dMYm`k0zgp;xpD%MQ0hMc`1=757JzH|s2@hKF+}|^fQ>Qg#{~c+ zk%~}_C?0eYoUWGTC}Ic?0GlG{ByLDHOCsxY02tjHO`L-Zq;eeH)rbP1dN*Pi4m~M@ z?h1vZ8xG~S4|0nLB8Ii#Yk8?$bqF$Pg!0pXum6Z5cEG{bC(&K6A$P14QtcrCj@>xy z6qMWIJjzc90kAHR+yzN}l;3tpPT;U>a1l=3<8k*!0%8#wL5DJTSxDt#cma59jH;1< zTn14@7Mv1y5pgoZ2jet!5`|ux6 zLWv9$sF60cbjP1~^S3?6tc_1Nzf({>orT|ht*oL>ro+DW>=}Fit2Z0{&7Wbs@6ayz zB}p-f-=N2mHTPB#?Cn+Z=^qwo=b{M5RLw?xNJ_RTj}m=8w7ZT{b(+TP2)rG@n3TnA zKSUPMJaq6h1|vvVU+8?lk?6HND&YCF`^dP514W3iRN49dlc6;8fEp1v8t1%OyZg1) zjX)D=5eamiZ(1Sm6F0m1Zq2Uf(RgcA5iQStljyn2 zKarX`zzbY!Z?9h7>V9#fkYeY$g*!1LufGLhG$U{PFT@uQW$p6GQXKVQtqr>0Ay}Ix z@(buocAc8nD=z~m`PnzCe70ljr_0Pbb3gNfNx!w@w$9@&_P-I0Z>_Rp$A;@}LczCm zGHO4+_*2i1*-+KH$K zGz;q{#<#Zqu%KN?D&K4xv2MI^`KArQ=L&(oS8Tba*_+Fdl$B#$ybWM4p|CdDGDzZ1 zXkULP0r3C(fmtAqbsHd1-Onz4ezLXDZ$fUW94;<0H~HfxlgVlwC`)gQ#~+@nUwa!kDyn6gBBmfxWmdM==iMFKF_!I1oyHLn zlR2-Ekiz%5f2xfa|5;E}>^7FDxw-m^(@hs&e`0icze@;xW@s!?gSDELe!U=Di+dON zH2p9@b5{dv)&#?)!qquDyf26SS9qyg7Xk&U2e(9Bi5Dw%1B_do{Gsud@AhU5+i4`NgN^?{tcZazrGENnH464_*4MrPlRi zeNj;zZa~WunzCEnmgP$gq*;htAF`qS3*!1l+rJQlczRJu-`QlItO85fF}6pA-oN{P zkYV|ruix{+mPsf#Up2^VcD?k^e$4c0cJa9R=92-Ui}!>B!Su~qO8GxJ`9AIUSYXT( zbk|2kE0%79no?-Dbyo;3>)+NWXy#*0`lrthj8?UYA<#Sn)!ow0d1`LoIJNSAT3V() zhPSGZ(l1(ObvzcDMZ!!)W8Qc+YuS@{{WU{yrUstrF+h*Rz=5RS5%2_qC*%KshbPdp zdHF0gDpyc5PI$-X`8!L0?B9b<)oJ}0MKwChmuqgM-MXMSHX!xUd#~v?b)TopzHXGz z!ioGq2i(r05w5NY?4-lVb7S52zMoa^3LD zYc*3pI8k{kj<}_Q5w4{4>8dD-gQe)2d|Q@4mOiFPke9ekIJkf4MB4OGO*`C`RQwL? zmzco3Vj+&}&yHq-2J?}zG?=_T%gT6u9Y^;?SDs-C0Vydb!twoe#~Wv|-@Avg5jX;qdOm&uHOj!$xTHW?8i(H3@~|uf!iJVe)r3zha&;Xw zPB6()BYbuf7ruZg$O?iC8(a_T?mK-Gs~OFl^gyDJ!9tW9)NW8BAE*S#}Uf{@vb>k%Qv>!7R5Ff zfPFB4ItXJUt^dvk@85LP~r+V zT_R`T)!RzV(WW{Ir}wrk!3?Y{{o}}p`w~-kX}LIC(Yx)#LsL=BWc+qJW02HJe#~(8 zo5>g_Pgu2oTHJe~j@)jd9ePcLCX=8$|74>(nCiGB9;m?PpG!PKDi~^)9}<>v2(UA} z^78j0t7kV?>HWr8F>LBBa%7_J{CBNx-<69?VuKQmYuSlTu0<2UlZusdeLjn)D`FQ& zXWEx&zEUw?v|ajW?_`_?-YvIPt<6Wf7i_2&sNb3M){Tw(7FJDpb8N5n&SoZEA!K|g z|JmtfhpO01>UWN@bB4sYC?g`_T2R0h9LXyf|M|7glHGi4^qm=7{|ttyp^-MFX)2%4 zsig4A*>*`RP+>azL+!q{%76_$L;H~HJz}3vzS{VpGL@idBA%b+K43?fSMU;=%T(nd z-VozF33&fEpSKaldGn(p+dlA22mZ%h>%|}Arl%e+S5UTq?&oYcp4z@W!(a4LnS}a& zgPg!q9rzUwQwdSeY0sR&SE}}#3pw#sBO~Wt3zunz>dI}jzbkd~JAgQ;E|2I^e7LXi zn9j?lL(I5)M`P07T(djSc+D;|aHza;)?>N#a^g1$?R?W!`hn2-!~k+Q0oVHJX&;<~ z=7jsolsyI#!KYFvjC&=C{K^~tq|Li3?2#NQjhhn{CFmU#EEhUEWB*&OnZ`CODb9}3 zo)BilYH+oD7B^luA|4s`-Rc-2CM;w)B26v8v(W9O*+8#ozW3Mt++nNzPCwWZaqf$v z>L&Jg?ws15dWv~w@a@*8!=}sNaYNz(Hm&J}j z0(}lm6=CS}e|B_AS?#BE*pAb8-ohiQ%LN52 z9G!;QDvNgobeuo*kj)1>K2=RXjIiI^E51I!>+5FNzdpu9)yKgM&+vKUk%V<}r|v*% zXS05%#Xzs1{06l%im3h5SGx~Fxi9_|J2oM)8vQ)5+PUvzc6Q)&sHWIMyG4!2l$j)1 z%N|w8G)tZ=Q)Ae0AHT?AwUabicirWfW**m%7yyPVX%n zqc%`d@jCCP)nCc~Bgf$*!T7PS<(ipzoguZ_>C-+pdN0Af@aS%Fq?yUqq`E&?uyPO| zuV^~UjC*-!{fk6GRk1QNF5#kt2AZoO#~2fSLKfqUKpQ`DKZzQe53-S(X~+bY>kyV914sZ-wCnD8LJw?27JX|Hyi-3FU1 zJNV@jt=icMCf-Ve=9k+ac!w%=Y<$hJ;1rtgYT`@ce>wYPEpPef+aL}>X=4M8X;kp( zE^`{|VVa&wUsA5ADovOM}9% z7w8HD1;sQs%kqQ|JLIFA_T_kdT&phsp!R;#&PN+$ zhsbqs!YR?o4l5Z&-!xq~*f{T3d5gYxVPGB=b%bQiYO!+qoWr?lzIjN^XQ41TXTZ!w zgf!P&7qr}|M!6$Uei)4AP$>=SmLb!OkSgoeF!00L@$3-CQ zG;~>Z)9Di}Si`JP`$D&(p13u)+w^uYcbZ=*RK>c z%p#sIuDSI+)$inj3B~9swtYxb4`V-dfQ7B z&G@Fx{~B;ZP%t^W-_rqa&fE~J#n(GJ z0AlZTi?s=iwqL(;{iV>$qdiKX%M1yOi%V8MhW7St#)>#9pg^Y1fH^&RIwt*wgBh^i zi2%jjREd(Mvj|Wl2nmJi5beULzQ{;fjKDAU_SSl4a<-LbSWOQD2x&oi<0^(OP6uI- zz+D;%?B6cMBr8;YkJ0a(RShZmmq%7OwAU!vKCNhKLK=GF^4YV*Hd>Xz!?$Bb6{^bZ z_8hL{>;cYtb#k_@Z`_;dcHu@A`(sC0VoqFkYC>zzdx_|~ZvK}3CoIl^7EM#uQoF(Y z+O+$UWiTIcbIRWeFaEh(_{wet>*2aH9jyZjL2ujOan|43qbm{Dm-AXF?-}d2hc7PL zBZ>1zf`iAYiR;#eS%h=7+{zz?zgCtHDov|6_j|_Q7xgm4a5d=yEY2{e@i0GU%^~KY zRnzmuYVPcfm;Ib*=*E?sF#8Qsi?R{u?}vb*a_!_B;UI>Q&myf~nND)wUWXZZZH(aGiEmyPhjukLc8 zV;M$`d}^eXqB0clJO{ce+n)!)h{xAvv&AYeEpsc-SG@BUCIVPopa3{!1VexhHhTkl z5ZC>UjixMSaW(=89=r5SX^6D72EyP!zv@070o_={+b6|Nx7O-l63W-tt^?x{eGC`$ zpygq+?$0(en)M-c-|`q^3z`R%SSYBXJvJ8!x}T>uRpSp0W$R%OQs-d_C#JMiWlE4B z)W|JRkbOSmsX$KDq31i!W&BjYmS8<^9P8Lz;Y8mZHYv_N-*Aj%y`fB)U=ju+08yK! z>Lb_DG%lYvf6vX_hMR;arQ8fY8Ttk6;m)({dOv{XNa=qGbA@5q0CoGZ3{_0NF(aoD$sicNZ-L zA>0_rkMmr&X!Ae}#)4eutPO(Z{_xJN;zX|W>)n$7w;=W6q&8fR7d%K{om5p<(Zh&| zNVGaH%L^RO?cdmdMs-Sv70vH>6$M^M_L8hDgGWF4Z5jD)SYk7LX6rB=R2v=rk24@{ zOMi1y3mRskMETNLM}H(pt4qIB=Dgl#Wr26?tW1UGnwAAibe=1pm31$du{w1(zE=J_ zHYoi{@KqRqMCfx z>a((SJg4H?E$Rgd7vSXqR42iG_PgQ#0lxiN%GuRG8gJ5}93*%!jd`WHofXKIFxv&N zilk33i7P48*yJR=#s!QFlEEMQcWOjd7SsN$pZzEgKjwWHCN5pyFl=~90l$h_f5=c9W zeYI;>7m``oZOxb>2>-GPWJn~)z4tWqeSqmg&?#L?)4uUc^-Ve2`-GzG+uPR-?+YNX zB(hF~ET%#uB(H}tc+T_YDdwNFM=mf9)vBa1a$=n7RV!BeWjX0jS!ZG4o0uXJ80H=4 zP+9n(n&zC}%~-sz-*H1Gw3BXxd9u4vm%r_4=Qoj!;Ec7?%^RIofrMn2+NpCHjKf$P z*J)`1T&Q2cgX)w}rh%!UiPddO^=Zm-$kKe!VP@R68CAB~GxjVema#b+@OX1n0+# z;jgbT(6;j{S<7KcTOP^uQw?<{l%&|P+M1(7xf>d*<~llL^8Tp_#kBhfb*DBBLHGK> z%4n1=ae|(5C*|iC;ouE{R+!tku{2LZpL}``soCFTNwcouHP;XphLb8j40Y#OX20%b zk7{G@N8JG{*dU;9GeQji#Z(ilK>p0U`r`u9AX_>7U zOE}O!U}=6(gxS45l6xAu>P$SnR-wsD%P_0%%*T3R!SWwX9V84VR66^LZ)?Il5D>nK4pKk_yvg@&i{ZorU{_0ig?6nphSVWIk~r z6%op##_p5Vfl9fjn-Sl-KMkFA9`=moJBU>Dxp^fW)oLD( z51r|0mcOzg%0X%ueO}wWpNZuf8&% zk^YB{Nyw4B5CTr_LL+xBDJxD&!%}vpd2V??zL5N%LOAz>WC!k%k6^jVx`8$w6)I6duzyiHkk|9 zly{eesxl+K@e*4)yXa)*T&oXS5R0{*yVKV)`v)` zkCEo{z&(5HNmJ7%CmX+wgN0X}cV@oCr@GKF=!NsN8o`VUOg#R7vbw^u}Zpg`93DmfB`MyEIUkW!9wnqSM+#4hEAaEmIa!8yn*Vg6jyuf#O3D(cP(d(WLSZc~RpoBEixz?@3iY-Z;9q-4E{nIf+t2qklP@F69f@K4g(ntAfm{j0%E`cIYbbUI~zC^v#~h9D?+I1_G?ZDwbycEA7a*8b{Ozp7uVsP5O@@Adn1zt`^~+|G39niT78-DLoMi&L)FIez81;SfB&sci{u&Z|S4-t>q zB>@Nb`{-NwSa>-3`2T*}5%~N2E8nPl^K|3yko;T?|NNF>X8{ zI0p{SjrRAIiW)JlRNQ3+)I9m?TD6#thOwI@9k-(dA+l zevLo(LFwX)W4}La`s*R?)SjzJTa(1FZJQhCwA|+iM$RH=_p6?!5`pxUZO2Az-5^3u@PI8$`CW-+T)dsvBGRL3RlRF z+v(o>X8hsn*Wc?SvX;M6#*DE-Y;6=Sh9B4L*8gsfgZg&0p{BMn?fFRNxq26WTO>cu-f{nloODD|MhAi|j(A{Y_HJIL z>>dR6K){-QFV7k5YZ(W`d*F=6K@O-M(%gen*$u`yxzfO@BKL%Q&ucAj=;@K9@s)HUyen29c!D$mhZk{0)K-Nea&LA;1H&psYGK_|1IV$15R`);B&05f9OH-JX*BuSApl&@^1ph_4{*`pARz*P=US+0 zb4Z^6nSzAd=}N~7Z53N4mEMzCl3kBUMNN`L|y0Ai}(U;w1K1rMkP z0XTL5x%?Xv$U?43vJjL*QXpmPJqSTSJ{L}|fb^om$-%H`3MZf33IHB=AF2=P0P?mR z0LzAGSs5fClTPvf_zi&B(|FtrJPOG~!7+C@EW8I%3Hd#$fNFaJkrp6m2*4{@bY`g_ z0Q=7Ivv(mtbryv@0JpX}j%wS0s}%J4eNMn(BVhysB72_2#q#i@Hg}~|f-3W$0 z0H*s<;ln>}C9)L{Bo`!GWv4j7=^FKL+kUW9R@~Q3+ zS?NG~i<70khEsZ);ualhd4_+uaY|Q*-h7qw8rP@BOcs`*TeNPTpNJbn|EGJ{uBxUc zQOaELJjv#qH%lO>9=ramU2$kNzpJj`gq>)!lfPs?q1>-B#Pk$nj&RCcO|5t?j5Jpl zFgq9R$2GNJ`R%vc=)J#Ot579YT+HemZu^BFEUZqY3DtSq`2Qu%XGK2JS5iMpV|z}h zjv5bCH0Jg*vi+={E7Wyn= zLF%8)tyQT+epeH4H1}>;>|fFd&8-4L(a)ssqzHqiyx9X%W9Fd&$xpyFlYE2Ae^2LI zuJkzGf_oDD=HBNS0+SCSq8W+*(AYc>@tt9No<2D)u75S?>(9LU%n^Rztv&iu-D~6P zq4VL{8|4;V2j2$T(fO}^&WqV*wS9#I85!1DM1NEQ0sSdTXgVJWVqjmr~V8np_#D|Ja}?zz%o%CaD-%XubP zF}<%$jw4o$bn7X>>MlJCgJLAQ8#LY6j81c-{NGL?%5(! zcD|fI&t`U~{xj&D!AvLe4<2+2<^JrHGxdgIBy}?QAV;v;NHf4ii6hvV3PtUn&^Rt} z{$pc5l$KDfCtjKo-Bd3GXk7x^g@GA4*($V zfUo@j10B;iBH7k!(D~Mt9z6^0^}W#&y=Jr$$~#%~<-Z+Bz;M+@?}|q;4`&6xpbT+8 zI~3@clrOZjci!b75uOqB0sjsWeKYRbv4|zZTGNR@Kf)*5)0 z_^WBeedL!SbJy+U26TM-uqrvy&-w((`r=g_`iVE$UWWM8N5p*qjkY(G>n&BP+Ms#- zCH>bExI&XS8JnRa5fXbZO%KPII?_1bESFKf^uF`1&vqHUtC{o8p>EHm3R>^OX{j`` zz0rM*Hn*%3h!1WZ0Q<&1H5D-rX9rtMXaUW*+l)AxLsc9x;@0=Q)ySyInH)?OCHLc3 zF7Wk#qiS)rXnnzd<_z`>Lksx|IPR^I_TvJ^HS2QfdTU0jrlo z^iJW~Md(}1yPh0f<*RH%RJY0xwrbb-T{8Tl9`nv?!?n!kG8z+4DAEd}SWIL21; z%BFKl)|WW53H_fCMN_*8#3!2`H-jJ-YdncGI^gZ6A#U*qg=$Yqq9``TR4y4Ej&Kp$ zWuW!uWwD2jD$1-RJ1Hf?-mfHkCIs!6FH+nXmhG}P&(Qi<-H+?X>Ci~s-606H3*C+n zk4+AU4OqgfA%*gJ zyPdFMVTkv+t3K9m!tOt8`64D0I}+FKB7Jgq0YfK?wA3=jT9w= ziYr~5j=AIBTHjVIVL!Msnw6A1{%Nhmra+TzAw!wNP$xdErA3U4eHZI5k>8TuC)t?J zm}O*d5s@h8-q-Y52tr4!hZ1&Hyi#vjexygqBE-raWjHM_2F9Ol)n+nB@unk!v!oshol5-uFpQ;$%?23^O&PFeCKZH39sV5#`1S!SY`)O<`af|tG zC_||k&B*`J*}%3Qt(~@8eXA%j9<%3J$;7k@eb#c?1Z!Zq2Y7pLBgbg1w=DVnY|%q! zNlHe|byXdv+xh$M2nq6zTHg@OCXF`6SG6urGCSjSc$692R#mT+vZQyxgg1UHO8ipj z;rr=+N(%Ez6=fBwj@Y z>CR)k#t1W!x39hW@-wz#uJ>%0vE%BLWgRVpSJ%C^T_z^EqxEE-dV`Z%Od*L-_sBP6 zv8^cSof`oXv(3v@yj^MAF;-*rg&{Yk%# zFVs57`J1sWlQh!rk2m;?k6v0r0i|CMIK!qz%eBPYgr-zKgDGxTm1O-lg7s%&<-3m< zn+>nQT$1vxilq%yhvxK`;n^GT)&LJ+c^_Imy}gZPAJ=Dj9I?CoU@an;okVY}V$hQ13xirBY)tf)IPCo_mUh!0>abbK*E!aUYA zXxQW3A*V#D=5$p-z);*+U*g=#Oi@(4e+ccN0Hy}B6^c>)jFkkjk5h?oJNH*WY3D-)OzbLOImU2q_t%IsvO2t6tw(ftq;ho6ch_{q9^1FX8h`n#6sYmgPqVPi zRaF<+C@-ytND*AotAd}upn%Uadfc29cll#($r-cSAHRs!kHzw8D>97qL=3wsm90VQ zyha2CihoplDGeKAyFyodV(fjQ>~o~8Fze}47fBtzev(I2Y<)w}OjP{RfOSvM^!nRa z`nh|h61p2IybEj(Di_uM>S8KV*3NN1Ums1%d3~H0)4?0!88{3r>ttA{2e#kLa(kO_ zonpKIy0I73ppQtqexIp}e;6Fi;I4`1$-%mA5cuA!*vwvnA)-xRpcY$;u< zm0ri}{T5VR5|^64q7OpW7HgA9>^ZUi3NNE?87F7{khd1q)I|VhhyOLZmn%)V2|p6@ zD{ot5(%C+#ervhef!E*6zs+q~i)-lOH#rBYg~S4Wzqy0N%8#e&1m2pN>K8Yxclat* zYDt@B=eJNd;?QIANMQT>@|~cpq_hH`<{tIjBZK*6&ZDJn!xrtOrM<1Ar8Wgg1lpU7 z20*(2sximw4IFyzdt5FX@wsRDr0bOR=C!>H?&-OdkFgWp-dlzo_?}Zp09TG*uyPyQH4^N=t#; z;y_606&>4`K9xltH*Ov0Uq1@pmCg;d>3WNEmxCNK1O0C?O2e~MRjtQ~#=g0~4Tfz6 zns@9=2;)S@?4=lhw`OU;l!=ra7{tGz9Wec>)2RJi^WnA&mG@#$pzVPEFBc*v14Wo5 z1l$(q>@zGikn)uqaNH?pl#A?BjIfU5PeX%2{sx0Oogd@U{qIGPpe!DyG+cy~^W6%d zDM&G_|J8=7>=gE*&j5vLZvPlxD3F>2GEbLH&Mr26dXXe$ZQVm`{wN^oY4*Fndp3nK zZkb^@PHevWRWD{gJSbe4PuEXI$7q_}I59+ENd=z!O^N20S4E0H%EcG<_>bY9O(GNy zfw2eEtCN1~4fz-X^{w*~lJ=s!r2RF9`ogD@_Ax9g>BS=bRCV}P5O6Q~(#@gnpOY9u zF;B+^Lr{5dfO4?3vm1Z7p~CLg_yfkIv)i&yaEmDsdWfU5_8zQ$x*h3!Q(@sEs(wQy zB=-x4{C+D~M${|Y$-qY==ZpH<;!N~Nx68AeImdO1j_s;ksDzT#cGJ*kGb~MO|79s4 zO?$LobD1V|kv82%&)v6pkKnl#2Yr<(UXPG|(5qfUi4#K76fU6;Ll91~5zD2 z&!Dd9+)M7ddtN=+4L-&PGcXmAemdWRr#sBvIE!-1j%B;=MXBEA5!!ppF_6j;Nae>u z7ptM1wtJ(`&XzrSTN`aA`EaAXma?k%gyKI`elAA%HFUNIe;}(N=Jcv;YTAy7k+IfMV(i-gAKDxmR zmoNKlLV$17Ug!1Cya*cKnt3epPe8V?NKjoL4B4~`=-xm=ZK>FXO4aV%jjtK{%H%m28N!*a0t>veg z5+-E88(_5eS7KI|rXuWDf0XJyNC%miow~fMsoYW0V`5Zq5XXZT)+qLug*n*& z96D#p^^b-kt|}mW{xz`H{tE^>8}GM(G3c!PN0tW{rdffd77cYAyhQDC_?3C`*^F0N zB*>IoH4wT~X6wNAd^Y*@x8d$~MW-B$4OL6yO3#(b=hkyere7y(%!PpuRNlnwq}1nb zm3Kr-E|pw%f9%MvVxMwsgpSeMqPN8MYJVD`=SqmcqW%J9FsmE}Em`oc;sj=>*9&MH zK@L3@cCc5r|2?npY|MGl;$qeH_@G~tp8N0ATaR~p(s6GwxW|WCgp|gmeO0{>KRq6$6Qh!`{Jfu%_5C1Zc~`VHqXg<(G_@_ zDTZ{D&^YKbErlFT(Bt5J@BS9{&ec)cp>*KK*%uM#Z9TmgN^lZ1^Z=;zajIxEA{=D}Td0DXM`rb*f(DKUG6o@*PIl z#rA%lN3*CRb+vf5l(tv_R>#4!FF`E8&*FGJj4YD_1@ zXR!c8Y9tfMWx`-V;`}D$r^x}n3Sh*{z|9!T2O>+<|AFx<7bo@ut2en8La@SfOJknwG6!%ls>ykNnH8 zLyw#X7Jtg+)x*TVE5I6=sz=)&f;deD6fuv-&CGLHLs&@Ke)M+VMr(rpdMHd>B-!k* zt50NxcC~bR`|u%N;XZy;t1`pSS#2gYp6*t@Ky679>fR9cox+dB(y*2L?@- z8!EkgoKBrf~}CRtRUgIaDu=hx$@)m7ipub z-)m?!{`z}Q>_b^5phWd+8z^HJuoAe$lnBac{o0aa5enIgGdkarR&-9RKu(xBBi9$~t@4hn!aXD^UC`n9Wz%ji5U3tWF^^}e-1M=*`C z0@dc2#^vQ_iL`GDz!e8NYunn2VhtY0!Yb*t@x8I^C871iPK#LrtgI?m%zg+ja;s25 z+n&X4uin$$?qx}; zz6MLYS3_4~bs0=O&V9=K9eDq#WkYdAN&`N1BGiq`6GqFqus}?>{aIqMkF?=i?n$bP6u>c20gP=!++cg<5SErc1nr>BW&~U2(HeMRY=Ly1+H*VaNTX9@n>e zBd$E6Fd*0u)1xsFSsT+?6p4nS0D@WVJ;(j|=qx>s8?GcL0;Vb*-69of)(NaNIdRhH sA-(@jIUTMYKP}%68^O*01*pzj<*_Ogf>dXK=O!5=eG`1)scV1y8wGBE9smFU diff --git a/public/images/icons/txt-file.png b/public/images/icons/txt-file.png deleted file mode 100644 index 91da413029c2afc6ee49d5e1a3f852257d4d0152..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9495 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 JinQ$>{vWD-#T5Vm diff --git a/public/images/icons/xls-file.png b/public/images/icons/xls-file.png deleted file mode 100644 index e9528611358b38d770020b03abd9949baf5a7417..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11617 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 { - sendMessage() }) @@ -77,7 +76,7 @@ $(function(){ }) /** - * EVENTOS DE CLICK PARA SELECIONAR A SESSÃO DE MENSAGEM/CONVERSA E RECUPERAR AS MENSAGENS JÁ TROCADAS NO ATENDIMENTO + * EVENTOS DE CLICK PARA SELECIONAR A SESSAO DE MENSAGEM/CONVERSA E RECUPERAR AS MENSAGENS JA TROCADAS NO ATENDIMENTO * @param {*} id */ const selectNotification = (id) => { @@ -287,7 +286,7 @@ const sendMessage = (obj = {}) => { } /** - * ATUALIZA AS MENSAGEM QUE SÃO RECEBIDAS NA TELA DO ATENDIMENTO + * ATUALIZA AS MENSAGEM QUE SAO RECEBIDAS NA TELA DO ATENDIMENTO * @param {*} ev */ const viewMessage = (ev) => { @@ -348,7 +347,7 @@ const receiveNotification = (data) => { soundNotification(`${path}/sound/notification.mp3`) } - /** VALIDA O NUMERO, VERIFICA SE O TEM ALGMA MSG INICIAL, SE JÁ TEVE UM NUMERO NA VERIFICACAO */ + /** VALIDA O NUMERO, VERIFICA SE O TEM ALGMA MSG INICIAL, SE JA TEVE UM NUMERO NA VERIFICACAO */ listarAtendimentoAgente(localStorage.getItem('my_uniqueid')) validate = JSON.parse(localStorage.getItem('obj_notification')) @@ -397,7 +396,7 @@ const receiveNotification = (data) => { /** - * MANTEM TODAS AS MENSAGENS ARMAZENADAS NO LOCALSTORAGE, SEMPRE QUE ENVIA E RECEBE SERÁ GUARDADO + * MANTEM TODAS AS MENSAGENS ARMAZENADAS NO LOCALSTORAGE, SEMPRE QUE ENVIA E RECEBE SERA GUARDADO * @param {*} ev */ const keepMensage = (ev) => { @@ -414,7 +413,7 @@ const keepMensage = (ev) => { } /** - * FUNÇÃO PARA CAPTURAR O ARQUIVO A SER ENVIADO + * FUNCAO PARA CAPTURAR O ARQUIVO A SER ENVIADO */ const sendMedia = (media = null) => { let rec From 0c8c8b83b514491b766c1453aaf78959528bf6c0 Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Fri, 12 Aug 2022 15:57:26 -0400 Subject: [PATCH 02/37] testes --- Dockerfile | 2 +- index.php | 2 +- public/js/util.js | 8 -------- 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8ed317c..0ca2dac 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,7 @@ RUN php composer-setup.php --filename=composer --install-dir=/bin WORKDIR /var/www/html -RUN git clone http://desenvolvimento:SimpleS_G1t34@192.168.115.233:3000/awade/simples_client.git +RUN git clone -b develop http://desenvolvimento:SimpleS_G1t34@192.168.115.233:3000/awade/simples_client.git WORKDIR /var/www/html/simples_client diff --git a/index.php b/index.php index 70ff8ad..110e49b 100644 --- a/index.php +++ b/index.php @@ -11,7 +11,7 @@ $connected = false; if($geturl['t'] == 'gerar' && ($_SERVER['SERVER_NAME'] == 'localhost' || $geturl['password'] == 'S1MPL3S1P_CH4T')){ $expireToken = strtotime( '+1 days', time()); - $json_info = '{"servidor": "http://sipcloud02.simplesip.com.br:8000", "websocket": "ws://sipcloud02.simplesip.com.br:8000/wss", "matricula": "1000", "fila": "102", "expire": "'.$expireToken.'"}'; + $json_info = '{"servidor": "http://192.168.115.244:8080", "websocket": "ws://192.168.115.244:8080/wss", "matricula": "1000", "fila": "144", "expire": "'.$expireToken.'"}'; echo $json_info; echo "

"; echo "Token: "; diff --git a/public/js/util.js b/public/js/util.js index 103e212..20a95ed 100644 --- a/public/js/util.js +++ b/public/js/util.js @@ -509,14 +509,6 @@ const monitorPausaAgente = () => { const supervisorAgente = () => { /** MONITORA AS CONFIGURACOES */ setInterval(() => { - - /** FECHA A TELA DO AGENTE QUANDO O USUARIO SAI DO SIMPLESIP E DEIXA A TELA DO WHATSAPP ABERTO */ - // atualizaAgente().then((res) => { - // if (res.indexOf('close') >= 0) { - // window.close() - // } - // }) - statusAgente(localStorage.getItem('my_uniqueid')).then((agente) => { if (agente.status == 'error' && agente.message == 'Agente não encontrado') { window.close() From 2378f0897b69713ef3264eea5bc0e53292a8a7f3 Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Tue, 23 Aug 2022 11:53:09 -0400 Subject: [PATCH 03/37] novos ajustes --- index.php | 2 +- public/index.html | 4 ++-- public/js/requests.js | 54 ++++++++++++++++++++++++------------------- 3 files changed, 33 insertions(+), 27 deletions(-) diff --git a/index.php b/index.php index 110e49b..85b0149 100644 --- a/index.php +++ b/index.php @@ -11,7 +11,7 @@ $connected = false; if($geturl['t'] == 'gerar' && ($_SERVER['SERVER_NAME'] == 'localhost' || $geturl['password'] == 'S1MPL3S1P_CH4T')){ $expireToken = strtotime( '+1 days', time()); - $json_info = '{"servidor": "http://192.168.115.244:8080", "websocket": "ws://192.168.115.244:8080/wss", "matricula": "1000", "fila": "144", "expire": "'.$expireToken.'"}'; + $json_info = '{"servidor": "http://192.168.115.244:8081", "websocket": "ws://192.168.115.244:8081/wss", "matricula": "2424", "fila": "1", "expire": "'.$expireToken.'"}'; echo $json_info; echo "

"; echo "Token: "; diff --git a/public/index.html b/public/index.html index 07cc620..927696f 100644 --- a/public/index.html +++ b/public/index.html @@ -4,7 +4,7 @@ - Multi Channel | Simples Chat + Simples Chat @@ -97,7 +97,7 @@
- +
diff --git a/public/js/requests.js b/public/js/requests.js index d77c78f..a155548 100644 --- a/public/js/requests.js +++ b/public/js/requests.js @@ -1,6 +1,6 @@ const enviarMensagem = (dataSend) => { $.ajax({ - url: `${server_api}/integracao/media/api/agente/enviarMensagem`, + url: `${server_api}/messages/sendMessage`, type: "POST", data: JSON.stringify(dataSend), success: function (res) { @@ -14,8 +14,8 @@ const enviarMensagem = (dataSend) => { const listaMensagem = (uniqueid) => new Promise((resolve) => { $.ajax({ - url: `${server_api}/integracao/media/api/agente/listarMensagem`, - type: "POST", + url: `${server_api}/messages`, + type: "GET", data: JSON.stringify({ uniqueid }), @@ -30,10 +30,14 @@ const listaMensagem = (uniqueid) => new Promise((resolve) => { }) }) -const listarAgentesDisponivel = () => new Promise((resolve) => { +const listarAgentesDisponivel = (empresa) => new Promise((resolve) => { $.ajax({ - url: `${server_api}/integracao/media/api/agente/listarAgentesDisponivel`, + url: `${server_api}/supervisor`, type: "GET", + data: JSON.stringify({ + id_empresa, + agente_livre: "true" + }), success: function (res) { resolve(res) }, @@ -45,8 +49,8 @@ const listarAgentesDisponivel = () => new Promise((resolve) => { const listarAtendimentoAgente = (matricula) => new Promise((resolve) => { $.ajax({ - url: `${server_api}/integracao/media/api/agente/listarAtendimentoAgente`, - type: "POST", + url: `${server_api}/atendimentos`, + type: "GET", data: JSON.stringify({ matricula }), @@ -61,12 +65,12 @@ const listarAtendimentoAgente = (matricula) => new Promise((resolve) => { }); }) -const listarPausasAgente = (matricula) => new Promise((resolve) => { +const listarPausasAgente = (empresa) => new Promise((resolve) => { $.ajax({ - url: `${server_api}/integracao/media/api/agente/listarPausasAgente`, - type: "POST", + url: `${server_api}/pausas`, + type: "GET", data: JSON.stringify({ - matricula + empresa }), success: function (res) { resolve(res) @@ -79,7 +83,7 @@ const listarPausasAgente = (matricula) => new Promise((resolve) => { const entrarPausa = (id_pausa, matricula) => new Promise((resolve) => { $.ajax({ - url: `${server_api}/integracao/media/api/agente/entrarPausa`, + url: `${server_api}/supervisor/entrarPausa`, type: "POST", data: JSON.stringify({ id_pausa, @@ -101,7 +105,7 @@ const entrarPausa = (id_pausa, matricula) => new Promise((resolve) => { const sairPausa = (matricula) => new Promise((resolve) => { $.ajax({ - url: `${server_api}/integracao/media/api/agente/sairPausa`, + url: `${server_api}/supervisor/sairPausa`, type: "POST", data: JSON.stringify({ matricula @@ -116,13 +120,14 @@ const sairPausa = (matricula) => new Promise((resolve) => { }); }) -const entrar = (matricula, queue) => new Promise((resolve) => { +const entrar = (matricula, queue, empresa) => new Promise((resolve) => { $.ajax({ - url: `${server_api}/integracao/media/api/agente/entrar`, + url: `${server_api}/auth/entrar-supervisor`, type: "POST", data: JSON.stringify({ id_fila: queue, - matricula + matricula, + id_empresa: empresa }), success: function (res) { resolve(res) @@ -135,7 +140,7 @@ const entrar = (matricula, queue) => new Promise((resolve) => { const sair = (matricula) => { $.ajax({ - url: `${server_api}/integracao/media/api/agente/sair`, + url: `${server_api}/auth/sair`, type: "POST", data: JSON.stringify({ matricula @@ -156,7 +161,7 @@ const sair = (matricula) => { const finalizarAtendimento = (matricula, uniqueid) => new Promise((resolve) => { $.ajax({ - url: `${server_api}/integracao/media/api/agente/finalizarAtendimento`, + url: `${server_api}/atendimentos/finalizar`, type: "POST", data: JSON.stringify({ matricula, @@ -184,12 +189,13 @@ const finalizarAtendimento = (matricula, uniqueid) => new Promise((resolve) => { }); }) -const statusAgente = (matricula) => new Promise((resolve) => { +const statusAgente = (empresa, matricula) => new Promise((resolve) => { $.ajax({ - url: `${server_api}/integracao/media/api/agente/statusAgente`, - type: "POST", + url: `${server_api}/supervisor`, + type: "GET", data: JSON.stringify({ - matricula + matricula, + empresa }), success: function(res) { localStorage.removeItem('obj_status') @@ -219,7 +225,7 @@ const atualizaAgente = () => new Promise((resolve) => { const transferirAtendimento = (origem, destino, uniqueid) => new Promise((resolve) => { $.ajax({ - url: `${server_api}/integracao/media/api/agente/transferirAtendimento`, + url: `${server_api}/atendimentos/transferir`, type: "POST", data: JSON.stringify({ matricula_origem: origem, @@ -248,7 +254,7 @@ const transferirAtendimento = (origem, destino, uniqueid) => new Promise((resolv const marcarMensagemVista = (uniqueid) => { $.ajax({ - url: `${server_api}/integracao/media/api/agente/marcarMensagemVista`, + url: `${server_api}/messages/markMessageRead`, type: "POST", data: JSON.stringify({ uniqueid From c060c1d4a64aabd61d2e4e6ec3e05a311c356c88 Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Tue, 23 Aug 2022 14:06:00 -0400 Subject: [PATCH 04/37] ajustes --- public/js/requests.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/public/js/requests.js b/public/js/requests.js index a155548..23d87fa 100644 --- a/public/js/requests.js +++ b/public/js/requests.js @@ -16,9 +16,9 @@ const listaMensagem = (uniqueid) => new Promise((resolve) => { $.ajax({ url: `${server_api}/messages`, type: "GET", - data: JSON.stringify({ + data: { uniqueid - }), + }, success: function (res) { localStorage.removeItem('obj_contact') localStorage.setItem('obj_contact', JSON.stringify(res)) @@ -34,10 +34,10 @@ const listarAgentesDisponivel = (empresa) => new Promise((resolve) => { $.ajax({ url: `${server_api}/supervisor`, type: "GET", - data: JSON.stringify({ + data: { id_empresa, agente_livre: "true" - }), + }, success: function (res) { resolve(res) }, @@ -51,9 +51,9 @@ const listarAtendimentoAgente = (matricula) => new Promise((resolve) => { $.ajax({ url: `${server_api}/atendimentos`, type: "GET", - data: JSON.stringify({ + data: { matricula - }), + }, success: function (res) { localStorage.removeItem('obj_notification') localStorage.setItem('obj_notification', JSON.stringify(res)) @@ -69,9 +69,9 @@ const listarPausasAgente = (empresa) => new Promise((resolve) => { $.ajax({ url: `${server_api}/pausas`, type: "GET", - data: JSON.stringify({ + data: { empresa - }), + }, success: function (res) { resolve(res) }, @@ -193,10 +193,10 @@ const statusAgente = (empresa, matricula) => new Promise((resolve) => { $.ajax({ url: `${server_api}/supervisor`, type: "GET", - data: JSON.stringify({ + data: { matricula, empresa - }), + }, success: function(res) { localStorage.removeItem('obj_status') localStorage.setItem('obj_status', JSON.stringify(res)) From 73299ab3814c4089ab86a5ef933e50675c7913a2 Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Fri, 26 Aug 2022 08:02:38 -0400 Subject: [PATCH 05/37] configs --- public/js/config.js | 1 - public/js/requests.js | 12 ------------ 2 files changed, 13 deletions(-) diff --git a/public/js/config.js b/public/js/config.js index 2b3b10d..f035a35 100644 --- a/public/js/config.js +++ b/public/js/config.js @@ -1,6 +1,5 @@ const ws = localStorage.getItem('obj_ws') const server_api = localStorage.getItem('obj_server') -const supervisor_api = localStorage.getItem('supervisor_api') ? localStorage.getItem('supervisor_api') : localStorage.getItem('obj_server') let mediaRecorder const icontypes = ['csv', 'doc', 'pdf', 'txt', 'xls', 'zip', 'ppt'] const path = 'public' \ No newline at end of file diff --git a/public/js/requests.js b/public/js/requests.js index 23d87fa..6a19fca 100644 --- a/public/js/requests.js +++ b/public/js/requests.js @@ -203,22 +203,10 @@ const statusAgente = (empresa, matricula) => new Promise((resolve) => { resolve(res) }, error: function(res) { - console.log(res) alertModal( `

RECONECTANDO, AGUARDE  

`, '[ POR FAVOR AGUARDE ]' ) - console.log('statusAgente: ' + res.responseText) - } - }); -}) - -const atualizaAgente = () => new Promise((resolve) => { - $.ajax({ - url: `${supervisor_api}/index.php?idProg=14&idSubProg=3&ajax=1&acao=atualiza`, - type: "GET", - success: function(res){ - resolve(res) } }); }) From ce9498642ca785e0ceb9bf9a03c5028f6656ddb1 Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Fri, 26 Aug 2022 14:27:32 -0400 Subject: [PATCH 06/37] new configs --- public/js/requests.js | 4 ++-- public/js/util.js | 15 +++++++-------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/public/js/requests.js b/public/js/requests.js index 6a19fca..a5d2a51 100644 --- a/public/js/requests.js +++ b/public/js/requests.js @@ -122,7 +122,7 @@ const sairPausa = (matricula) => new Promise((resolve) => { const entrar = (matricula, queue, empresa) => new Promise((resolve) => { $.ajax({ - url: `${server_api}/auth/entrar-supervisor`, + url: `${server_api}/auth/conectar-chat`, type: "POST", data: JSON.stringify({ id_fila: queue, @@ -140,7 +140,7 @@ const entrar = (matricula, queue, empresa) => new Promise((resolve) => { const sair = (matricula) => { $.ajax({ - url: `${server_api}/auth/sair`, + url: `${server_api}/auth/desconectar-chat`, type: "POST", data: JSON.stringify({ matricula diff --git a/public/js/util.js b/public/js/util.js index 20a95ed..bad884a 100644 --- a/public/js/util.js +++ b/public/js/util.js @@ -1,4 +1,4 @@ -/** ROLAGEM DO SCROLL ATÉ NO FINAL DO CHAT */ +/** ROLAGEM DO SCROLL AT� NO FINAL DO CHAT */ const scrollDown = () => { $(".chat-window").animate({scrollTop: 99999 * $(this).height() }, 1); } @@ -64,7 +64,7 @@ const alertModal = (title, message) => { } /** - * HABILITA O ENVIO DE ARQUIVO DE IMAGENS E APRESENTA UMA MODAL PARA APRESENTAÇÃO DA IMAGEM SELECIONADA + * HABILITA O ENVIO DE ARQUIVO DE IMAGENS E APRESENTA UMA MODAL PARA APRESENTA��O DA IMAGEM SELECIONADA */ const startSendImage = () => { modalStart() @@ -87,7 +87,7 @@ const startSendImage = () => { } /** - * HABILITA O ENVIO DE ARQUIVO DE IMAGENS E APRESENTA UMA MODAL PARA APRESENTAÇÃO DA IMAGEM SELECIONADA + * HABILITA O ENVIO DE ARQUIVO DE IMAGENS E APRESENTA UMA MODAL PARA APRESENTA��O DA IMAGEM SELECIONADA */ const openImgModal = (link) => { modalStart() @@ -193,7 +193,7 @@ const startTransfer = () => { return `` } $('#transfersend').hide() - return `

Nenhum agente disponível no momento!

` + return `

Nenhum agente disponível no momento!

` }); }) @@ -221,7 +221,6 @@ const exitSystem = () => { }) } - const startFinalizar = () => { $("#finalizaratendimento").on('click', function(){ if(confirm('Deseja realmente finalizar o atendimento?')){ @@ -231,7 +230,7 @@ const startFinalizar = () => { } /** - * FUNÇÃO PARA RECUPERAR O AUDIO DO MICROFONE + * FUNCAO PARA RECUPERAR O AUDIO DO MICROFONE */ function recorderVoice () { $('#modalselect').show() @@ -451,7 +450,7 @@ const notifications = (obj = {}) => { if(el.uniqueid == obj.uniqueid){ /** MARCA ATENDIMENTO COMO FINALIZADO */ obj.action == "finish" ? el.status = 0 : null - /** REMOVE OS BOTÕES E CAIXA DE TEXTO DEPOIS DA FINALIZACAO */ + /** REMOVE OS BOT�ES E CAIXA DE TEXTO DEPOIS DA FINALIZACAO */ if(el.uniqueid == localStorage.getItem('session_uniqueid')){ hideButtons(true) } @@ -510,7 +509,7 @@ const supervisorAgente = () => { /** MONITORA AS CONFIGURACOES */ setInterval(() => { statusAgente(localStorage.getItem('my_uniqueid')).then((agente) => { - if (agente.status == 'error' && agente.message == 'Agente não encontrado') { + if (agente.status == 'error' && agente.message == 'Agente não encontrado') { window.close() } }) From 72ba3f1655f45094ad8083ac5896eaca11685666 Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Fri, 26 Aug 2022 14:38:37 -0400 Subject: [PATCH 07/37] teste --- public/js/requests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/js/requests.js b/public/js/requests.js index a5d2a51..dc28182 100644 --- a/public/js/requests.js +++ b/public/js/requests.js @@ -199,7 +199,7 @@ const statusAgente = (empresa, matricula) => new Promise((resolve) => { }, success: function(res) { localStorage.removeItem('obj_status') - localStorage.setItem('obj_status', JSON.stringify(res)) + localStorage.setItem('obj_status', res) resolve(res) }, error: function(res) { From 44d3fb52ad7739a96dbb3fa3ba7c1444e45e168d Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Fri, 26 Aug 2022 14:41:30 -0400 Subject: [PATCH 08/37] teste --- public/js/requests.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/public/js/requests.js b/public/js/requests.js index dc28182..5aebfec 100644 --- a/public/js/requests.js +++ b/public/js/requests.js @@ -7,7 +7,7 @@ const enviarMensagem = (dataSend) => { //console.log(res) }, error: function (res) { - $('.chat-window').append(`
MENSAGEM NÃO FOI ENVIADA!
`) + $('.chat-window').append(`
MENSAGEM N�O FOI ENVIADA!
`) } }); } @@ -98,7 +98,7 @@ const entrarPausa = (id_pausa, matricula) => new Promise((resolve) => { } }, error: function (res) { - alert('Não foi possível atribuir a pausa no momento!') + alert('N�o foi poss�vel atribuir a pausa no momento!') } }); }) @@ -181,7 +181,7 @@ const finalizarAtendimento = (matricula, uniqueid) => new Promise((resolve) => { error: function (res) { alertModal( `

OPS... HOUVE UM PROBLEMA  

-

Não foi possível finalizar atendimento!

+

Não foi possível finalizar atendimento!

Error: ${res}

`, 'OPS!!!' ) @@ -199,7 +199,7 @@ const statusAgente = (empresa, matricula) => new Promise((resolve) => { }, success: function(res) { localStorage.removeItem('obj_status') - localStorage.setItem('obj_status', res) + localStorage.setItem('obj_status', JSON.stringify(res)) resolve(res) }, error: function(res) { @@ -232,7 +232,7 @@ const transferirAtendimento = (origem, destino, uniqueid) => new Promise((resolv error: function (res) { alertModal( `

OPS... HOUVE UM PROBLEMA  

-

Não foi possível carregar as infoemacoes do agente!

+

N�o foi poss�vel carregar as infoemacoes do agente!

Error: ${res}

`, 'OPS!!!' ) From 0f56c1622a023d802038d37e8d5ec11b3eaf36a1 Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Fri, 26 Aug 2022 15:04:57 -0400 Subject: [PATCH 09/37] teste --- index.php | 1 + public/js/requests.js | 6 +++--- public/js/util.js | 10 +++++----- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/index.php b/index.php index 85b0149..c110175 100644 --- a/index.php +++ b/index.php @@ -22,6 +22,7 @@ $json = json_decode($crypt->decrypt(str_replace(' ', '+', $geturl['t'])), true); if($geturl['t'] && $json ){ $json = json_decode($crypt->decrypt(str_replace(' ', '+', $geturl['t'])), true); $objs = [ + 'id_empresa' => $json['id_empresa'], 'obj_server' => $json['servidor'], 'my_uniqueid' => $json['matricula'], 'obj_queue' => $json['fila'], diff --git a/public/js/requests.js b/public/js/requests.js index 5aebfec..8baae30 100644 --- a/public/js/requests.js +++ b/public/js/requests.js @@ -98,7 +98,7 @@ const entrarPausa = (id_pausa, matricula) => new Promise((resolve) => { } }, error: function (res) { - alert('N�o foi poss�vel atribuir a pausa no momento!') + alert('Não foi possível atribuir a pausa no momento!') } }); }) @@ -195,7 +195,7 @@ const statusAgente = (empresa, matricula) => new Promise((resolve) => { type: "GET", data: { matricula, - empresa + id_empresa: empresa }, success: function(res) { localStorage.removeItem('obj_status') @@ -232,7 +232,7 @@ const transferirAtendimento = (origem, destino, uniqueid) => new Promise((resolv error: function (res) { alertModal( `

OPS... HOUVE UM PROBLEMA  

-

N�o foi poss�vel carregar as infoemacoes do agente!

+

Não foi possível carregar as infoemacoes do agente!

Error: ${res}

`, 'OPS!!!' ) diff --git a/public/js/util.js b/public/js/util.js index bad884a..6d7a52e 100644 --- a/public/js/util.js +++ b/public/js/util.js @@ -139,7 +139,7 @@ const startSendFile = () => { const startPause = () => { $("#btnsPause").on('click', '#entrePause', function(){ - listarPausasAgente(localStorage.getItem('my_uniqueid')).then((pausas) => { + listarPausasAgente(localStorage.getItem('id_empresa')).then((pausas) => { modalStart() $("#modalselect").show() $('.modal-content-body').append(() => { @@ -170,7 +170,7 @@ const startPause = () => { }) $('#footer-content-right').on('click', '#pausesend', () => { - entrarPausa($("#selectpause").val(), localStorage.getItem('my_uniqueid')).then(() => { + entrarPausa($("#selectpause").val(), localStorage.getItem('my_uniqueid'), localStorage.getItem('id_empresa')).then(() => { $('#modalselect').css({display: 'none'}) monitorPausaAgente() }) @@ -180,7 +180,7 @@ const startPause = () => { const startTransfer = () => { $("#tranferagent").on('click', function(){ modalStart() - listarAgentesDisponivel().then((agentes) => { + listarAgentesDisponivel(localStorage.getItem('id_empresa')).then((agentes) => { $('.modal-content-body').append(() => { let optAgent = null agentes.data.forEach(e => { @@ -476,7 +476,7 @@ const notifications = (obj = {}) => { } const monitorPausaAgente = () => { - statusAgente(localStorage.getItem('my_uniqueid')).then((agente) => { + statusAgente(localStorage.getItem('id_empresa'), localStorage.getItem('my_uniqueid')).then((agente) => { let statusagent = agente.data[0].status const status = [ @@ -508,7 +508,7 @@ const monitorPausaAgente = () => { const supervisorAgente = () => { /** MONITORA AS CONFIGURACOES */ setInterval(() => { - statusAgente(localStorage.getItem('my_uniqueid')).then((agente) => { + statusAgente(localStorage.getItem('id_empresa'),localStorage.getItem('my_uniqueid')).then((agente) => { if (agente.status == 'error' && agente.message == 'Agente não encontrado') { window.close() } From 7de0a6edb2d6491524539e29b4c713208613b21c Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Fri, 26 Aug 2022 15:15:28 -0400 Subject: [PATCH 10/37] teste --- public/js/util.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/js/util.js b/public/js/util.js index 6d7a52e..d0bfce5 100644 --- a/public/js/util.js +++ b/public/js/util.js @@ -496,11 +496,11 @@ const monitorPausaAgente = () => { } }) - $('#myuniqueid').text(localStorage.getItem('my_uniqueid')) + $('#myuniqueid').text(localStorage.getItem('my_uniqueid').split('@', 2)[1]) /** CONFIGURACAO NOME */ $('#nameagent').text(agente.data[0].nome) /** CONFIGURACAO FILA */ - $('#queueagente').text(agente.data[0].fila) + $('#queueagente').text(agente.data[0].fila.toUpperCase()) } }) } From 050e594cc2469735c45a55cf9c3c4cbc3b6f2c86 Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Fri, 26 Aug 2022 17:00:31 -0400 Subject: [PATCH 11/37] teste --- public/js/requests.js | 2 +- public/js/util.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/public/js/requests.js b/public/js/requests.js index 8baae30..bb281c7 100644 --- a/public/js/requests.js +++ b/public/js/requests.js @@ -7,7 +7,7 @@ const enviarMensagem = (dataSend) => { //console.log(res) }, error: function (res) { - $('.chat-window').append(`
MENSAGEM N�O FOI ENVIADA!
`) + $('.chat-window').append(`
MENSAGEM NÃO FOI ENVIADA!
`) } }); } diff --git a/public/js/util.js b/public/js/util.js index d0bfce5..1fabe06 100644 --- a/public/js/util.js +++ b/public/js/util.js @@ -450,7 +450,7 @@ const notifications = (obj = {}) => { if(el.uniqueid == obj.uniqueid){ /** MARCA ATENDIMENTO COMO FINALIZADO */ obj.action == "finish" ? el.status = 0 : null - /** REMOVE OS BOT�ES E CAIXA DE TEXTO DEPOIS DA FINALIZACAO */ + /** REMOVE OS BOTOES E CAIXA DE TEXTO DEPOIS DA FINALIZACAO */ if(el.uniqueid == localStorage.getItem('session_uniqueid')){ hideButtons(true) } @@ -464,7 +464,7 @@ const notifications = (obj = {}) => { chatList += buildNotification({ uniqueid: e.uniqueid, number: e.cliente_id, - media: e.context, + media: e.media, name: e.profile_name, datetime: e.data_reg, status: e.status, From 9a8c0c4497115dda6cffe4f11af62697c5fb387f Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Sat, 27 Aug 2022 09:05:41 -0400 Subject: [PATCH 12/37] teste --- public/js/main.js | 1 + 1 file changed, 1 insertion(+) diff --git a/public/js/main.js b/public/js/main.js index 6456f92..f71d906 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -336,6 +336,7 @@ const viewMessage = (ev) => { const receiveNotification = (data) => { let validate = null + console.log(data) switch(data.event?.type){ case "mensagem": if(data.event.mensagem.uniqueid != localStorage.getItem('session_uniqueid')){ From 1711d073e7c2eb299733fcb4c6d7acc52fd6c09a Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Sat, 27 Aug 2022 09:26:11 -0400 Subject: [PATCH 13/37] teste --- public/js/util.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/public/js/util.js b/public/js/util.js index 1fabe06..cc37449 100644 --- a/public/js/util.js +++ b/public/js/util.js @@ -460,6 +460,17 @@ const notifications = (obj = {}) => { } notification.data.sort((a, b) => b.status - a.status) + + console.log({ + uniqueid: e.uniqueid, + number: e.cliente_id, + media: e.media, + name: e.profile_name, + datetime: e.data_reg, + status: e.status, + protocolo: e.protocolo + }) + notification.data.forEach(e => { chatList += buildNotification({ uniqueid: e.uniqueid, From 94dcd78462b8af4c32069616faa2f7fe1a974076 Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Sat, 27 Aug 2022 09:31:22 -0400 Subject: [PATCH 14/37] teste --- public/js/util.js | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/public/js/util.js b/public/js/util.js index cc37449..b667446 100644 --- a/public/js/util.js +++ b/public/js/util.js @@ -386,6 +386,7 @@ const alertNotification = (uniqueid, type = 'add') => { $('#' + uniqueid.replace('.', `\\.`) + " .chat-right-bottom-right").empty() if(type != 'remove'){ listaMensagem(uniqueid).then(mensagens => { + console.log(mensagens) const countMsg = mensagens.data.filter(e => { if(e.event.mensagem.status != 'read'){ return true @@ -460,17 +461,6 @@ const notifications = (obj = {}) => { } notification.data.sort((a, b) => b.status - a.status) - - console.log({ - uniqueid: e.uniqueid, - number: e.cliente_id, - media: e.media, - name: e.profile_name, - datetime: e.data_reg, - status: e.status, - protocolo: e.protocolo - }) - notification.data.forEach(e => { chatList += buildNotification({ uniqueid: e.uniqueid, From e0bd8c7e3e8d41dc37b14928af8d9ff7f712185a Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Sat, 27 Aug 2022 09:38:30 -0400 Subject: [PATCH 15/37] teste --- public/js/util.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/js/util.js b/public/js/util.js index b667446..a3a046b 100644 --- a/public/js/util.js +++ b/public/js/util.js @@ -386,7 +386,7 @@ const alertNotification = (uniqueid, type = 'add') => { $('#' + uniqueid.replace('.', `\\.`) + " .chat-right-bottom-right").empty() if(type != 'remove'){ listaMensagem(uniqueid).then(mensagens => { - console.log(mensagens) + console.log(mensagens.data) const countMsg = mensagens.data.filter(e => { if(e.event.mensagem.status != 'read'){ return true From 08709c59effe1d69687fe57f21faecdf696511b4 Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Sat, 27 Aug 2022 09:52:56 -0400 Subject: [PATCH 16/37] teste --- public/js/util.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/js/util.js b/public/js/util.js index a3a046b..d754873 100644 --- a/public/js/util.js +++ b/public/js/util.js @@ -361,6 +361,8 @@ const buildNotification = (data = {}) => { return } + console.log(data) + const datesend = converdata(data.datetime) const status = data.status == 0 ? 'opacity-3' : '' return `
@@ -386,7 +388,6 @@ const alertNotification = (uniqueid, type = 'add') => { $('#' + uniqueid.replace('.', `\\.`) + " .chat-right-bottom-right").empty() if(type != 'remove'){ listaMensagem(uniqueid).then(mensagens => { - console.log(mensagens.data) const countMsg = mensagens.data.filter(e => { if(e.event.mensagem.status != 'read'){ return true From 6a59554d6adadec9dfeb9e53de706158417e375a Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Sat, 27 Aug 2022 11:13:15 -0400 Subject: [PATCH 17/37] test --- public/js/main.js | 2 +- public/js/util.js | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/public/js/main.js b/public/js/main.js index f71d906..b2be915 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -197,7 +197,7 @@ const selectNotification = (id) => { $('.chat-window').append(`
- + diff --git a/public/js/util.js b/public/js/util.js index d754873..e3e0e89 100644 --- a/public/js/util.js +++ b/public/js/util.js @@ -1,4 +1,4 @@ -/** ROLAGEM DO SCROLL AT� NO FINAL DO CHAT */ +/** ROLAGEM DO SCROLL ATE NO FINAL DO CHAT */ const scrollDown = () => { $(".chat-window").animate({scrollTop: 99999 * $(this).height() }, 1); } @@ -361,11 +361,9 @@ const buildNotification = (data = {}) => { return } - console.log(data) - const datesend = converdata(data.datetime) const status = data.status == 0 ? 'opacity-3' : '' - return `
+ let test = `
@@ -382,6 +380,10 @@ const buildNotification = (data = {}) => {
` + + console.log(test) + + return test } const alertNotification = (uniqueid, type = 'add') => { From 1890a141f3952cd765b3149865ed7aea6c3bc043 Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Sat, 27 Aug 2022 11:15:50 -0400 Subject: [PATCH 18/37] test --- public/js/util.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/public/js/util.js b/public/js/util.js index e3e0e89..e4e6505 100644 --- a/public/js/util.js +++ b/public/js/util.js @@ -363,7 +363,10 @@ const buildNotification = (data = {}) => { const datesend = converdata(data.datetime) const status = data.status == 0 ? 'opacity-3' : '' - let test = `
+ + console.log(data) + + return `
@@ -380,10 +383,6 @@ const buildNotification = (data = {}) => {
` - - console.log(test) - - return test } const alertNotification = (uniqueid, type = 'add') => { From 8e22ed64f53f7cfb4dc2ba8d41450c5b92bdef97 Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Sat, 27 Aug 2022 11:18:48 -0400 Subject: [PATCH 19/37] teste --- public/js/util.js | 1 + 1 file changed, 1 insertion(+) diff --git a/public/js/util.js b/public/js/util.js index e4e6505..e48435d 100644 --- a/public/js/util.js +++ b/public/js/util.js @@ -464,6 +464,7 @@ const notifications = (obj = {}) => { notification.data.sort((a, b) => b.status - a.status) notification.data.forEach(e => { + console.log(e) chatList += buildNotification({ uniqueid: e.uniqueid, number: e.cliente_id, From a5d8584b225bb83659bec66ed004361f9fa6d829 Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Sat, 27 Aug 2022 11:30:54 -0400 Subject: [PATCH 20/37] teste --- public/js/main.js | 2 +- public/js/requests.js | 2 +- public/js/util.js | 5 +---- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/public/js/main.js b/public/js/main.js index b2be915..36db98a 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -110,7 +110,7 @@ const selectNotification = (id) => { if(dataRequest.data.length > 0){ dataContact = dataRequest.data.filter(e => { - if(id.trim() == e.event?.mensagem.uniqueid){ + if(id.trim() == e.mensagem.uniqueid){ return true } }) diff --git a/public/js/requests.js b/public/js/requests.js index bb281c7..b1d4531 100644 --- a/public/js/requests.js +++ b/public/js/requests.js @@ -35,7 +35,7 @@ const listarAgentesDisponivel = (empresa) => new Promise((resolve) => { url: `${server_api}/supervisor`, type: "GET", data: { - id_empresa, + id_empresa: empresa, agente_livre: "true" }, success: function (res) { diff --git a/public/js/util.js b/public/js/util.js index e48435d..0a81766 100644 --- a/public/js/util.js +++ b/public/js/util.js @@ -364,8 +364,6 @@ const buildNotification = (data = {}) => { const datesend = converdata(data.datetime) const status = data.status == 0 ? 'opacity-3' : '' - console.log(data) - return `
@@ -390,7 +388,7 @@ const alertNotification = (uniqueid, type = 'add') => { if(type != 'remove'){ listaMensagem(uniqueid).then(mensagens => { const countMsg = mensagens.data.filter(e => { - if(e.event.mensagem.status != 'read'){ + if(e.status != 'read'){ return true } }) @@ -464,7 +462,6 @@ const notifications = (obj = {}) => { notification.data.sort((a, b) => b.status - a.status) notification.data.forEach(e => { - console.log(e) chatList += buildNotification({ uniqueid: e.uniqueid, number: e.cliente_id, From dc0cd38e3afeb2c39ec66c818645c35dd645fc4c Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Sat, 27 Aug 2022 11:48:21 -0400 Subject: [PATCH 21/37] test --- public/js/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/js/main.js b/public/js/main.js index 36db98a..b2be915 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -110,7 +110,7 @@ const selectNotification = (id) => { if(dataRequest.data.length > 0){ dataContact = dataRequest.data.filter(e => { - if(id.trim() == e.mensagem.uniqueid){ + if(id.trim() == e.event?.mensagem.uniqueid){ return true } }) From eaeb8ade78313aebec11080f227d9aa892a0ba34 Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Sat, 27 Aug 2022 11:55:56 -0400 Subject: [PATCH 22/37] test --- public/js/main.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/public/js/main.js b/public/js/main.js index b2be915..6faaa8d 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -139,6 +139,8 @@ const selectNotification = (id) => { $('.chat-window .events').remove() alertNotification(localStorage.getItem('session_uniqueid'),'remove') + console.log(dataContact) + dataContact.forEach(e => { const datesend = e.event?.mensagem.datetime ? converdata(new Date(e.event?.mensagem.datetime).getTime()) : 'algumas horas'; let typesend = localStorage.getItem('my_uniqueid') == e.event.contact.number ? 'sender': 'receiver' From 064d25bfdf228edbcfd37e8cc96fc5f69cb829f9 Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Mon, 29 Aug 2022 08:50:07 -0400 Subject: [PATCH 23/37] logs --- public/js/main.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/js/main.js b/public/js/main.js index 6faaa8d..65773cb 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -90,6 +90,9 @@ const selectNotification = (id) => { let protocolo const dataRequest = JSON.parse(localStorage.getItem('obj_contact')) + + console.log(dataRequest) + listarAtendimentoAgente(localStorage.getItem('my_uniqueid')) const allNotifications = JSON.parse(localStorage.getItem('obj_notification')) @@ -139,8 +142,6 @@ const selectNotification = (id) => { $('.chat-window .events').remove() alertNotification(localStorage.getItem('session_uniqueid'),'remove') - console.log(dataContact) - dataContact.forEach(e => { const datesend = e.event?.mensagem.datetime ? converdata(new Date(e.event?.mensagem.datetime).getTime()) : 'algumas horas'; let typesend = localStorage.getItem('my_uniqueid') == e.event.contact.number ? 'sender': 'receiver' @@ -338,7 +339,6 @@ const viewMessage = (ev) => { const receiveNotification = (data) => { let validate = null - console.log(data) switch(data.event?.type){ case "mensagem": if(data.event.mensagem.uniqueid != localStorage.getItem('session_uniqueid')){ From e7611e949fe616f034fd9bafe6b4ae1e0d5b5c73 Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Mon, 29 Aug 2022 09:06:34 -0400 Subject: [PATCH 24/37] teste --- public/js/main.js | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/public/js/main.js b/public/js/main.js index 65773cb..8ed0510 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -91,8 +91,6 @@ const selectNotification = (id) => { const dataRequest = JSON.parse(localStorage.getItem('obj_contact')) - console.log(dataRequest) - listarAtendimentoAgente(localStorage.getItem('my_uniqueid')) const allNotifications = JSON.parse(localStorage.getItem('obj_notification')) @@ -113,7 +111,7 @@ const selectNotification = (id) => { if(dataRequest.data.length > 0){ dataContact = dataRequest.data.filter(e => { - if(id.trim() == e.event?.mensagem.uniqueid){ + if(id.trim() == e.uniqueid){ return true } }) @@ -143,33 +141,33 @@ const selectNotification = (id) => { alertNotification(localStorage.getItem('session_uniqueid'),'remove') dataContact.forEach(e => { - const datesend = e.event?.mensagem.datetime ? converdata(new Date(e.event?.mensagem.datetime).getTime()) : 'algumas horas'; - let typesend = localStorage.getItem('my_uniqueid') == e.event.contact.number ? 'sender': 'receiver' + const datesend = e.msg_date ? converdata(new Date(e.msg_date).getTime()) : 'algumas horas'; + let typesend = localStorage.getItem('my_uniqueid') == e.dst ? 'sender': 'receiver' - if(e.event?.mensagem.type == 'text'){ + if(e.type == 'text'){ $('.chat-window').append(`
- ${e.event.mensagem.content} + ${e.content}
${datesend}
` ) } - if(e.event?.mensagem.type == 'finish' || e.event?.mensagem.type == 're_start'){ + if(e.type == 'finish' || e.type == 're_start'){ $('.chat-window').append(`
- ${e.event.mensagem.content} + ${e.content}
` ) } - if(e.event?.mensagem.type != 'text'){ + if(e.type != 'text'){ const sendobj = { - filename: e.event?.mensagem.file_name, - id_provedor: e.event?.mensagem.id_provedor, - type: e.event?.mensagem.type, - mimetype: e.event?.mensagem.mimetype, + filename: e.file_name, + id_provedor: e.id_provedor, + type: e.type, + mimetype: e.mimetype, from: typesend } messageTypeMedia(sendobj) From 44402bde65037e9c0ed5f8c4882e8568d1ddeff7 Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Mon, 29 Aug 2022 09:29:16 -0400 Subject: [PATCH 25/37] teste --- public/js/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/js/main.js b/public/js/main.js index 8ed0510..686d271 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -142,7 +142,7 @@ const selectNotification = (id) => { dataContact.forEach(e => { const datesend = e.msg_date ? converdata(new Date(e.msg_date).getTime()) : 'algumas horas'; - let typesend = localStorage.getItem('my_uniqueid') == e.dst ? 'sender': 'receiver' + let typesend = localStorage.getItem('my_uniqueid') == e.status ? 'sender': 'receiver' if(e.type == 'text'){ $('.chat-window').append(` From 8da1e9ff92f5f9cfd3ac89895373192a0c85e305 Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Mon, 29 Aug 2022 09:30:50 -0400 Subject: [PATCH 26/37] teste --- public/js/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/js/main.js b/public/js/main.js index 686d271..0a80f63 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -142,7 +142,7 @@ const selectNotification = (id) => { dataContact.forEach(e => { const datesend = e.msg_date ? converdata(new Date(e.msg_date).getTime()) : 'algumas horas'; - let typesend = localStorage.getItem('my_uniqueid') == e.status ? 'sender': 'receiver' + let typesend = localStorage.getItem('my_uniqueid') == e.src ? 'sender': 'receiver' if(e.type == 'text'){ $('.chat-window').append(` From 6b69a8b5e23db4a4793e5d51d151d0c99c84be15 Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Mon, 29 Aug 2022 09:42:43 -0400 Subject: [PATCH 27/37] teste --- public/js/util.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/public/js/util.js b/public/js/util.js index 0a81766..16ff07b 100644 --- a/public/js/util.js +++ b/public/js/util.js @@ -565,6 +565,8 @@ const connect = (wsserver) => { if(e.data != 'att'){ const data = JSON.parse(e?.data) + console.log(data) + if(localStorage.getItem('session_uniqueid') == null){ localStorage.setItem('session_uniqueid', data.event.mensagem.uniqueid) } From 13b623c021aadc5b6ef7d8937ec56547c4ad5359 Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Mon, 29 Aug 2022 10:09:51 -0400 Subject: [PATCH 28/37] teste --- public/js/util.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/public/js/util.js b/public/js/util.js index 16ff07b..67ed4d1 100644 --- a/public/js/util.js +++ b/public/js/util.js @@ -287,7 +287,8 @@ function recorderVoice () { * @returns */ const messageTypeMedia = (obj) => { - const fileDownload = server_api + "/integracao/media/link/" + obj.id_provedor + "/" + window.btoa(obj.mimetype) + console.log(obj) + const fileDownload = server_api + "/link/" + obj.id_provedor + "/" + window.btoa(obj.mimetype) if(obj.type == 'voice' || obj.type == 'audio'){ $('.chat-window').append(`
@@ -566,7 +567,7 @@ const connect = (wsserver) => { const data = JSON.parse(e?.data) console.log(data) - + if(localStorage.getItem('session_uniqueid') == null){ localStorage.setItem('session_uniqueid', data.event.mensagem.uniqueid) } From 8011c8489a6da5bc6c7105198fcbfec495116121 Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Mon, 29 Aug 2022 10:19:49 -0400 Subject: [PATCH 29/37] test --- public/js/main.js | 1 + public/js/util.js | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/public/js/main.js b/public/js/main.js index 0a80f63..ecd2c17 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -90,6 +90,7 @@ const selectNotification = (id) => { let protocolo const dataRequest = JSON.parse(localStorage.getItem('obj_contact')) + console.log(dataRequest) listarAtendimentoAgente(localStorage.getItem('my_uniqueid')) const allNotifications = JSON.parse(localStorage.getItem('obj_notification')) diff --git a/public/js/util.js b/public/js/util.js index 67ed4d1..52f5d83 100644 --- a/public/js/util.js +++ b/public/js/util.js @@ -287,7 +287,6 @@ function recorderVoice () { * @returns */ const messageTypeMedia = (obj) => { - console.log(obj) const fileDownload = server_api + "/link/" + obj.id_provedor + "/" + window.btoa(obj.mimetype) if(obj.type == 'voice' || obj.type == 'audio'){ $('.chat-window').append(` From 9a027f182bfbb93bd405932f0f565a8d153915b2 Mon Sep 17 00:00:00 2001 From: Simples IP Desenvolvimento Date: Mon, 29 Aug 2022 15:14:28 -0400 Subject: [PATCH 30/37] add config --- public/css/styles.css | 14 +++++++++----- public/images/icons/csv-file.png | Bin 0 -> 12605 bytes public/images/icons/doc-file.png | Bin 0 -> 9930 bytes public/images/icons/notfound-file.png | Bin 0 -> 12799 bytes public/images/icons/pdf-file.png | Bin 0 -> 8217 bytes public/images/icons/ppt-file.png | Bin 0 -> 8343 bytes public/images/icons/txt-file.png | Bin 0 -> 9495 bytes public/images/icons/xls-file.png | Bin 0 -> 11617 bytes public/images/icons/zip-file.png | Bin 0 -> 8533 bytes public/js/main.js | 1 - public/js/requests.js | 8 ++++---- 11 files changed, 13 insertions(+), 10 deletions(-) create mode 100644 public/images/icons/csv-file.png create mode 100644 public/images/icons/doc-file.png create mode 100644 public/images/icons/notfound-file.png create mode 100644 public/images/icons/pdf-file.png create mode 100644 public/images/icons/ppt-file.png create mode 100644 public/images/icons/txt-file.png create mode 100644 public/images/icons/xls-file.png create mode 100644 public/images/icons/zip-file.png diff --git a/public/css/styles.css b/public/css/styles.css index 9b18d61..6fd844a 100644 --- a/public/css/styles.css +++ b/public/css/styles.css @@ -50,11 +50,12 @@ a { --chat-hover-color: #f5f5f5; --chat-active-color: #ebebeb; --chat-window-beige: #fdfdfd; - --sender-message-green: #b8ffd5; + --sender-message-green: #20416A; --events-message: #f3f3f3; --type-message-bar: #f0f0f0; --backgroup-icons-upload: #E9E9E9; - --background-color-message-receive: #dbf2ff; + --background-color-message-receive: #E9E9E9; + --color-message-receive: #FFF; } /************ @@ -495,9 +496,9 @@ a { .sender, .receiver, .events { - border-radius: 0.5rem; - padding: 1.2rem 1rem; - margin-bottom: 0.3rem; + border-radius: 1rem; + padding: 1rem 1.5rem; + margin-bottom: 1rem; position: relative; } @@ -508,11 +509,14 @@ a { .sender { background: var(--sender-message-green); + color: var(--color-message-receive); align-self: flex-end; + border-bottom-right-radius: 0px; } .receiver { background: var(--background-color-message-receive); + border-bottom-left-radius: 0px; align-self: flex-start; } diff --git a/public/images/icons/csv-file.png b/public/images/icons/csv-file.png new file mode 100644 index 0000000000000000000000000000000000000000..d483883ab799021785a5432bb8c5d51187a320ad GIT binary patch literal 12605 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 literal 0 HcmV?d00001 diff --git a/public/images/icons/doc-file.png b/public/images/icons/doc-file.png new file mode 100644 index 0000000000000000000000000000000000000000..c10d2123eeae6629e471e8f278b92dcb54a68274 GIT binary patch literal 9930 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⁡Awl<` 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 literal 0 HcmV?d00001 diff --git a/public/images/icons/notfound-file.png b/public/images/icons/notfound-file.png new file mode 100644 index 0000000000000000000000000000000000000000..e07f515b684ab0c4395a9c6e2e4bba4205db9d14 GIT binary patch literal 12799 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 literal 0 HcmV?d00001 diff --git a/public/images/icons/txt-file.png b/public/images/icons/txt-file.png new file mode 100644 index 0000000000000000000000000000000000000000..91da413029c2afc6ee49d5e1a3f852257d4d0152 GIT binary patch literal 9495 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 JinQ$>{vWD-#T5Vm literal 0 HcmV?d00001 diff --git a/public/images/icons/xls-file.png b/public/images/icons/xls-file.png new file mode 100644 index 0000000000000000000000000000000000000000..e9528611358b38d770020b03abd9949baf5a7417 GIT binary patch literal 11617 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 { let protocolo const dataRequest = JSON.parse(localStorage.getItem('obj_contact')) - console.log(dataRequest) listarAtendimentoAgente(localStorage.getItem('my_uniqueid')) const allNotifications = JSON.parse(localStorage.getItem('obj_notification')) diff --git a/public/js/requests.js b/public/js/requests.js index b1d4531..b565ee9 100644 --- a/public/js/requests.js +++ b/public/js/requests.js @@ -30,12 +30,12 @@ const listaMensagem = (uniqueid) => new Promise((resolve) => { }) }) -const listarAgentesDisponivel = (empresa) => new Promise((resolve) => { +const listarAgentesDisponivel = (id_empresa) => new Promise((resolve) => { $.ajax({ url: `${server_api}/supervisor`, type: "GET", data: { - id_empresa: empresa, + id_empresa, agente_livre: "true" }, success: function (res) { @@ -65,12 +65,12 @@ const listarAtendimentoAgente = (matricula) => new Promise((resolve) => { }); }) -const listarPausasAgente = (empresa) => new Promise((resolve) => { +const listarPausasAgente = (id_empresa) => new Promise((resolve) => { $.ajax({ url: `${server_api}/pausas`, type: "GET", data: { - empresa + id_empresa }, success: function (res) { resolve(res) From d253b62b521c4675f0333190efaaf22614a6506b Mon Sep 17 00:00:00 2001 From: awade Date: Mon, 6 Mar 2023 20:24:35 +0000 Subject: [PATCH 31/37] ajustes de funcionalidades --- index copy.php | 73 ++++++++++++++++++++++++++++++++++++++ index.php | 82 ++++++++++++++++++++++++++++++++++--------- public/js/config.js | 5 +++ public/js/main.js | 13 ++++++- public/js/requests.js | 35 ++++++++++++------ public/js/util.js | 27 +++++++------- ws.php | 67 +++++++++++++++++++++++++++++++++++ 7 files changed, 260 insertions(+), 42 deletions(-) create mode 100644 index copy.php create mode 100644 ws.php diff --git a/index copy.php b/index copy.php new file mode 100644 index 0000000..8251e53 --- /dev/null +++ b/index copy.php @@ -0,0 +1,73 @@ + null, + 'my_uniqueid' => null, + 'obj_queue' => null, + 'obj_ws' => null, + 'supervisor_api' => null, + 'session_uniqueid' => null, + 'obj_notification' => null, + 'obj_contact' => null, + 'obj_status' => null, + 'session_window' => null +]; + +if ($geturl['t'] == 'gerar' && ($_SERVER['SERVER_NAME'] == 'localhost' || $geturl['password'] == 'S1MPL3S1P_CH4T')) { + foreach ($objs as $key => $val) { + $jsStartup[] = "localStorage.removeItem('{$key}')"; + } + $dados = true; +} + +if ($post) { + $objs['id_empresa'] = $post['empresa']; + $objs['obj_server'] = "http://{$post['servidor']}"; + $objs['my_uniqueid'] = $post['matricula']; + $objs['obj_queue'] = $post['fila']; + $objs['obj_ws'] = "ws://{$post['servidor']}:8080/wss"; + $objs['supervisor_api'] = "http://{$post['servidor']}"; + + foreach ($objs as $key => $val) { + $jsStartup[] = "localStorage.removeItem('{$key}')"; + if ($val) { + $jsStartup[] = sprintf("localStorage.setItem('{$key}', '%s')", $val); + } + } + $connected = true; +} + +?> + + + + + +
+

Informe o id da empresa:

+
+

Informe o Servidor:

+
+

Informe a Matricula:

+
+

Informe a fila:

+
+ +
+ + + + + + + \ No newline at end of file diff --git a/index.php b/index.php index c110175..2248148 100644 --- a/index.php +++ b/index.php @@ -7,37 +7,61 @@ use app\Provider\Crypt; $files = getconfig('app')['FILES']; $crypt = new Crypt('aes-256-cbc', getconfig('app')['PASSWORD']); $geturl = bootstrap(); +$post = is_postback(); $connected = false; -if($geturl['t'] == 'gerar' && ($_SERVER['SERVER_NAME'] == 'localhost' || $geturl['password'] == 'S1MPL3S1P_CH4T')){ - $expireToken = strtotime( '+1 days', time()); - $json_info = '{"servidor": "http://192.168.115.244:8081", "websocket": "ws://192.168.115.244:8081/wss", "matricula": "2424", "fila": "1", "expire": "'.$expireToken.'"}'; - echo $json_info; - echo "

"; - echo "Token: "; +if ($geturl['t'] == 'gerar' && $post['passwd'] == 'S1MPL3S1P_CH4T') { + $expireToken = strtotime("+{$post['expire']} days", time()); + $info = [ + "id_number" => $post['id_number'], + "id_empresa" => $post['id_empresa'], + "servidor" => $post['servidor'], + "websocket" => "ws://{$post['servidor']}:8080", + "matricula" => $post['matricula'], + "fila" => $post['fila'], + "expire" => $expireToken + ]; + $token = $crypt->encrypt(json_encode($info, true)); + echo "Token:

"; + echo "
Ir para"; exit; } -$json = json_decode($crypt->decrypt(str_replace(' ', '+', $geturl['t'])), true); -if($geturl['t'] && $json ){ +/** + id_empresa + id_number + my_uniqueid + obj_queue + obj_server + obj_ws + **/ + +if ($geturl['t']) { $json = json_decode($crypt->decrypt(str_replace(' ', '+', $geturl['t'])), true); $objs = [ +<<<<<<< HEAD 'id_empresa' => $json['id_empresa'], 'obj_server' => $json['servidor'], 'my_uniqueid' => $json['matricula'], 'obj_queue' => $json['fila'], +======= + 'id_number' => $json['id_number'], + 'id_empresa' => $json['id_empresa'], + 'obj_server' => $json['servidor'], + 'my_uniqueid' => $json['matricula'], + 'obj_queue' => $json['fila'], +>>>>>>> 1e181ff (ajustes de funcionalidades) 'obj_ws' => $json['websocket'], - 'supervisor_api' => $json['api'], - 'session_uniqueid' => null, - 'obj_notification' => null, - 'obj_contact' => null, - 'obj_status' => null, + 'session_uniqueid' => null, + 'obj_notification' => null, + 'obj_contact' => null, + 'obj_status' => null, 'session_window' => null ]; - foreach($objs as $key => $val){ + foreach ($objs as $key => $val) { $jsStartup[] = "localStorage.removeItem('{$key}')"; - if($val){ + if ($val) { $jsStartup[] = sprintf("localStorage.setItem('{$key}', '%s')", $val); } } @@ -47,8 +71,32 @@ if($geturl['t'] && $json ){ - + + - + + +
+

Informe o id da empresa:

+
+

Informe o id do numero:

+
+

Informe o Servidor:

+
+

Informe a Matricula:

+
+

Informe a fila:

+
+

Token expira dias:

+
+

Password To generate token:

+
+ + +
+ + + + \ No newline at end of file diff --git a/public/js/config.js b/public/js/config.js index f035a35..a796ed2 100644 --- a/public/js/config.js +++ b/public/js/config.js @@ -1,5 +1,10 @@ const ws = localStorage.getItem('obj_ws') +<<<<<<< HEAD const server_api = localStorage.getItem('obj_server') +======= +const server_api = `http://${localStorage.getItem('obj_server')}` +const supervisor_api = localStorage.getItem('supervisor_api') ? localStorage.getItem('supervisor_api') : localStorage.getItem('obj_server') +>>>>>>> 1e181ff (ajustes de funcionalidades) let mediaRecorder const icontypes = ['csv', 'doc', 'pdf', 'txt', 'xls', 'zip', 'ppt'] const path = 'public' \ No newline at end of file diff --git a/public/js/main.js b/public/js/main.js index 0a80f63..9cc6c80 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -90,9 +90,15 @@ const selectNotification = (id) => { let protocolo const dataRequest = JSON.parse(localStorage.getItem('obj_contact')) +<<<<<<< HEAD listarAtendimentoAgente(localStorage.getItem('my_uniqueid')) +======= + listarAtendimentoAgente(localStorage.getItem('id_empresa'), localStorage.getItem('my_uniqueid')) +>>>>>>> 1e181ff (ajustes de funcionalidades) const allNotifications = JSON.parse(localStorage.getItem('obj_notification')) + + console.log(allNotifications) hideButtons(false) allNotifications.data.forEach(e => { @@ -142,7 +148,11 @@ const selectNotification = (id) => { dataContact.forEach(e => { const datesend = e.msg_date ? converdata(new Date(e.msg_date).getTime()) : 'algumas horas'; +<<<<<<< HEAD let typesend = localStorage.getItem('my_uniqueid') == e.src ? 'sender': 'receiver' +======= + let typesend = localStorage.getItem('my_uniqueid') == e.dst ? 'receiver' : 'sender' +>>>>>>> 1e181ff (ajustes de funcionalidades) if(e.type == 'text'){ $('.chat-window').append(` @@ -288,6 +298,7 @@ const sendMessage = (obj = {}) => { /** * ATUALIZA AS MENSAGEM QUE SAO RECEBIDAS NA TELA DO ATENDIMENTO + * Os dados são transmitidos pelo evento de WS * @param {*} ev */ const viewMessage = (ev) => { @@ -349,7 +360,7 @@ const receiveNotification = (data) => { } /** VALIDA O NUMERO, VERIFICA SE O TEM ALGMA MSG INICIAL, SE JA TEVE UM NUMERO NA VERIFICACAO */ - listarAtendimentoAgente(localStorage.getItem('my_uniqueid')) + listarAtendimentoAgente(localStorage.getItem('id_empresa'), localStorage.getItem('my_uniqueid')) validate = JSON.parse(localStorage.getItem('obj_notification')) const vald = validate.data.filter((e) => { diff --git a/public/js/requests.js b/public/js/requests.js index b565ee9..3429d67 100644 --- a/public/js/requests.js +++ b/public/js/requests.js @@ -14,11 +14,14 @@ const enviarMensagem = (dataSend) => { const listaMensagem = (uniqueid) => new Promise((resolve) => { $.ajax({ - url: `${server_api}/messages`, + url: `${server_api}/messages/${uniqueid}`, type: "GET", +<<<<<<< HEAD data: { uniqueid }, +======= +>>>>>>> 1e181ff (ajustes de funcionalidades) success: function (res) { localStorage.removeItem('obj_contact') localStorage.setItem('obj_contact', JSON.stringify(res)) @@ -32,12 +35,15 @@ const listaMensagem = (uniqueid) => new Promise((resolve) => { const listarAgentesDisponivel = (id_empresa) => new Promise((resolve) => { $.ajax({ - url: `${server_api}/supervisor`, + url: `${server_api}/supervisor/agentes/status/${id_empresa}/livre`, type: "GET", +<<<<<<< HEAD data: { id_empresa, agente_livre: "true" }, +======= +>>>>>>> 1e181ff (ajustes de funcionalidades) success: function (res) { resolve(res) }, @@ -47,13 +53,16 @@ const listarAgentesDisponivel = (id_empresa) => new Promise((resolve) => { }); }) -const listarAtendimentoAgente = (matricula) => new Promise((resolve) => { +const listarAtendimentoAgente = (id_empresa, matricula) => new Promise((resolve) => { $.ajax({ - url: `${server_api}/atendimentos`, + url: `${server_api}/atendimentos/${id_empresa}/${matricula}`, type: "GET", +<<<<<<< HEAD data: { matricula }, +======= +>>>>>>> 1e181ff (ajustes de funcionalidades) success: function (res) { localStorage.removeItem('obj_notification') localStorage.setItem('obj_notification', JSON.stringify(res)) @@ -67,11 +76,14 @@ const listarAtendimentoAgente = (matricula) => new Promise((resolve) => { const listarPausasAgente = (id_empresa) => new Promise((resolve) => { $.ajax({ - url: `${server_api}/pausas`, + url: `${server_api}/pausas/${id_empresa}`, type: "GET", +<<<<<<< HEAD data: { id_empresa }, +======= +>>>>>>> 1e181ff (ajustes de funcionalidades) success: function (res) { resolve(res) }, @@ -120,14 +132,14 @@ const sairPausa = (matricula) => new Promise((resolve) => { }); }) -const entrar = (matricula, queue, empresa) => new Promise((resolve) => { +const entrar = (matricula, id_fila, id_number) => new Promise((resolve) => { $.ajax({ url: `${server_api}/auth/conectar-chat`, type: "POST", data: JSON.stringify({ - id_fila: queue, matricula, - id_empresa: empresa + id_fila, + "id_number_channel": id_number }), success: function (res) { resolve(res) @@ -189,14 +201,17 @@ const finalizarAtendimento = (matricula, uniqueid) => new Promise((resolve) => { }); }) -const statusAgente = (empresa, matricula) => new Promise((resolve) => { +const statusAgente = (id_empresa, matricula) => new Promise((resolve) => { $.ajax({ - url: `${server_api}/supervisor`, + url: `${server_api}/supervisor/agentes/${id_empresa}/${matricula}`, type: "GET", +<<<<<<< HEAD data: { matricula, id_empresa: empresa }, +======= +>>>>>>> 1e181ff (ajustes de funcionalidades) success: function(res) { localStorage.removeItem('obj_status') localStorage.setItem('obj_status', JSON.stringify(res)) diff --git a/public/js/util.js b/public/js/util.js index 52f5d83..819923a 100644 --- a/public/js/util.js +++ b/public/js/util.js @@ -1,4 +1,4 @@ -/** ROLAGEM DO SCROLL ATE NO FINAL DO CHAT */ +/** ROLAGEM DO SCROLL AT� NO FINAL DO CHAT */ const scrollDown = () => { $(".chat-window").animate({scrollTop: 99999 * $(this).height() }, 1); } @@ -64,7 +64,7 @@ const alertModal = (title, message) => { } /** - * HABILITA O ENVIO DE ARQUIVO DE IMAGENS E APRESENTA UMA MODAL PARA APRESENTA��O DA IMAGEM SELECIONADA + * HABILITA O ENVIO DE ARQUIVO DE IMAGENS E APRESENTA UMA MODAL PARA APRESENTACAO DA IMAGEM SELECIONADA */ const startSendImage = () => { modalStart() @@ -87,7 +87,7 @@ const startSendImage = () => { } /** - * HABILITA O ENVIO DE ARQUIVO DE IMAGENS E APRESENTA UMA MODAL PARA APRESENTA��O DA IMAGEM SELECIONADA + * HABILITA O ENVIO DE ARQUIVO DE IMAGENS E APRESENTA UMA MODAL PARA APRESENTACAO DA IMAGEM SELECIONADA */ const openImgModal = (link) => { modalStart() @@ -170,7 +170,7 @@ const startPause = () => { }) $('#footer-content-right').on('click', '#pausesend', () => { - entrarPausa($("#selectpause").val(), localStorage.getItem('my_uniqueid'), localStorage.getItem('id_empresa')).then(() => { + entrarPausa($("#selectpause").val(), localStorage.getItem('my_uniqueid')).then(() => { $('#modalselect').css({display: 'none'}) monitorPausaAgente() }) @@ -221,6 +221,7 @@ const exitSystem = () => { }) } + const startFinalizar = () => { $("#finalizaratendimento").on('click', function(){ if(confirm('Deseja realmente finalizar o atendimento?')){ @@ -363,7 +364,6 @@ const buildNotification = (data = {}) => { const datesend = converdata(data.datetime) const status = data.status == 0 ? 'opacity-3' : '' - return `
@@ -434,7 +434,7 @@ const notifications = (obj = {}) => { /** STATUS DO AGENTE */ monitorPausaAgente() - listarAtendimentoAgente(localStorage.getItem('my_uniqueid')).then((notification) => { + listarAtendimentoAgente(localStorage.getItem('id_empresa'), localStorage.getItem('my_uniqueid')).then((notification) => { let chatList = '' $('#chats').empty() @@ -465,11 +465,12 @@ const notifications = (obj = {}) => { chatList += buildNotification({ uniqueid: e.uniqueid, number: e.cliente_id, - media: e.media, + media: e.context, name: e.profile_name, datetime: e.data_reg, status: e.status, - protocolo: e.protocolo + protocolo: e.protocolo, + media: e.media }) }) $('#chats').append(chatList) @@ -497,11 +498,11 @@ const monitorPausaAgente = () => { } }) - $('#myuniqueid').text(localStorage.getItem('my_uniqueid').split('@', 2)[1]) + $('#myuniqueid').text(localStorage.getItem('my_uniqueid')) /** CONFIGURACAO NOME */ $('#nameagent').text(agente.data[0].nome) /** CONFIGURACAO FILA */ - $('#queueagente').text(agente.data[0].fila.toUpperCase()) + $('#queueagente').text(agente.data[0].fila) } }) } @@ -509,7 +510,7 @@ const monitorPausaAgente = () => { const supervisorAgente = () => { /** MONITORA AS CONFIGURACOES */ setInterval(() => { - statusAgente(localStorage.getItem('id_empresa'),localStorage.getItem('my_uniqueid')).then((agente) => { + statusAgente(localStorage.getItem('my_uniqueid')).then((agente) => { if (agente.status == 'error' && agente.message == 'Agente não encontrado') { window.close() } @@ -562,11 +563,9 @@ const connect = (wsserver) => { ws.addEventListener("message", e => { /** att: atualizacao do websocket */ - if(e.data != 'att'){ + if(e.data != 'att'){ const data = JSON.parse(e?.data) - console.log(data) - if(localStorage.getItem('session_uniqueid') == null){ localStorage.setItem('session_uniqueid', data.event.mensagem.uniqueid) } diff --git a/ws.php b/ws.php new file mode 100644 index 0000000..0271d46 --- /dev/null +++ b/ws.php @@ -0,0 +1,67 @@ + + + + WebSocket client test + + + +

WebSocket Client Test

+
+ + + \ No newline at end of file From e29c650a67ed1e8905af912162a41fe9ff311444 Mon Sep 17 00:00:00 2001 From: awade Date: Fri, 10 Mar 2023 18:41:02 +0000 Subject: [PATCH 32/37] =?UTF-8?q?altera=C3=A7=C3=B5es=20nas=20request?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.php | 7 -- public/js/config.js | 4 - public/js/cronometro.js | 4 +- public/js/main.js | 162 ++++++++++++++++++++-------------------- public/js/requests.js | 77 ++++++++++--------- public/js/util.js | 26 ++++--- 6 files changed, 135 insertions(+), 145 deletions(-) diff --git a/index.php b/index.php index 2248148..6ab6bb6 100644 --- a/index.php +++ b/index.php @@ -39,18 +39,11 @@ if ($geturl['t'] == 'gerar' && $post['passwd'] == 'S1MPL3S1P_CH4T') { if ($geturl['t']) { $json = json_decode($crypt->decrypt(str_replace(' ', '+', $geturl['t'])), true); $objs = [ -<<<<<<< HEAD - 'id_empresa' => $json['id_empresa'], - 'obj_server' => $json['servidor'], - 'my_uniqueid' => $json['matricula'], - 'obj_queue' => $json['fila'], -======= 'id_number' => $json['id_number'], 'id_empresa' => $json['id_empresa'], 'obj_server' => $json['servidor'], 'my_uniqueid' => $json['matricula'], 'obj_queue' => $json['fila'], ->>>>>>> 1e181ff (ajustes de funcionalidades) 'obj_ws' => $json['websocket'], 'session_uniqueid' => null, 'obj_notification' => null, diff --git a/public/js/config.js b/public/js/config.js index a796ed2..bec3801 100644 --- a/public/js/config.js +++ b/public/js/config.js @@ -1,10 +1,6 @@ const ws = localStorage.getItem('obj_ws') -<<<<<<< HEAD -const server_api = localStorage.getItem('obj_server') -======= const server_api = `http://${localStorage.getItem('obj_server')}` const supervisor_api = localStorage.getItem('supervisor_api') ? localStorage.getItem('supervisor_api') : localStorage.getItem('obj_server') ->>>>>>> 1e181ff (ajustes de funcionalidades) let mediaRecorder const icontypes = ['csv', 'doc', 'pdf', 'txt', 'xls', 'zip', 'ppt'] const path = 'public' \ No newline at end of file diff --git a/public/js/cronometro.js b/public/js/cronometro.js index 3b6643b..0031808 100644 --- a/public/js/cronometro.js +++ b/public/js/cronometro.js @@ -47,8 +47,8 @@ function converdata(timestamp, horario_server = false){ } let date = new Date(timestamp); - let day = addZero(date.getDay()) - let month = addZero(date.getMonth()) + let day = addZero(date.getDate()) + let month = addZero(date.getMonth() + 1) let hours = date.getHours(); let minutes = date.getMinutes(); let formattedTime = `${day}/${month} ` + addZero(hours) + ':' + addZero(minutes) diff --git a/public/js/main.js b/public/js/main.js index 9cc6c80..1445ab6 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -1,7 +1,7 @@ /** * EVENTOS GERADOS PELO USUARIO DA APLICACAO */ -$(function(){ +$(function () { connect(ws) notifications() /** @@ -18,7 +18,7 @@ $(function(){ /** FIM VOICE RECORDER */ /** EVENTOS DE CLICK NO BODY */ - $("body").mouseup(function(){ + $("body").mouseup(function () { $('#uploadfiles').fadeOut('slow') }); @@ -34,33 +34,33 @@ $(function(){ startChannelMessage() /** INICIA O CHAT NO FINAL DA CONVERSA */ - $('.chats').on('click', function(){ + $('.chats').on('click', function () { scrollDown() }) - + /** ENVIA AS MSG PELO ENTER */ - $('#fieldsendmessage').bind('keyup', function(ev){ - if(ev.keyCode == 13 && $(this).val().trim().length > 0){ + $('#fieldsendmessage').bind('keyup', function (ev) { + if (ev.keyCode == 13 && $(this).val().trim().length > 0) { sendMessage() } }) $('#fieldsendmessage').on('keyup', () => { - if($(this).val().trim().length == 0){ + if ($(this).val().trim().length == 0) { $(this).val('') } resizeSendMsg() }) - $('.type-message-bar-right').on('click',() => { + $('.type-message-bar-right').on('click', () => { sendMessage() }) - $('#imgclip').on('click', function(){ + $('#imgclip').on('click', function () { modalStart() $("#uploadimage").val('') $('#uploadfile').val('') - if($('#uploadfiles').is(':hidden')){ + if ($('#uploadfiles').is(':hidden')) { $('#uploadfiles').fadeIn('slow') } else { $('#uploadfiles').fadeOut('slow') @@ -69,10 +69,10 @@ $(function(){ $('#footer-content-right').on('click', '#footersend', () => { sendMedia(mediaRecorder) - $('#modalselect').css({display: 'none'}) + $('#modalselect').css({ display: 'none' }) }) supervisorAgente() - + }) /** @@ -82,7 +82,7 @@ $(function(){ const selectNotification = (id) => { marcarMensagemVista(id) - listaMensagem(id).then(() => { + listaMensagem(id).then(async () => { let uniqueid let number let name @@ -90,41 +90,35 @@ const selectNotification = (id) => { let protocolo const dataRequest = JSON.parse(localStorage.getItem('obj_contact')) -<<<<<<< HEAD - - listarAtendimentoAgente(localStorage.getItem('my_uniqueid')) -======= listarAtendimentoAgente(localStorage.getItem('id_empresa'), localStorage.getItem('my_uniqueid')) ->>>>>>> 1e181ff (ajustes de funcionalidades) const allNotifications = JSON.parse(localStorage.getItem('obj_notification')) + const atendimentos = await buscarAtendimento(id); - console.log(allNotifications) - hideButtons(false) allNotifications.data.forEach(e => { $('#' + e.uniqueid.replace('.', `\\.`)).removeClass('select-notification') - if(e.uniqueid == id && e.status == 0){ + if (e.uniqueid == id && e.status == 0) { hideButtons(true) } }) $('#' + id.replace('.', `\\.`)).addClass('select-notification') allNotifications.data.forEach(e => { - if(e.uniqueid == id && e.status == 0){ + if (e.uniqueid == id && e.status == 0) { hideButtons(true) } }) - if(dataRequest.data.length > 0){ + if (dataRequest.data.length > 0) { dataContact = dataRequest.data.filter(e => { - if(id.trim() == e.uniqueid){ + if (id.trim() == e.uniqueid) { return true } }) } allNotifications.data.forEach(e => { - if(id === e.uniqueid){ + if (id === e.uniqueid) { uniqueid = e.uniqueid name = e.nome number = e.cliente_id @@ -136,25 +130,21 @@ const selectNotification = (id) => { localStorage.removeItem('session_uniqueid') localStorage.setItem('session_uniqueid', uniqueid) localStorage.setItem('session_window', number) - + $('.chat-window-contact-name').text(name) $('.chat-window-contact-status').text('Protocolo: ' + protocolo) - + /** REMOVE AS MSG NA E CONSTRIO A TELA NOVAMENTE (EVITAR DUPLICAR) */ $('.chat-window .sender').remove() $('.chat-window .receiver').remove() $('.chat-window .events').remove() - alertNotification(localStorage.getItem('session_uniqueid'),'remove') + alertNotification(localStorage.getItem('session_uniqueid'), 'remove') - dataContact.forEach(e => { + dataContact.forEach((e) => { const datesend = e.msg_date ? converdata(new Date(e.msg_date).getTime()) : 'algumas horas'; -<<<<<<< HEAD - let typesend = localStorage.getItem('my_uniqueid') == e.src ? 'sender': 'receiver' -======= - let typesend = localStorage.getItem('my_uniqueid') == e.dst ? 'receiver' : 'sender' ->>>>>>> 1e181ff (ajustes de funcionalidades) + let typesend = atendimentos.data[0].cliente_id == e.dst ? 'sender' : 'receiver' - if(e.type == 'text'){ + if (e.type == 'text') { $('.chat-window').append(`
${e.content} @@ -164,7 +154,14 @@ const selectNotification = (id) => { ) } - if(e.type == 'finish' || e.type == 're_start'){ + if (e.type == 'transfer') { + $('.chat-window').append(` +
+ ${e.content} por ${e.profile_name}, ${datesend}. +
`) + } + + if (e.type == 'finish' || e.type == 're_start') { $('.chat-window').append(`
${e.content} @@ -172,39 +169,37 @@ const selectNotification = (id) => { ) } - if(e.type != 'text'){ + if (e.type != 'text') { const sendobj = { filename: e.file_name, - id_provedor: e.id_provedor, - type: e.type, - mimetype: e.mimetype, + id_provedor: e.id_provedor, + type: e.type, + mimetype: e.mimetype, from: typesend } messageTypeMedia(sendobj) } - - if(e.de == localStorage.getItem('my_uniqueid')){ + + if (e.de == localStorage.getItem('my_uniqueid')) { const datereceived = e.datetime ? converdata(e.datetime) : 'algumas horas'; - if(e.type == 'text'){ + if (e.type == 'text') { $('.chat-window').append(`
${e.msg}
${datereceived}
`) - } else if (e.type == 'audio' || e.type == 'voice'){ - const audio = `` + } else if (e.type == 'audio' || e.type == 'voice') { + const audio = `` $('.chat-window').append(`
${audio}
${datereceived}
`) - } else if (e.type == 'document'){ + } else if (e.type == 'document') { icontypes.forEach(l => { - if(e.filename.indexOf(l) >= 0){ + if (e.filename.indexOf(l) >= 0) { $('.chat-window').append(`
@@ -216,9 +211,9 @@ const selectNotification = (id) => {
${datereceived}
`) - } + } }) - } else if (e.type == 'image'){ + } else if (e.type == 'image') { const fileimg = `data:${e.mimetype};base64,` + e.msg $('.chat-window').append(`
@@ -252,7 +247,7 @@ const sendMessage = (obj = {}) => { let mimetype = obj.mimetype ? obj.mimetype : 'text' let filename = obj.filename ? obj.filename : Date.now() - if(!sendContent){ + if (!sendContent) { return } @@ -277,12 +272,12 @@ const sendMessage = (obj = {}) => { } } - if(type != 'audio'){ + if (type != 'audio') { dataSend.event.mensagem.file_name = filename } enviarMensagem(dataSend) - + let msgContent = type == 'text' ? sendContent : obj.fileContent $('.chat-window').append(`
@@ -305,9 +300,9 @@ const viewMessage = (ev) => { const sessionOpen = localStorage.getItem('session_uniqueid') const datesend = ev.event?.mensagem.datetime ? converdata(ev.event?.mensagem.datetime, true) : 'algumas horas'; - if(ev.event?.mensagem.uniqueid == sessionOpen){ + if (ev.event?.mensagem.uniqueid == sessionOpen) { marcarMensagemVista(sessionOpen) - switch(ev.event?.mensagem.type){ + switch (ev.event?.mensagem.type) { case 'text': $('.chat-window').append(`
@@ -326,12 +321,12 @@ const viewMessage = (ev) => { } const mediaDownload = ["image", "voice", "document", "audio", "video", "sticker"] - if(mediaDownload.indexOf(ev.event?.mensagem.type) >= 0){ + if (mediaDownload.indexOf(ev.event?.mensagem.type) >= 0) { const sendobj = { filename: ev.event?.mensagem.file_name, - id_provedor: ev.event?.mensagem.id_provedor, - type: ev.event?.mensagem.type, - mimetype: ev.event?.mensagem.mimetype, + id_provedor: ev.event?.mensagem.id_provedor, + type: ev.event?.mensagem.type, + mimetype: ev.event?.mensagem.mimetype, from: 'receiver' } messageTypeMedia(sendobj) @@ -348,9 +343,9 @@ const viewMessage = (ev) => { const receiveNotification = (data) => { let validate = null - switch(data.event?.type){ + switch (data.event?.type) { case "mensagem": - if(data.event.mensagem.uniqueid != localStorage.getItem('session_uniqueid')){ + if (data.event.mensagem.uniqueid != localStorage.getItem('session_uniqueid')) { notifyMe(data.event.contact.name, { body: data.event.mensagem.content, icon: `images/${data.event.mensagem.media}.png`, @@ -358,27 +353,28 @@ const receiveNotification = (data) => { }) soundNotification(`${path}/sound/notification.mp3`) } - + /** VALIDA O NUMERO, VERIFICA SE O TEM ALGMA MSG INICIAL, SE JA TEVE UM NUMERO NA VERIFICACAO */ listarAtendimentoAgente(localStorage.getItem('id_empresa'), localStorage.getItem('my_uniqueid')) validate = JSON.parse(localStorage.getItem('obj_notification')) const vald = validate.data.filter((e) => { - return data.event?.mensagem.uniqueid == e.uniqueid + return data.event?.mensagem.uniqueid == e.uniqueid }) - if(data.event?.contact.number != localStorage.getItem('session_window')){ + if (data.event?.contact.number != localStorage.getItem('session_window')) { alertNotification(data.event.mensagem.uniqueid) - } + } if (data.event?.mensagem.uniqueid && data.event?.contact.number && vald.length == 0) { notifications( - { + { uniqueid: data.event?.mensagem.uniqueid, - cliente_id: data.event?.contact.number, - context: data.event?.mensagem.media, - profile_name: data.event?.contact.name, + cliente_id: data.event?.contact.number, + context: data.event?.mensagem.media, + profile_name: data.event?.contact.name, data_reg: data.event?.mensagem.datetime, + media: data.event?.mensagem.media, status: 1, action: 'mensagem', } @@ -387,7 +383,7 @@ const receiveNotification = (data) => { break case "actions": let obj - switch(data.event.mensagem.type){ + switch (data.event.mensagem.type) { case 'start': case 'transfer': case 'att_status': @@ -395,7 +391,7 @@ const receiveNotification = (data) => { break case 'finish': case 're_start': - obj = { + obj = { uniqueid: data.event?.mensagem.uniqueid, action: data.event.mensagem.type, } @@ -413,11 +409,11 @@ const receiveNotification = (data) => { */ const keepMensage = (ev) => { let msg = JSON.parse(localStorage.getItem('keep_msg')) - if(!msg){ + if (!msg) { msg = { data: [] } } - if(ev.event?.contact && ev.event?.mensagem.content){ + if (ev.event?.contact && ev.event?.mensagem.content) { msg.data.push(ev) localStorage.removeItem('keep_msg'); localStorage.setItem('keep_msg', JSON.stringify(msg)) @@ -427,37 +423,37 @@ const keepMensage = (ev) => { /** * FUNCAO PARA CAPTURAR O ARQUIVO A SER ENVIADO */ - const sendMedia = (media = null) => { +const sendMedia = (media = null) => { let rec let filename - if($("#footer-content-left audio").length){ - if(media.state == 'recording'){ + if ($("#footer-content-left audio").length) { + if (media.state == 'recording') { media.stop(); } let el = $("#footer-content-left audio")[0].src fileContent = $("#footer-content-left audio")[0].outerHTML sendMessage({ content: el.replace("data:", "").replace(/^.+,/, ""), type: 'audio', mimetype: 'audio/mpeg', fileContent }) return - } else if($("#uploadfile")[0].files[0]) { + } else if ($("#uploadfile")[0].files[0]) { let el = $("#uploadfile")[0].files[0] - rec = new Blob([el], { type : el.type }) + rec = new Blob([el], { type: el.type }) let filesent = $("#myImg") filesent[0].id = Date.now() - imgContent = filesent.css({'max-width': '60px'})[0].outerHTML + imgContent = filesent.css({ 'max-width': '60px' })[0].outerHTML fileContent = `${imgContent}` filename = el.name } else { rec = $("#uploadimage")[0].files[0] let filesent = $("#myImg") filesent[0].id = Date.now() - fileContent = filesent.css({'max-width': '350px'})[0].outerHTML + fileContent = filesent.css({ 'max-width': '350px' })[0].outerHTML $("#myImg").empty() } const file = new FileReader(); - file.onload = function() { + file.onload = function () { const typefile = rec.type.split("/")[0].indexOf('image') >= 0 ? rec.type.split("/")[0] : 'document' sendMessage({ content: file.result.replace("data:", "").replace(/^.+,/, ""), type: typefile, mimetype: rec.type, fileContent, filename }) } - file.readAsDataURL(rec); + file.readAsDataURL(rec); } \ No newline at end of file diff --git a/public/js/requests.js b/public/js/requests.js index 3429d67..9e7844d 100644 --- a/public/js/requests.js +++ b/public/js/requests.js @@ -16,12 +16,6 @@ const listaMensagem = (uniqueid) => new Promise((resolve) => { $.ajax({ url: `${server_api}/messages/${uniqueid}`, type: "GET", -<<<<<<< HEAD - data: { - uniqueid - }, -======= ->>>>>>> 1e181ff (ajustes de funcionalidades) success: function (res) { localStorage.removeItem('obj_contact') localStorage.setItem('obj_contact', JSON.stringify(res)) @@ -37,13 +31,6 @@ const listarAgentesDisponivel = (id_empresa) => new Promise((resolve) => { $.ajax({ url: `${server_api}/supervisor/agentes/status/${id_empresa}/livre`, type: "GET", -<<<<<<< HEAD - data: { - id_empresa, - agente_livre: "true" - }, -======= ->>>>>>> 1e181ff (ajustes de funcionalidades) success: function (res) { resolve(res) }, @@ -57,19 +44,13 @@ const listarAtendimentoAgente = (id_empresa, matricula) => new Promise((resolve) $.ajax({ url: `${server_api}/atendimentos/${id_empresa}/${matricula}`, type: "GET", -<<<<<<< HEAD - data: { - matricula - }, -======= ->>>>>>> 1e181ff (ajustes de funcionalidades) success: function (res) { localStorage.removeItem('obj_notification') localStorage.setItem('obj_notification', JSON.stringify(res)) resolve(res) }, error: function (res) { - + } }); }) @@ -78,12 +59,6 @@ const listarPausasAgente = (id_empresa) => new Promise((resolve) => { $.ajax({ url: `${server_api}/pausas/${id_empresa}`, type: "GET", -<<<<<<< HEAD - data: { - id_empresa - }, -======= ->>>>>>> 1e181ff (ajustes de funcionalidades) success: function (res) { resolve(res) }, @@ -205,19 +180,12 @@ const statusAgente = (id_empresa, matricula) => new Promise((resolve) => { $.ajax({ url: `${server_api}/supervisor/agentes/${id_empresa}/${matricula}`, type: "GET", -<<<<<<< HEAD - data: { - matricula, - id_empresa: empresa - }, -======= ->>>>>>> 1e181ff (ajustes de funcionalidades) - success: function(res) { + success: function (res) { localStorage.removeItem('obj_status') localStorage.setItem('obj_status', JSON.stringify(res)) resolve(res) }, - error: function(res) { + error: function (res) { alertModal( `

RECONECTANDO, AGUARDE  

`, '[ POR FAVOR AGUARDE ]' @@ -233,7 +201,7 @@ const transferirAtendimento = (origem, destino, uniqueid) => new Promise((resolv data: JSON.stringify({ matricula_origem: origem, matricula_destino: destino, - uniqueid + uniqueid }), success: function (res) { if (res.status == 'success') { @@ -246,9 +214,8 @@ const transferirAtendimento = (origem, destino, uniqueid) => new Promise((resolv }, error: function (res) { alertModal( - `

OPS... HOUVE UM PROBLEMA  

-

Não foi possível carregar as infoemacoes do agente!

-

Error: ${res}

`, + `

OPS... HOUVE UM PROBLEMA  

+

Não foi possível carregar as infomacçõs do agente!

`, 'OPS!!!' ) } @@ -270,3 +237,35 @@ const marcarMensagemVista = (uniqueid) => { } }); } + +const buscarAtendimento = async (uniqueid) => { + return $.ajax({ + url: `${server_api}/atendimentos/buscar`, + type: "POST", + data: JSON.stringify({ + uniqueid + }), + success: function (res) { + return res + }, + error: function (res) { + alert('Nao foi possivel carregar as informacoes do atendimento.') + } + }); +} + +const buscarUsuario = (matricula) => new Promise((resolve) =>{ + $.ajax({ + url: `${server_api}/usuario/buscar`, + type: "POST", + data: JSON.stringify({ + matricula + }), + success: function (res) { + resolve(res) + }, + error: function (res) { + alert('Nao foi possivel carregar as informacoes do usuario.') + } + }); +}) \ No newline at end of file diff --git a/public/js/util.js b/public/js/util.js index 819923a..75228eb 100644 --- a/public/js/util.js +++ b/public/js/util.js @@ -358,12 +358,13 @@ function recorderVoice () { * @returns */ const buildNotification = (data = {}) => { - if(data.length == 'undefined'){ + if(data.length == 'undefined' || (data.media == undefined && data.media == undefined) ){ return } const datesend = converdata(data.datetime) const status = data.status == 0 ? 'opacity-3' : '' + return `
@@ -460,8 +461,13 @@ const notifications = (obj = {}) => { } } - notification.data.sort((a, b) => b.status - a.status) - notification.data.forEach(e => { + + let chat = notification.data.filter(function (a) { + return !this[JSON.stringify(a.uniqueid)] && (this[JSON.stringify(a.uniqueid)] = true); + }, Object.create(null)) + + chat.sort((a, b) => b.status - a.status) + chat.forEach(e => { chatList += buildNotification({ uniqueid: e.uniqueid, number: e.cliente_id, @@ -479,11 +485,11 @@ const notifications = (obj = {}) => { const monitorPausaAgente = () => { statusAgente(localStorage.getItem('id_empresa'), localStorage.getItem('my_uniqueid')).then((agente) => { - let statusagent = agente.data[0].status + let statusagent = agente.data[0]?.status const status = [ { status: "LIVRE", class: "status-connect", html: `id="entrePause" src="${path}/images/pause.svg" title="Atribuir uma pausa"`, descricao: statusagent }, - { status: "PAUSA", class: "status-desconnect", html: `id="exitPause" src="${path}/images/play.svg" title="Remover a pausa"`, descricao: `${statusagent} - ${agente.data[0].motivo_pausa}` }, + { status: "PAUSA", class: "status-desconnect", html: `id="exitPause" src="${path}/images/play.svg" title="Remover a pausa"`, descricao: `${statusagent} - ${agente.data[0]?.motivo_pausa}` }, { status: "OCUPADO", class: "status-reconnect", html: `id="entrePause" src="${path}/images/pause.svg" title="Atribuir uma pausa"`, descricao: statusagent }, { status: "INDISPONIVEL", class: "status-reconnect", html: `id="exitPause" src="${path}/images/play.svg" title="Remover a pausa"`, descricao: statusagent }, ] @@ -515,7 +521,7 @@ const supervisorAgente = () => { window.close() } }) - }, 30000 ); + }, 30000); } /** CONNECT TO WS */ @@ -531,7 +537,7 @@ const connect = (wsserver) => { ws.onerror = function(err) { alertModal( - `

CONECTANDO NO SISTEMA! POR FAVOR AGUARDE.

`, + `

CONECTANDO NO SISTEMA! POR FAVOR AGUARDE.

`, `` ) $("#status_agent").addClass("status-desconnect").text('DESCONECTADO'); @@ -541,6 +547,7 @@ const connect = (wsserver) => { ws.onopen = function wsconnect() { $("#status_agent").addClass("status-reconnect").text('RECONECTANDO ...'); entrar(localStorage.getItem('my_uniqueid'), localStorage.getItem('obj_queue')).then((login) => { + console.log(login) if(login.status == 'success' || login.message.indexOf('autenticado') >= 0){ $('#modalselect').css({display: 'none'}) monitorPausaAgente() @@ -548,7 +555,7 @@ const connect = (wsserver) => { notifications() } else if(login.status == 'error'){ alertModal( - `

OPSS!! ${login.message}  

`, + `

OPSS!! ${login.message}  

`, `` ) $("#status_agent").addClass("status-desconnect").text('OFF'); @@ -559,9 +566,8 @@ const connect = (wsserver) => { }; ws.addEventListener("open", () => { - const storage = ['my_uniqueid', 'keep_msg', 'obj_contact', 'session_uniqueid', 'session_window'] - ws.addEventListener("message", e => { + /** att: atualizacao do websocket */ if(e.data != 'att'){ const data = JSON.parse(e?.data) From 935f370fcc6f5b887e94ec5fc168834c2801eb84 Mon Sep 17 00:00:00 2001 From: guilherme guia Date: Fri, 10 Mar 2023 18:51:05 +0000 Subject: [PATCH 33/37] alteracoes layout --- app/view/content.php | 42 +- app/view/header.php | 2 + index.php | 19 +- public/css/styles.css | 596 ++- public/css/teste | 68 + public/images/lua.png | Bin 0 -> 1007 bytes public/images/send-message.png | Bin 0 -> 635 bytes public/images/seta-para-baixo.png | Bin 0 -> 292 bytes public/images/settings.png | Bin 0 -> 665 bytes public/images/sol.png | Bin 0 -> 987 bytes public/index.html | 13 +- public/js/config.js | 20 +- public/js/main.js | 852 ++-- public/js/requests.js | 33 +- public/js/util.js | 1243 +++--- public/js/waveSurfer.js | 6095 +++++++++++++++++++++++++++++ 16 files changed, 7964 insertions(+), 1019 deletions(-) create mode 100644 public/css/teste create mode 100644 public/images/lua.png create mode 100644 public/images/send-message.png create mode 100644 public/images/seta-para-baixo.png create mode 100644 public/images/settings.png create mode 100644 public/images/sol.png create mode 100644 public/js/waveSurfer.js diff --git a/app/view/content.php b/app/view/content.php index 5787185..1729478 100644 --- a/app/view/content.php +++ b/app/view/content.php @@ -13,21 +13,42 @@
-
-
+
+ + +
+ +
+
+
+
+
+
WhatsApp
-
+
@@ -56,18 +77,18 @@
+
-
- - -
- + + +
+
@@ -90,6 +111,9 @@
+ + +