LoginSignup
0
1

More than 1 year has passed since last update.

Laravel とある予約システムの 共通関数部分のメモ 01

Posted at

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;
    }
}
0
1
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
1