From 1a1c8e71fcd14858f595029f089b2d4a00202b32 Mon Sep 17 00:00:00 2001
From: ogi <Administrator@S-OGI-PC>
Date: Fri, 05 Dec 2025 09:24:16 +0900
Subject: [PATCH] プロジェクトファイルを追加。
---
HotelPms.Client.Blazor/Models/RoomViewMenu.cs | 184 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 184 insertions(+), 0 deletions(-)
diff --git a/HotelPms.Client.Blazor/Models/RoomViewMenu.cs b/HotelPms.Client.Blazor/Models/RoomViewMenu.cs
new file mode 100644
index 0000000..44903d4
--- /dev/null
+++ b/HotelPms.Client.Blazor/Models/RoomViewMenu.cs
@@ -0,0 +1,184 @@
+using Grpc.Core;
+using Grpc.Net.Client;
+using HotelPms.Client.Blazor.Util;
+using HotelPms.DataAccessGrpc.Client;
+using HotelPms.Share.Util;
+using Microsoft.VisualBasic;
+using MudBlazor;
+using System.ComponentModel;
+using System.Data;
+using System.Threading.Channels;
+
+namespace HotelPms.Client.Blazor.Models
+{
+ public class RoomViewMenu
+ {
+ /// <summary>
+ /// 客室状況メニュー
+ /// </summary>
+ public enum EType : int
+ {
+ [Description("予約登録")]
+ Resv = 0,
+ [Description("チェックイン")]
+ CheckIn,
+ [Description("伝票登録")]
+ SlipInput,
+ [Description("チェックアウト")]
+ CheckOut,
+ [Description("外出")]
+ Out,
+ [Description("延長")]
+ Exten,
+ [Description("清掃指示")]
+ Maid,
+ [Description("清掃完了")]
+ Finish,
+ [Description("顧客詳細")]
+ Customer,
+ [Description("PBX連動情報")]
+ PBX,
+ [Description("ウェイクアップ")]
+ WakeUp,
+ [Description("インジケーター同期")]
+ Indicator,
+ [Description("選択キャンセル")]
+ UnSel,
+ }
+
+ public static int ItemCount = 13;
+
+ public static string[] IconData = new string[]
+ {
+ Icons.Material.Filled.Book,
+ Icons.Material.Filled.Login,
+ Icons.Material.Filled.ModeEdit,
+ Icons.Material.Filled.Logout,
+ Icons.Material.Filled.DirectionsRun,
+ Icons.Material.Filled.WatchLater,
+ Icons.Material.Filled.Face,
+ Icons.Material.Filled.Gamepad,
+ Icons.Material.Filled.CancelPresentation,
+ Icons.Material.Filled.Icecream,
+ Icons.Material.Filled.Javascript,
+ Icons.Material.Filled.Kayaking,
+ Icons.Material.Filled.Cancel
+ };
+
+ public string[] Text { get; set; } = new string[ItemCount];
+
+ public bool[] Disable { get; set; } = new bool[ItemCount];
+
+ public double Height { get; set; } = 19.74D + 468.26D + 48D; //ヘッダー:48D
+ public double Width { get; set; } = 250D;
+ public string WidthCss { get => $"{Width}px"; }
+
+ public string DisplayCss { get; set; } = "display: none;";
+
+ /// <summary>
+ /// メニュー行の高さ
+ /// </summary>
+ private static double ItemHeight = 36.02D;
+
+ private DateTime UseDate { get; set; }
+
+ public int RoomID { get; set; } = 0;
+
+ /// <summary>
+ /// 現在の部屋状態
+ /// </summary>
+ public int RoomStatus { get; set; } = 0;
+
+ public int UseStatus { get; set; } = 0;
+
+ public RoomViewMenu()
+ {
+
+ }
+
+ /// <summary>
+ /// 部屋状態の更新
+ /// </summary>
+ /// <param name="next"></param>
+ /// <returns></returns>
+ public async Task<bool> SetRoomStatus(bool next)
+ {
+ Data.Master.RoomStatus item = next ? (await RoomStatusSetting.Instance()).Next(RoomStatus) : (await RoomStatusSetting.Instance()).Prev(RoomStatus);
+ using RoomStatusAccess access = new RoomStatusAccess(EnvironmentSetting.GrpcChannel);
+ var ret = await access.UpdateRoomStatus(UseDate, RoomID, item.ID);
+ return ret != null;
+ }
+
+ private async Task<string> GetText(int type)
+ {
+ if(type == (int)EType.Maid)
+ {
+ Data.Master.RoomStatus item = (await RoomStatusSetting.Instance()).Prev(RoomStatus);
+ return item == null ? string.Empty : item.Name; //前の状態
+ }
+ else if (type == (int)EType.Finish)
+ {
+ Data.Master.RoomStatus item = (await RoomStatusSetting.Instance()).Next(RoomStatus);
+ return item == null ? string.Empty : item.Name; //次の状態
+ }
+ else
+ {
+ return ((EType)type).ToDescription();
+ }
+ }
+
+ /// <summary>
+ /// 指定利用日、部屋IDのメニューを開く
+ /// メニューアイテムの高さ:36.02px
+ /// </summary>
+ /// <param name="useDate"></param>
+ /// <param name="roomID"></param>
+ public async Task Show(GrpcChannel channel, DateTime useDate, int roomID)
+ {
+ RoomID = roomID;
+ UseDate = useDate;
+ EnvironmentSetting.Debug($"GetData begin:{DateTime.Now.ToString("HH:mm:ss fff")}");
+ using RoomViewLayoutAccess access = new RoomViewLayoutAccess(channel);
+ using DataTable data = await access.GetRoomState($"{CConvert.ToDateString(UseDate)},{roomID}");
+ EnvironmentSetting.Debug($"GetData end:{DateTime.Now.ToString("HH:mm:ss fff")}");
+ RoomStatus = CConvert.ToInt(data.Rows[0]["RoomStatus"]);
+ int vacancyID = (await RoomStatusSetting.Instance()).Vacancy;
+ if (RoomStatus == 0) { RoomStatus = vacancyID; }
+ UseStatus = CConvert.ToInt(data.Rows[0]["UseStatus"]);
+
+ foreach (DataColumn col in data.Columns)
+ {
+ EnvironmentSetting.Debug($"{col.ColumnName}={data.Rows[0][col.ColumnName]}");
+ }
+
+ Height = 19.74D + 468.26D + 48D;
+ for (int i= 0; i< ItemCount; i++)
+ {
+ Text[i] = await GetText(i);
+
+ if (RoomStatus == vacancyID && UseStatus == 0)
+ {
+ //空室
+ switch(i)
+ {
+ case (int)EType.SlipInput:
+ case (int)EType.CheckOut:
+ case (int)EType.Out:
+ case (int)EType.Exten:
+ case (int)EType.Customer:
+ case (int)EType.PBX:
+ case (int)EType.WakeUp:
+ case (int)EType.Indicator:
+ Disable[i] = true;
+ Height -= ItemHeight;
+ break;
+ default:
+ Disable[i] = false;
+ break;
+ }
+ }
+ }
+ //
+ }
+ }
+}
--
Gitblit v1.10.0