db.php 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. <?php
  2. require('config.inc.php');
  3. $dbh = null;
  4. try
  5. {
  6. $dbh = new PDO('mysql:host=localhost;dbname=sdpickup', DB_USER, DB_PASS);
  7. $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  8. }
  9. catch(Exception $e)
  10. {
  11. error_log(print_r($e, true));
  12. http_response_code(500);
  13. echo "unable to connect to DB\n";
  14. die;
  15. }
  16. function getCompanies()
  17. {
  18. global $dbh;
  19. $stmt = $dbh->prepare(
  20. "SELECT id_company, name, ftp_directory, description
  21. FROM company");
  22. $stmt->execute();
  23. $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
  24. return $rows;
  25. }
  26. function getCompany($id_company)
  27. {
  28. global $dbh;
  29. $stmt = $dbh->prepare(
  30. "SELECT id_company, name, ftp_directory, description
  31. FROM company
  32. WHERE id_company = :id_company");
  33. $stmt->bindValue(':id_company', $id_company);
  34. $stmt->execute();
  35. $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
  36. return $rows;
  37. }
  38. function getCompanyDirectories()
  39. {
  40. global $dbh;
  41. $stmt = $dbh->prepare("SELECT id_company, name, ftp_directory FROM company");
  42. $stmt->execute();
  43. $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
  44. return $rows;
  45. }
  46. function getRowsByCompany($id_company, $week_number = null)
  47. {
  48. global $dbh;
  49. $sql = "SELECT
  50. id_file_row, row_number,
  51. division, consignee,
  52. DATE_FORMAT(date_called_in, '%m/%d/%Y') date_called_in,
  53. dispatch_number, shipper,
  54. DATE_FORMAT(date_ready, '%m/%d/%Y') date_ready,
  55. address_1, address_2, city, state, zip, phone,
  56. TIME_FORMAT(time_ready, '%h:%i %p') time_ready,
  57. TIME_FORMAT(time_close, '%h:%i %p') time_close,
  58. (SELECT DATE_FORMAT(IFNULL(time_pickup, file_row.time_pickup), '%m/%d/%Y %h:%i %p')
  59. FROM file_row_update
  60. WHERE id_file_row = file_row.id_file_row
  61. AND time_pickup IS NOT NULL
  62. ORDER BY date_modified DESC
  63. LIMIT 1) time_pickup,
  64. (SELECT DATE_FORMAT(IFNULL(time_pickup, file_row.time_pickup), '%m/%d/%Y')
  65. FROM file_row_update
  66. WHERE id_file_row = file_row.id_file_row
  67. AND time_pickup IS NOT NULL
  68. ORDER BY date_modified DESC
  69. LIMIT 1) time_pickup_date,
  70. (SELECT DATE_FORMAT(IFNULL(time_pickup, file_row.time_pickup), '%h:%i %p')
  71. FROM file_row_update
  72. WHERE id_file_row = file_row.id_file_row
  73. AND time_pickup IS NOT NULL
  74. ORDER BY date_modified DESC
  75. LIMIT 1) time_pickup_time,
  76. (SELECT DATE_FORMAT(IFNULL(time_depart, file_row.time_depart), '%m/%d/%Y %h:%i %p')
  77. FROM file_row_update
  78. WHERE id_file_row = file_row.id_file_row
  79. AND time_depart IS NOT NULL
  80. ORDER BY date_modified DESC
  81. LIMIT 1) time_depart,
  82. (SELECT DATE_FORMAT(IFNULL(time_depart, file_row.time_depart), '%m/%d/%Y')
  83. FROM file_row_update
  84. WHERE id_file_row = file_row.id_file_row
  85. AND time_depart IS NOT NULL
  86. ORDER BY date_modified DESC
  87. LIMIT 1) time_depart_date,
  88. (SELECT DATE_FORMAT(IFNULL(time_depart, file_row.time_depart), '%h:%i %p')
  89. FROM file_row_update
  90. WHERE id_file_row = file_row.id_file_row
  91. AND time_depart IS NOT NULL
  92. ORDER BY date_modified DESC
  93. LIMIT 1) time_depart_time,
  94. (SELECT DATE_FORMAT(IFNULL(bol_delivered, file_row.bol_delivered), '%m/%d/%Y %h:%i %p')
  95. FROM file_row_update
  96. WHERE id_file_row = file_row.id_file_row
  97. AND bol_delivered IS NOT NULL
  98. ORDER BY date_modified DESC
  99. LIMIT 1) bol_delivered,
  100. (SELECT DATE_FORMAT(IFNULL(bol_delivered, file_row.bol_delivered), '%m/%d/%Y')
  101. FROM file_row_update
  102. WHERE id_file_row = file_row.id_file_row
  103. AND bol_delivered IS NOT NULL
  104. ORDER BY date_modified DESC
  105. LIMIT 1) bol_delivered_date,
  106. (SELECT DATE_FORMAT(IFNULL(bol_delivered, file_row.bol_delivered), '%h:%i %p')
  107. FROM file_row_update
  108. WHERE id_file_row = file_row.id_file_row
  109. AND bol_delivered IS NOT NULL
  110. ORDER BY date_modified DESC
  111. LIMIT 1) bol_delivered_time,
  112. dispatch_reference,
  113. ctns, weight, cube,
  114. DATE_FORMAT(file_row.date_processed, '%m/%d/%Y') date_processed,
  115. driver.id_driver id_driver, trailer, date_canceled
  116. FROM file_row
  117. INNER JOIN file USING(id_file)
  118. LEFT OUTER JOIN driver USING(id_driver)
  119. WHERE id_company = :id_company
  120. " . ($week_number ?
  121. " AND
  122. (
  123. id_file_row IN
  124. (
  125. SELECT id_file_row
  126. FROM file_row_update
  127. WHERE WEEK(date_modified) = :week_number
  128. UNION
  129. SELECT id_file_row
  130. FROM file_row
  131. WHERE WEEK(date_processed) = :week_number
  132. )
  133. ) " : "") .
  134. "ORDER BY file_row.date_processed DESC
  135. LIMIT 5000";
  136. $stmt = $dbh->prepare($sql);
  137. if($week_number)
  138. $stmt->bindValue(':week_number', $week_number);
  139. $stmt->bindValue(':id_company', $id_company);
  140. $stmt->execute();
  141. $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
  142. return $rows;
  143. }
  144. function getRowUpdatesByCompany($id_company)
  145. {
  146. global $dbh;
  147. $stmt = $dbh->prepare(
  148. "SELECT DATE_FORMAT(fru.date_modified, '%m/%d/%Y %h:%i %p') date_modified,
  149. user.id_user id_user, user.name user_name, id_file_row,
  150. fr.dispatch_number dispatch_number,
  151. fr.dispatch_reference dispatch_reference,
  152. DATE_FORMAT(fru.time_pickup, '%m/%d/%Y %h:%i %p') time_pickup,
  153. DATE_FORMAT(fru.time_depart, '%m/%d/%Y %h:%i %p') time_depart,
  154. DATE_FORMAT(fru.bol_delivered, '%m/%d/%Y %h:%i %p') bol_delivered
  155. FROM file_row_update fru
  156. INNER JOIN file_row fr USING(id_file_row)
  157. INNER JOIN file USING(id_file)
  158. INNER JOIN user USING(id_user)
  159. WHERE file.id_company = :id_company
  160. ORDER BY date_created DESC
  161. LIMIT 200");
  162. $stmt->execute(array(':id_company' => $id_company));
  163. $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
  164. return $rows;
  165. }
  166. function getRowsByCompanyCSV($id_company, $f, $week_number = null)
  167. {
  168. $file_rows = getRowsByCompany($id_company, $week_number);
  169. $headers = array('Division', 'Consignee', 'Called In', 'Dispatch #', 'Shipper', 'Ready', 'Address 1', 'Address 2', 'City', 'ST', 'Zip', 'Phone',
  170. '', '', '', '',
  171. 'Acknowledgement', 'Pickup Date', 'Pickup Time', 'Depart Date', 'Depart Time', 'BOL Delivered Date', 'BOL Delivered Time',
  172. '', '', '', '', '', '', '', '', '', '', '', '',
  173. 'Dispatch Reference',
  174. '', '', '', '', '', '', '', '',
  175. 'Ctns', 'Weight', 'Cube');
  176. fputcsv($f, $headers);
  177. foreach($file_rows as $row)
  178. {
  179. fputcsv($f,
  180. array($row['division'], $row['consignee'], $row['date_called_in'], $row['dispatch_number'], $row['shipper'], $row['date_ready'], $row['address_1'], $row['address_2'], $row['city'], $row['state'], $row['zip'], $row['phone'],
  181. '', '', '', '',
  182. $row['date_processed'], $row['time_pickup_date'], $row['time_pickup_time'], $row['time_depart_date'], $row['time_depart_time'], $row['bol_delivered_date'], $row['bol_delivered_time'],
  183. '', '', '', '', '', '', '', '', '', '', '', '',
  184. $row['dispatch_reference'],
  185. '', '', '', '', '', '', '', '',
  186. $row['ctns'], $row['weight'], $row['cube']));
  187. }
  188. }
  189. function getDriversByCompany($id_company)
  190. {
  191. global $dbh;
  192. $stmt = $dbh->prepare(
  193. "SELECT id_driver, driver.name
  194. FROM driver_company
  195. INNER JOIN driver USING(id_driver)
  196. WHERE driver_company.id_company = :id_company
  197. ORDER BY name DESC
  198. LIMIT 500");
  199. $stmt->execute(array(':id_company' => $id_company));
  200. $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
  201. return $rows;
  202. }
  203. ?>