projects.php 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. <?php
  2. header("Access-Control-Allow-Origin: *");
  3. header("Content-Type: application/json; charset=UTF-8");
  4. header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");
  5. header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
  6. if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
  7. exit(0);
  8. }
  9. require_once __DIR__ . '/../config/database.php';
  10. require_once __DIR__ . '/../models/Project.php';
  11. require_once __DIR__ . '/../models/Subproject.php';
  12. $database = new Database();
  13. $db = $database->getConnection();
  14. $project = new Project($db);
  15. $subproject = new Subproject($db);
  16. $request_method = $_SERVER['REQUEST_METHOD'];
  17. switch($request_method) {
  18. case 'GET':
  19. if(isset($_GET['id'])) {
  20. $project->id = $_GET['id'];
  21. $project->readOne();
  22. if($project->project_name != null) {
  23. $project_arr = array(
  24. "id" => $project->id,
  25. "customer_id" => $project->customer_id,
  26. "project_name" => $project->project_name,
  27. "description" => $project->description,
  28. "status" => $project->status,
  29. "start_date" => $project->start_date,
  30. "end_date" => $project->end_date,
  31. "budget" => $project->budget,
  32. "created_at" => $project->created_at,
  33. "updated_at" => $project->updated_at,
  34. "customer_name" => $company_name ? $company_name : ($first_name . ' ' . $last_name),
  35. "status_badge" => $project->getStatusBadge(),
  36. "progress" => $project->getProgress()
  37. );
  38. http_response_code(200);
  39. echo json_encode($project_arr);
  40. } else {
  41. http_response_code(404);
  42. echo json_encode(array("message" => "Project not found."));
  43. }
  44. } elseif(isset($_GET['customer_id'])) {
  45. $stmt = $project->read();
  46. $num = $stmt->rowCount();
  47. if($num > 0) {
  48. $projects_arr = array();
  49. $projects_arr["records"] = array();
  50. while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
  51. extract($row);
  52. $project_item = array(
  53. "id" => $id,
  54. "customer_id" => $customer_id,
  55. "project_name" => $project_name,
  56. "description" => $description,
  57. "status" => $status,
  58. "start_date" => $start_date,
  59. "end_date" => $end_date,
  60. "budget" => $budget,
  61. "created_at" => $created_at,
  62. "updated_at" => $updated_at,
  63. "customer_name" => $company_name ? $company_name : ($first_name . ' ' . $last_name),
  64. "status_badge" => $project->getStatusBadge(),
  65. "progress" => $project->getProgress()
  66. );
  67. array_push($projects_arr["records"], $project_item);
  68. }
  69. http_response_code(200);
  70. echo json_encode($projects_arr);
  71. } else {
  72. http_response_code(200);
  73. echo json_encode(array("records" => array()));
  74. }
  75. } else {
  76. $stmt = $project->read();
  77. $num = $stmt->rowCount();
  78. if($num > 0) {
  79. $projects_arr = array();
  80. $projects_arr["records"] = array();
  81. while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
  82. extract($row);
  83. $project_item = array(
  84. "id" => $id,
  85. "customer_id" => $customer_id,
  86. "project_name" => $project_name,
  87. "description" => $description,
  88. "status" => $status,
  89. "start_date" => $start_date,
  90. "end_date" => $end_date,
  91. "budget" => $budget,
  92. "created_at" => $created_at,
  93. "updated_at" => $updated_at,
  94. "customer_name" => $company_name ? $company_name : ($first_name . ' ' . $last_name),
  95. "status_badge" => $project->getStatusBadge(),
  96. "progress" => $project->getProgress()
  97. );
  98. array_push($projects_arr["records"], $project_item);
  99. }
  100. http_response_code(200);
  101. echo json_encode($projects_arr);
  102. } else {
  103. http_response_code(200);
  104. echo json_encode(array("records" => array()));
  105. }
  106. }
  107. break;
  108. case 'POST':
  109. $data = json_decode(file_get_contents("php://input"));
  110. if(!empty($data->customer_id) && !empty($data->project_name)) {
  111. $project->customer_id = $data->customer_id;
  112. $project->project_name = $data->project_name;
  113. $project->description = $data->description ?? '';
  114. $project->status = $data->status ?? 'planning';
  115. $project->start_date = $data->start_date ?? null;
  116. $project->end_date = $data->end_date ?? null;
  117. $project->budget = $data->budget ?? null;
  118. if($project->create()) {
  119. http_response_code(201);
  120. echo json_encode(array("message" => "Project was created."));
  121. } else {
  122. http_response_code(503);
  123. echo json_encode(array("message" => "Unable to create project."));
  124. }
  125. } else {
  126. http_response_code(400);
  127. echo json_encode(array("message" => "Unable to create project. Customer ID and project name are required."));
  128. }
  129. break;
  130. case 'PUT':
  131. $data = json_decode(file_get_contents("php://input"));
  132. $project_id = isset($_GET['id']) ? $_GET['id'] : '';
  133. if(!empty($project_id) && !empty($data->customer_id) && !empty($data->project_name)) {
  134. $project->id = $project_id;
  135. $project->customer_id = $data->customer_id;
  136. $project->project_name = $data->project_name;
  137. $project->description = $data->description ?? '';
  138. $project->status = $data->status ?? 'planning';
  139. $project->start_date = $data->start_date ?? null;
  140. $project->end_date = $data->end_date ?? null;
  141. $project->budget = $data->budget ?? null;
  142. if($project->update()) {
  143. http_response_code(200);
  144. echo json_encode(array("message" => "Project was updated."));
  145. } else {
  146. http_response_code(503);
  147. echo json_encode(array("message" => "Unable to update project."));
  148. }
  149. } else {
  150. http_response_code(400);
  151. echo json_encode(array("message" => "Unable to update project. Data is incomplete."));
  152. }
  153. break;
  154. case 'DELETE':
  155. if(isset($_GET['id'])) {
  156. $project->id = $_GET['id'];
  157. if($project->delete()) {
  158. http_response_code(200);
  159. echo json_encode(array("message" => "Project was deleted."));
  160. } else {
  161. http_response_code(503);
  162. echo json_encode(array("message" => "Unable to delete project."));
  163. }
  164. } else {
  165. http_response_code(400);
  166. echo json_encode(array("message" => "Unable to delete project. ID is missing."));
  167. }
  168. break;
  169. default:
  170. http_response_code(405);
  171. echo json_encode(array("message" => "Method not allowed."));
  172. break;
  173. }
  174. ?>