db.php 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  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, $year = null, $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. AND YEAR(date_modified) = :year
  129. UNION
  130. SELECT id_file_row
  131. FROM file_row
  132. WHERE WEEK(date_processed) = :week_number
  133. WHERE YEAR(date_processed) = :year
  134. )
  135. ) " : "") .
  136. "ORDER BY file_row.date_processed DESC
  137. LIMIT 5000";
  138. $stmt = $dbh->prepare($sql);
  139. if($week_number)
  140. {
  141. $stmt->bindValue(':week_number', $week_number);
  142. $stmt->bindValue(':year', $year);
  143. }
  144. $stmt->bindValue(':id_company', $id_company);
  145. $stmt->execute();
  146. $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
  147. return $rows;
  148. }
  149. function getRowUpdatesByCompany($id_company)
  150. {
  151. global $dbh;
  152. $stmt = $dbh->prepare(
  153. "SELECT DATE_FORMAT(fru.date_modified, '%m/%d/%Y %h:%i %p') date_modified,
  154. user.id_user id_user, user.name user_name, id_file_row,
  155. fr.dispatch_number dispatch_number,
  156. fr.dispatch_reference dispatch_reference,
  157. DATE_FORMAT(fru.time_pickup, '%m/%d/%Y %h:%i %p') time_pickup,
  158. DATE_FORMAT(fru.time_depart, '%m/%d/%Y %h:%i %p') time_depart,
  159. DATE_FORMAT(fru.bol_delivered, '%m/%d/%Y %h:%i %p') bol_delivered
  160. FROM file_row_update fru
  161. INNER JOIN file_row fr USING(id_file_row)
  162. INNER JOIN file USING(id_file)
  163. INNER JOIN user USING(id_user)
  164. WHERE file.id_company = :id_company
  165. ORDER BY date_created DESC
  166. LIMIT 200");
  167. $stmt->execute(array(':id_company' => $id_company));
  168. $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
  169. return $rows;
  170. }
  171. function getRowsByCompanyCSV($id_company, $f, $year, $week_number = null)
  172. {
  173. $file_rows = getRowsByCompany($id_company, $year, $week_number);
  174. $headers = array('Division', 'Consignee', 'Called In', 'Dispatch #', 'Shipper', 'Ready', 'Address 1', 'Address 2', 'City', 'ST', 'Zip', 'Phone',
  175. '', '', '', '',
  176. 'Acknowledgement', 'Pickup Date', 'Pickup Time', 'Depart Date', 'Depart Time', 'BOL Delivered Date', 'BOL Delivered Time',
  177. '', '', '', '', '', '', '', '', '', '', '', '',
  178. 'Dispatch Reference',
  179. '', '', '', '', '', '', '', '',
  180. 'Ctns', 'Weight', 'Cube');
  181. fputcsv($f, $headers);
  182. foreach($file_rows as $row)
  183. {
  184. fputcsv($f,
  185. 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'],
  186. '', '', '', '',
  187. $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'],
  188. '', '', '', '', '', '', '', '', '', '', '', '',
  189. $row['dispatch_reference'],
  190. '', '', '', '', '', '', '', '',
  191. $row['ctns'], $row['weight'], $row['cube']));
  192. }
  193. }
  194. function getDriversByCompany($id_company)
  195. {
  196. global $dbh;
  197. $stmt = $dbh->prepare(
  198. "SELECT id_driver, driver.name
  199. FROM driver_company
  200. INNER JOIN driver USING(id_driver)
  201. WHERE driver_company.id_company = :id_company
  202. ORDER BY name DESC
  203. LIMIT 500");
  204. $stmt->execute(array(':id_company' => $id_company));
  205. $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
  206. return $rows;
  207. }
  208. ?>