/includes/opclass.php

https://bitbucket.org/f0vela/phpchat · PHP · 210 lines · 124 code · 52 blank · 34 comment · 22 complexity · f6379fc45996defac758ba1be904ea15 MD5 · raw file

  1. <?php
  2. class OpClass
  3. {
  4. function saveData($data = array()){
  5. $link = mysql_connect(SQLSERVER.":".SQLPORT,SQLUSER,SQLPASSWORD);
  6. mysql_select_db(SQLDB,$link);
  7. $query = "UPDATE chat_admin SET name = '".$data['name']."', email = '".$data['email']."'";
  8. if($data['usertype'] != ''){ $query .= ", usertype = '". $data['usertype'] ."'"; }
  9. if($data['status'] != ''){ $query .= ", status = '". $data['status'] ."'"; }
  10. if($data['password'] != ''){
  11. $newpass = fCryptography::hashPassword($data['password']);
  12. $query .= ", password = '". $newpass ."'";
  13. }
  14. $query .= " WHERE userID = ". $data['userID'];
  15. $re = mysql_query($query);
  16. fSession::set('name',$data['name']);
  17. fSession::set('email',$data['email']);
  18. return $re;
  19. }
  20. function CreateOp($data = array())
  21. {
  22. $link = mysql_connect(SQLSERVER.":".SQLPORT,SQLUSER,SQLPASSWORD);
  23. mysql_select_db(SQLDB,$link);
  24. $newpass = fCryptography::hashPassword($data['password']);
  25. $query = "INSERT INTO chat_admin (name,email,usertype,status,password,aspID) VALUES ('".$data['name']."', '".$data['email']."','". $data['usertype'] ."','". $data['status'] ."','". $newpass ."','1')";
  26. $re = mysql_query($query);
  27. $ret = mysql_insert_id($link);
  28. return $ret;
  29. }
  30. function changeOpStatus($data)
  31. {
  32. $link = mysql_connect(SQLSERVER.":".SQLPORT,SQLUSER,SQLPASSWORD);
  33. mysql_select_db(SQLDB,$link);
  34. $query = "UPDATE chat_admin SET status = '".$data['status'] ."' ";
  35. $query .= " WHERE userID = ". $data['userID'];
  36. $re = mysql_query($query);
  37. }
  38. function getMyData($userID)
  39. {
  40. $link = mysql_connect(SQLSERVER.":".SQLPORT,SQLUSER,SQLPASSWORD);
  41. mysql_select_db(SQLDB,$link);
  42. $res = mysql_query("SELECT * FROM chat_admin WHERE userID = $userID");
  43. return $res;
  44. }
  45. function getRating($userID = 0)
  46. {
  47. $link = mysql_connect(SQLSERVER.":".SQLPORT,SQLUSER,SQLPASSWORD);
  48. mysql_select_db(SQLDB,$link);
  49. $qry = "SELECT ca.userID, IFNULL((SELECT SUM(rating) as rate FROM chat_adminrate WHERE userID = ca.userID),0) as sumatotal, (SELECT count(*) FROM chat_adminrate WHERE userID = ca.userID) as totalcalifica, IFNULL((SELECT SUM(rating) as rate FROM chat_adminrate WHERE userID = ca.userID)/(SELECT count(*) FROM chat_adminrate WHERE userID = ca.userID),0) as promedio FROM chat_admin ca ";
  50. if($userID != 0)
  51. {
  52. $qry .= "WHERE userID = $userID";
  53. }
  54. $qry .= " ORDER BY totalcalifica DESC, promedio DESC";
  55. $res = mysql_query($qry);
  56. return $res;
  57. }
  58. function getFreeOperator($deptID,$userID = 0)
  59. {
  60. /**
  61. * getFreeOperator
  62. *
  63. * Trae el ID del operador libre al momento de la solicitud de soporte
  64. * Para esto revisa:
  65. * * que operadores estan activos y esten asignados al departamento del que esta entrando la llamada
  66. *
  67. * -- quitado el 29 de septiembre por Frisley Velasquez
  68. * -- * que operadores no tienen llamada actual
  69. *
  70. * * que operadores no han rechazado la llamada actual
  71. * * selecciona aleatoriamente entre el listado filtrado
  72. */
  73. $link = mysql_connect(SQLSERVER.":".SQLPORT,SQLUSER,SQLPASSWORD);
  74. mysql_select_db(SQLDB,$link);
  75. $query = "SELECT (SELECT count(*) FROM chatrequests WHERE userID = ca.userID AND status = 0) as espera, (SELECT count(*) FROM chatrequests WHERE userID = ca.userID AND status = 1) as activas, ca.userID FROM chat_admin ca INNER JOIN chatuserdeptlist cud ON ca.userID = cud.userID WHERE ca.available_status = 1 AND ca.answercalls = 1 AND cud.deptID = $deptID ";
  76. // Solo agregar si se necesita que no entre a un usuario ya con llamadas
  77. //AND NOT cud.userID IN (SELECT distinct userID FROM chatrequests WHERE status = 1)
  78. if($userID != 0) { $query .= " AND cud.userID <> $userID "; }
  79. $query .= "ORDER BY espera ASC";
  80. //echo $query;
  81. $res = mysql_query($query);
  82. $uID = array();
  83. $i = 0;
  84. while($r = mysql_fetch_assoc($res))
  85. {
  86. $uID[$i] = $r['userID'];
  87. $i++;
  88. }
  89. $rand = fCryptography::random(0, ($i-1));
  90. $final = $uID[$rand];
  91. if($final == 0) $final = 0;
  92. if($final == '' && $userID <> 0) $final = $userID;
  93. return $final;
  94. }
  95. function isOperatorAvailable($sid)
  96. {
  97. $link = mysql_connect(SQLSERVER.":".SQLPORT,SQLUSER,SQLPASSWORD);
  98. mysql_select_db(SQLDB,$link);
  99. $res = mysql_query("SELECT ca.* FROM chat_admin ca INNER JOIN chatuserdeptlist cud ON ca.userID = cud.userID WHERE ca.available_status = 1 AND ca.answercalls = 1 AND cud.deptID IN (SELECT siteID from chatdepartments WHERE siteID = $sid)");
  100. $userID = array();
  101. $i = 0;
  102. while($r = mysql_fetch_assoc($res))
  103. {
  104. $i++;
  105. }
  106. if($i > 0){ $hayoperador = 1; }else{ $hayoperador = 0; }
  107. return $hayoperador;
  108. }
  109. function getMessages()
  110. {
  111. /**
  112. * getMessages
  113. *
  114. * Regresa un objeto MYSQL de los mensajes para los operadores.
  115. *
  116. */
  117. $link = mysql_connect(SQLSERVER.":".SQLPORT,SQLUSER,SQLPASSWORD);
  118. mysql_select_db(SQLDB,$link);
  119. $res = mysql_query("SELECT cs.name as siteName, cd.name as deptName, cm.* FROM chatmessages cm INNER JOIN chatsites cs ON cm.siteID = cs.siteID INNER JOIN chatdepartments cd ON cm.deptID = cd.deptID ORDER BY created DESC");
  120. return $res;
  121. }
  122. function getMyCalls($userID)
  123. {
  124. /**
  125. * getMyCalls
  126. *
  127. * Regresa un objeto MYSQL de las llamadas actuales del operador.
  128. *
  129. */
  130. $link = mysql_connect(SQLSERVER.":".SQLPORT,SQLUSER,SQLPASSWORD);
  131. mysql_select_db(SQLDB,$link);
  132. $res = mysql_query("SELECT cr.*, cd.name as deptName, cd.siteID FROM chatrequests cr INNER JOIN chatdepartments cd ON cr.deptID = cd.deptID WHERE userID = $userID AND cr.status in (0,1) ORDER BY created ASC");
  133. return $res;
  134. }
  135. function getMyHistoryCalls($userID = 0,$filtros = array())
  136. {
  137. /**
  138. * getMyHistoryCalls
  139. *
  140. * Regresa un objeto MYSQL de las llamadas historicas del operador.
  141. *
  142. */
  143. $link = mysql_connect(SQLSERVER.":".SQLPORT,SQLUSER,SQLPASSWORD);
  144. mysql_select_db(SQLDB,$link);
  145. $query = "SELECT cr.*, ca.name as operatorName, cd.name as deptName, cd.siteID FROM chatrequests cr INNER JOIN chatdepartments cd ON cr.deptID = cd.deptID LEFT OUTER JOIN chat_admin ca ON ca.userID = cr.userID WHERE cr.status = 2 ";
  146. if($userID != 0){ $query .= " AND ca.userID = $userID "; }
  147. if($filtros['cuenta'] != '') $query .= " AND cd.deptID = '".$filtros['cuenta']."'";
  148. if($filtros['fecha'] != ''){
  149. $date = explode('-',$filtros['fecha']);
  150. $query .= " AND cr.created BETWEEN '".$filtros['fecha']." 00:00:00' AND '".$filtros['fecha']." 23:59:59'";
  151. }
  152. $query .= " ORDER BY created DESC";
  153. $res['data'] = mysql_query($query);
  154. $res['rows'] = mysql_affected_rows($link);
  155. return $res;
  156. }
  157. }
  158. ?>