show($m[1]); } elseif ($method === 'PATCH' || $method === 'PUT') { (new AccountController($client))->updateItem($m[1]); } elseif ($method === 'DELETE') { (new AccountController($client))->destroy($m[1]); } else { Response::error('Method Not Allowed', 405); } exit; } if (preg_match('#^schedules/([A-Za-z0-9-]+)$#', $path, $m)) { (new ScheduleController($client))->handleItem($m[1]); exit; } if (preg_match('#^brands/([A-Za-z0-9-]+)$#', $path, $m)) { $method = $_SERVER['REQUEST_METHOD'] ?? 'GET'; if ($method === 'PATCH' || $method === 'PUT') { (new BrandController($client))->update($m[1]); } elseif ($method === 'DELETE') { (new BrandController($client))->destroy($m[1]); } else { Response::error('Method Not Allowed', 405); } exit; } if (preg_match('#^stores/([A-Za-z0-9-]+)$#', $path, $m)) { $method = $_SERVER['REQUEST_METHOD'] ?? 'GET'; if ($method === 'PATCH' || $method === 'PUT') { (new StoreController($client))->update($m[1]); } elseif ($method === 'DELETE') { (new StoreController($client))->destroy($m[1]); } else { Response::error('Method Not Allowed', 405); } exit; } if (preg_match('#^units/([A-Za-z0-9-]+)$#', $path, $m)) { $method = $_SERVER['REQUEST_METHOD'] ?? 'GET'; if ($method === 'PATCH' || $method === 'PUT') { (new UnitController($client))->update($m[1]); } elseif ($method === 'DELETE') { (new UnitController($client))->destroy($m[1]); } else { Response::error('Method Not Allowed', 405); } exit; } if (preg_match('#^members/([A-Za-z0-9-]+)$#', $path, $m)) { $method = $_SERVER['REQUEST_METHOD'] ?? 'GET'; if ($method === 'PATCH' || $method === 'PUT') { (new MemberController($client))->update($m[1]); } elseif ($method === 'DELETE') { (new MemberController($client))->destroy($m[1]); } else { Response::error('Method Not Allowed', 405); } exit; } if (preg_match('#^service_categories/([A-Za-z0-9-]+)$#', $path, $m)) { $method = $_SERVER['REQUEST_METHOD'] ?? 'GET'; if ($method === 'PATCH' || $method === 'PUT') { (new ServiceCategoryController($client))->update($m[1]); } elseif ($method === 'DELETE') { (new ServiceCategoryController($client))->destroy($m[1]); } else { Response::error('Method Not Allowed', 405); } exit; } if (preg_match('#^services/([A-Za-z0-9-]+)$#', $path, $m)) { $method = $_SERVER['REQUEST_METHOD'] ?? 'GET'; if ($method === 'PATCH' || $method === 'PUT') { (new ServiceController($client))->update($m[1]); } elseif ($method === 'DELETE') { (new ServiceController($client))->destroy($m[1]); } else { Response::error('Method Not Allowed', 405); } exit; } if (preg_match('#^store_transactions/([A-Za-z0-9-]+)$#', $path, $m)) { $method = $_SERVER['REQUEST_METHOD'] ?? 'GET'; if ($method === 'PATCH' || $method === 'PUT') { (new StoreTransactionController($client))->update($m[1]); } elseif ($method === 'DELETE') { (new StoreTransactionController($client))->destroy($m[1]); } else { Response::error('Method Not Allowed', 405); } exit; } if (preg_match('#^provided_services/([A-Za-z0-9-]+)$#', $path, $m)) { $method = $_SERVER['REQUEST_METHOD'] ?? 'GET'; if ($method === 'PATCH' || $method === 'PUT') { (new ProvidedServiceController($client))->update($m[1]); } elseif ($method === 'DELETE') { (new ProvidedServiceController($client))->destroy($m[1]); } else { Response::error('Method Not Allowed', 405); } exit; } switch ($path) { case '': Response::json(['ok' => true, 'message' => 'misesapo API root']); break; case 'schedules': try { (new ScheduleController($client))->index(); } catch (Throwable $e) { error_log('[api.html] schedules fatal: ' . $e->getMessage()); Response::json([ 'data' => [], 'warning' => 'スケジュール取得でエラーが発生しました: ' . $e->getMessage(), ], 200); } break; case 'accounts': $method = $_SERVER['REQUEST_METHOD'] ?? 'GET'; if ($method === 'GET') { (new AccountController($client))->index(); } elseif ($method === 'POST') { (new AccountController($client))->store(); } else { Response::error('Method Not Allowed', 405); } break; case 'brands': $method = $_SERVER['REQUEST_METHOD'] ?? 'GET'; if ($method === 'POST') { (new BrandController($client))->store(); } else { Response::error('Method Not Allowed', 405); } break; case 'stores': $method = $_SERVER['REQUEST_METHOD'] ?? 'GET'; if ($method === 'GET') { (new StoreController($client))->index(); } elseif ($method === 'POST') { (new StoreController($client))->store(); } else { Response::error('Method Not Allowed', 405); } break; case 'units': $method = $_SERVER['REQUEST_METHOD'] ?? 'GET'; if ($method === 'GET') { (new UnitController($client))->index(); } elseif ($method === 'POST') { (new UnitController($client))->store(); } else { Response::error('Method Not Allowed', 405); } break; case 'members': $method = $_SERVER['REQUEST_METHOD'] ?? 'GET'; if ($method === 'POST') { (new MemberController($client))->store(); } else { Response::error('Method Not Allowed', 405); } break; case 'service_categories': $method = $_SERVER['REQUEST_METHOD'] ?? 'GET'; if ($method === 'GET') { (new ServiceCategoryController($client))->index(); } elseif ($method === 'POST') { (new ServiceCategoryController($client))->store(); } else { Response::error('Method Not Allowed', 405); } break; case 'services': $method = $_SERVER['REQUEST_METHOD'] ?? 'GET'; if ($method === 'GET') { (new ServiceController($client))->index(); } elseif ($method === 'POST') { (new ServiceController($client))->store(); } else { Response::error('Method Not Allowed', 405); } break; case 'store_transactions': $method = $_SERVER['REQUEST_METHOD'] ?? 'GET'; if ($method === 'GET') { (new StoreTransactionController($client))->index(); } elseif ($method === 'POST') { (new StoreTransactionController($client))->store(); } else { Response::error('Method Not Allowed', 405); } break; case 'provided_services': $method = $_SERVER['REQUEST_METHOD'] ?? 'GET'; if ($method === 'GET') { (new ProvidedServiceController($client))->index(); } elseif ($method === 'POST') { (new ProvidedServiceController($client))->store(); } else { Response::error('Method Not Allowed', 405); } break; case 'store_notes': (new StoreNoteController($client))->index(); break; case 'store_assets': (new StoreAssetController($client))->index(); break; case 'sales_requests': (new RequestController())->store(); break; case 'geocode': (new GeocodeController())->lookup(); break; default: Response::error('Not Found', 404); }