Laravel 共通 or 関数部分のメモ
・とある予約システムで使用しました、Laravelの共通の関数や、個別関数をまとめたファイル 01をメモです。
Utils.php
<?php
namespace App\Library;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class Utils
{
private $now_date;
private $format;
// ============== 日付関数 当日を返す ==================
public function Get_Format_date($date, $format)
{
$carbon_day = new Carbon($date);
$get_today = $carbon_day->isoFormat($format);
return $get_today;
}
/*
* // 火葬枠番号 返す
*/
public function Get_Kasou_Waku($waku): string
{
$arr = ["9:00", "10:00", "11:00", "12:00", "13:00", "14:00", "15:00"];
$idx = 0;
$resurl_waku = "";
foreach ($arr as $a) {
if (strcmp($a, $waku) == 0) {
$resurl_waku = $idx;
}
$idx += 1;
}
return $resurl_waku + 1;
}
/*
* 火葬枠 テーブルから 取得
*/
public function Get_Kasou_Waku_table()
{
$bindParam = [];
$sql = <<< SQL
SELECT 火葬枠番号 , 火葬枠名 , 予約枠数 , 予約時刻
FROM 火葬枠
SQL;
$get_wakusuu = DB::select($sql);
$arr_kasouWaku_num = []; // 火葬枠番号
$arr_kasouWaku_name = []; // 火葬枠名
$arr_kasouWaku_suu = []; // 予約枠数
$arr_kasouWaku_time = []; // 予約時刻
for ($i = 0; $i < count($get_wakusuu); $i++) {
$arr_kasouWaku_num[$i] = $get_wakusuu[$i]->{"火葬枠番号"};
$arr_kasouWaku_name[$i] = $get_wakusuu[$i]->{"火葬枠名"};
$arr_kasouWaku_suu[$i] = $get_wakusuu[$i]->{"予約枠数"};
$arr_kasouWaku_time[$i] = $get_wakusuu[$i]->{"予約時刻"};
}
// === 900 => 9:00 , 1000 => 10:00
for ($i = 0; $i < count($arr_kasouWaku_time); $i++) {
if ($i == 0) {
$arr_kasouWaku_time[$i] = substr_replace($arr_kasouWaku_time[$i], ':00', 1);
} else {
$arr_kasouWaku_time[$i] = substr_replace($arr_kasouWaku_time[$i], ':00', 2);
}
}
$sql = <<< SQL
select 予約日,火葬枠番号,count(火葬枠番号) as 枠合計 from 火葬受付
where 予約日 > NOW() and 予約日 <= (NOW() + interval 7 DAY)
group by 火葬枠番号, 予約日
SQL;
$get_yoyaku_week_data = DB::select($sql);
$yoyaku_week_data_yoyakubi = [];
$yoyaku_week_data_kwaku = [];
$yoyaku_week_waku_sum = [];
for ($i = 0; $i < count($get_yoyaku_week_data); $i++) {
$yoyaku_week_data_yoyakubi[$i] = $get_yoyaku_week_data[$i]->{"予約日"};
$yoyaku_week_data_kwaku[$i] = $get_yoyaku_week_data[$i]->{"火葬枠番号"};
$yoyaku_week_waku_sum[$i] = $get_yoyaku_week_data[$i]->{"枠合計"};
}
$get_kasou_data = [
'arr_kasouWaku_num' => $arr_kasouWaku_num,
'arr_kasouWaku_name' => $arr_kasouWaku_name,
'arr_kasouWaku_suu' => $arr_kasouWaku_suu,
'arr_kasouWaku_time' => $arr_kasouWaku_time,
'yoyaku_week_data_yoyakubi' => $yoyaku_week_data_yoyakubi,
'yoyaku_week_data_kwaku' => $yoyaku_week_data_kwaku,
'yoyaku_week_waku_sum' => $yoyaku_week_waku_sum,
];
return $get_kasou_data;
}
/*
====== 採番テーブル 「現在値」 マックス値 取得 =======
*/
public function Get_Saiban_Max()
{
// === パラメーター(年度取得) その年の年度
$now_year = new Carbon();
$now_year = Carbon::setLocale('ja');
$now_year = Carbon::now()->format('Y');
$bindParam = [
'now_year' => $now_year,
];
$sql = <<< SQL
SELECT 採番名, MAX(現在値) as 現在, 年度 FROM 採番
group by 年度 having 採番名 = '予約番号' and 年度 = :now_year
SQL;
$get_saiban = DB::select($sql, $bindParam);
$get_saiban_num = $get_saiban[0]->{"現在"};
$get_arr = [
'get_saiban_num' => $get_saiban_num,
];
return $get_arr;
}
/**
* 和暦を返す
*/
public function Get_Wareki($year): array
{
$eras = [
['year' => 2019, 'name' => '令和', 'new_Japanese_calendar' => '平成31年度'],
];
$get_wareki = "";
$get_wa_nendo = 0;
// ======= 和暦 取得
foreach ($eras as $era) {
// === 元年処理
if ($year == $era['year']) {
$get_wareki = $era['new_Japanese_calendar'];
}
// === 元年以外
if ($year >= $era['year']) {
$get_wareki = $era['name'];
$get_wa_nendo = $year - $era['year'] + 1;
}
return [
'get_wareki' => $get_wareki,
'get_wa_nendo' => $get_wa_nendo
];
} // ========= END foreach
}
/**
* 日付 2022-08-08 の 月 日 を返す 0 => 08 , 1 => 8
*/
public function Get_Month_Day($to_date, $opt): array
{
// === 2桁で返す
if ($opt == 0) {
// 01
$month = mb_substr($to_date, 5, 2);
$day = mb_substr($to_date, 8, 2);
return [
"month" => $month,
"day" => $day
];
// === 1桁で返す
} else {
$s_month = mb_substr($to_date, 5, 2);
$s_day = mb_substr($to_date, 8, 2);
if (substr($s_month, 0, 1) === "0") {
$month = substr_replace($s_month, "", 0, 1);
}
if (substr($s_day, 0, 1) === "0") {
$day = substr_replace($s_day, "", 0, 1);
} else {
$day = $s_day;
}
return [
"month" => $month,
"day" => $day,
];
}
}
/**
* 斎場名、 斎場FAX番号 を取得する。 初期設定テーブル
*/
public function Get_Saijou_Mei_Fax(): array
{
$sql = <<< SQL
SELECT 斎場名, 斎場FAX FROM 初期設定 WHERE 斎場名 = 'メモリアルトネ'
SQL;
$get_pdf_syoki = DB::select($sql);
$pdf_view_saijou_name = $get_pdf_syoki[0]->{"斎場名"};
$pdf_viwe_fax = $get_pdf_syoki[0]->{"斎場FAX"};
return [
"pdf_view_saijou_name" => $pdf_view_saijou_name,
"pdf_viwe_fax" => $pdf_viwe_fax,
];
}
/**
* 固定電話 、 スマホ(頭 3桁)で(-) を分岐させる
*/
public function Tel_Haifun_Change($str): string
{
if (
substr($str, 0, 3) == "090" || substr($str, 0, 3) == "080" ||
substr($str, 0, 3) == "070" || substr($str, 0, 3) == "050"
) {
// === 頭 3桁の場合
$str1 = substr($str, 0, 3);
$str2 = substr($str, 3, 4);
$str3 = substr($str, 7, 11);
$change_tel = $str1 . "-" . $str2 . "-" . $str3;
return $change_tel;
} else {
// === 頭 4桁 (固定電話)の場合
$str1 = substr($str, 0, 4);
$str2 = substr($str, 4, 2);
$str3 = substr($str, 6, 4);
$change_tel = $str1 . "-" . $str2 . "-" . $str3;
return $change_tel;
}
} // ========= Tel_Haifun_Change() END
/**
* 郵便番号 (-) ハイフン を付ける
*/
public function Yuubin_Haifun($str): string
{
$str1 = substr($str, 0, 3);
$str2 = substr($str, 3, 7);
$change_yuubin = $str1 . "-" . $str2;
return $change_yuubin;
}
}