0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

GroupSession WebAPIを使ってPHPで施設の予約内容を取得する

Last updated at Posted at 2024-07-09

APIの概要は「無料版GroupSessionの設計書(WEB API 仕様書)」をダウンロードしてください。

例として今日の設備予約内容を取得する。

※取りあえず動くことだけを目的としているので「ここがおかしい」「こうしたほうがよい」などあればお知らせください。

準備

GroupSesseion のインストールや初期設定は割愛。

1. admin 以外の管理者ユーザーを1つ作成する。

2. GroupSesseion のプラグインマネージャで「WebAPI」を「使用」にする。

3. WebAPI の管理者設定 ⇒ Web API基本設定 ⇒ トークン認証を「使用する」

4. WebAPI の管理者設定 ⇒ Web APIトークン管理 ⇒ トークン発行。1で作った管理者ユーザーを選択してトークンを発行する。生成されたトークン文字列は、このあとすぐに使います。

実装

施設名と施設SIDを取得する

sample1.php
<?php
$server='http://XXX.XXX.XXX.XXX:8080/gsession'; // GroupSessionのインストール場所
$token='abcdefghijklmnopqrstuvwxyz='; // トークン

$options = array(
  'http' => array(
    'method' => 'POST',
    'header'=> "Authorization: Bearer ".$token."\r\n"
    )
);

$url1 = $server."/api/reserve/list.do";

$context1 = stream_context_create( $options );
$result1 = file_get_contents( $url1, false, $context1 );
$reader1 = new SimpleXMLElement($result1);
//var_dump($reader1);

foreach ($reader1->Result as $shisetsu) {
        echo "施設名称:".$shisetsu->RsdName.",";
        echo "施設SID:".$shisetsu->RsdSid."<br />\r\n";
}
?>

サーバーの IPアドレスを2行目に記載する。
準備4で取得したトークンを3行目に貼り付け。
ここまでで、施設名と施設SID の一覧が表示されるはずです。
うまく表示されなければ、var_dump のコメントを外してエラー内容を確認してください。

施設SID は、施設名をクリックしたときに表示される施設ID ではなく、内部ID です(このあと使います)。

施設ごとの予定を取得する

例えば、施設SID が1の施設の今日の予定を取得するなら、

sample2.php
<?php
$server='http://XXX.XXX.XXX.XXX:8080/gsession'; // GroupSessionのインストール場所
$token='abcdefghijklmnopqrstuvwxyz='; // トークン

$options = array(
  'http' => array(
    'method' => 'POST',
    'header'=> "Authorization: Bearer ".$token."\r\n"
    )
);

$n = new DateTime();
$start= $n->format('Y/m/d 00:00');
$end  = $n->format('Y/m/d 23:59');

$url2 = $server."/api/reserve/yoyaku/search.do?rsdSid=1&startTime=".urlencode($start)."&endTime=".urlencode($end);

$context2 = stream_context_create( $options );
$result2 = file_get_contents( $url2, false, $context2 );
$reader2 = new SimpleXMLElement($result2);
//var_dump($reader2);

foreach ($reader2->Result as $yotei) {
        echo "予約日時:".$yotei->StartDateTime."~";
        echo $yotei->EndDateTime;
        echo " 利用目的:".$yotei->Title."<br />\r\n";
}
?>

$url2 の「rsdSid=1」にて施設SIDを指定しています。
今回も、うまく表示されなければ var_dump のコメントを外してエラー内容を確認してください。

サイボウズ API と違って予約日時順でソート済みの結果が返ってくるので楽ちん(*^^)v

特定の施設IDの、今日の予約を一覧表示する

というわけで全文。

sample.php
<?php
$shisetsuID='9999'; // 施設名をクリックしたときに表示される施設ID
$server='http://XXX.XXX.XXX.XXX:8080/gsession'; // GroupSessionのインストール場所
$token='abcdefghijklmnopqrstuvwxyz='; // トークン

$options = array(
  'http' => array(
    'method' => 'POST',
    'header'=> "Authorization: Bearer ".$token."\r\n"
    )
);

// 施設情報を取得する
$url1 = $server."/api/reserve/list.do";

$context1 = stream_context_create( $options );
$result1  = file_get_contents( $url1, false, $context1 );
$reader1  = new SimpleXMLElement($result1);

foreach ($reader1->Result as $shisetsu) {
    if ($shisetsu->RsdId==$shisetsuID) {
        $shisetsuName = $shisetsu->RsdName;
        $shisetsuSID  = $shisetsu->RsdSid;
    }
}

// 今日の予約を取得する
$n = new DateTime();

$start= $n->format('Y/m/d 00:00');
$end  = $n->format('Y/m/d 23:59');

$url2 = $server."/api/reserve/yoyaku/search.do?rsdSid=".$shisetsuSID."&startTime=".urlencode($start)."&endTime=".urlencode($end);

$context2 = stream_context_create( $options );
$result2  = file_get_contents( $url2, false, $context2 );
$reader2  = new SimpleXMLElement($result2);

// 表示する
echo $shisetsuName."の今日の予約内容\r\n";
foreach ($reader2->Result as $yotei) {
        echo "予約日時:".$yotei->StartDateTime."~";
        echo $yotei->EndDateTime;
        echo " 利用目的:".$yotei->Title."<br />\r\n";
}
?>

全施設の今日の予約を一覧表示する

別な例として、すべての施設の当日の予約を表示する。

sample2.php
<?php
$server='http://XXX.XXX.XXX.XXX:8080/gsession'; // GroupSessionのインストール場所
$token='abcdefghijklmnopqrstuvwxyz='; // トークン

$options = array(
  'http' => array(
    'method' => 'POST',
    'header'=> "Authorization: Bearer ".$token."\r\n"
    )
);

// 今日の予約を取得する
$n = new DateTime();

$start= $n->format('Y/m/d 00:00');
$end  = $n->format('Y/m/d 23:59');

$url2 = $server."/api/reserve/yoyaku/search.do?startTime=".urlencode($start)."&endTime=".urlencode($end);

$context2 = stream_context_create( $options );
$result2  = file_get_contents( $url2, false, $context2 );
$reader2  = new SimpleXMLElement($result2);

// 表示する
foreach ($reader2->Result as $yotei) {
        echo "予約日時:".$yotei->StartDateTime;
        echo "~".$yotei->EndDateTime;
        echo " 施設:".$yotei->RsdName;
        echo " 利用目的:".$yotei->Title."<br />\r\n";
}
?>

余談

他システムからGroupSessionに自動ログイン

http://(サーバーのIPアドレス):8080/gsession/common/cmn001.do?cmn001Userid=(ユーザー名)&cmn001Passwd=(パスワード)&CMD=login

パスワードが丸見えなので使いどころには注意してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?