timesheet source code
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

106 lines
3.1KB

  1. <?php
  2. namespace Biukop;
  3. class UserJob{
  4. private $user;
  5. private $db;
  6. private $table_name;
  7. private $jobs;
  8. private $options;
  9. public function __construct($login){
  10. if ($login == null || $login == "")
  11. $this->user = wp_get_current_user();
  12. else{
  13. $this->user = get_user_by('login', $login);
  14. }
  15. global $wpdb;
  16. $this->db = $wpdb;
  17. $this->table_name = $wpdb->prefix . 'acare_ts';
  18. $this->jobs = $this->list_jobs("2019-07-01", "2019-07-14");
  19. }
  20. private function is_staff()
  21. {
  22. $roles = get_userdata($this->user->ID)->roles;
  23. return $roles == 'staff';
  24. }
  25. public function list_jobs($start, $finish){
  26. $response = array(
  27. 'status'=>'success',
  28. 'jobs' => [],
  29. 'staff_name'=>$this->user->display_name,
  30. 'job_count' => 0.
  31. );
  32. $sql = "SELECT * FROM $this->table_name WHERE start>='%s' and start <='%s' and staff='%s' order by start ASC";
  33. $query = $this->db->prepare ($sql, array($start, $finish, $this->user->user_login));
  34. $jobs = $this->db->get_results($query);
  35. $response['job_count'] = count($jobs);
  36. //$response['sql'] = $query;
  37. if ($this->db->last_error == ""){
  38. $response['status'] = 'success';
  39. foreach( $jobs as $s){
  40. $response['jobs'][] = array(
  41. 'id' => $s->id,
  42. 'tos' => $s->tos,
  43. 'start'=> $s->start,
  44. 'finish'=> $s->finish,
  45. 'rate'=> $s->rate,
  46. 'staff'=> $s->staff,
  47. 'client'=> $s->client,
  48. 'ack' => $s->ack,
  49. 'rating' =>$s->rating,
  50. //descriptions
  51. 'rate_str'=> $this->get_rate_str($s->rate),
  52. 'tos_str'=> $this->get_tos_str($s->tos),
  53. 'client_name' => $this->get_display_name($s->client),
  54. 'client_addr' => $this->get_client_addr($s->client),
  55. );
  56. }
  57. }else{
  58. $response['status'] = 'error';
  59. $response['err'] = $this->db->last_error;
  60. }
  61. return $response;
  62. }
  63. private function get_rate_str($earnings_rate_id)
  64. {
  65. if ($this->options == NULL){
  66. $this->options = get_option('bts_payitem_earnings_rate');
  67. }
  68. foreach($this->options as $o){
  69. if ($o['EarningsRateID'] == $earnings_rate_id)
  70. return $o['Name'];
  71. }
  72. return "";
  73. }
  74. private function get_tos_str($ndis_code)
  75. {
  76. if ($this->ndis == null){
  77. $this->ndis = new NdisPrice(2019);
  78. }
  79. return $this->ndis->get_tos_str($ndis_code);
  80. }
  81. private function get_client_addr($login)
  82. {
  83. $user = get_user_by('login', $login);
  84. return get_user_meta($user->ID, 'address', true);
  85. }
  86. private function get_display_name($login)
  87. {
  88. $user = get_user_by('login', $login);
  89. return $user->display_name;
  90. }
  91. }
  92. ?>