subprojects.php 7.7 KB

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