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] プロジェクトファイルを追加。

---
 ProtosExpan/UseInfo/Use.Server.cs |  353 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 353 insertions(+), 0 deletions(-)

diff --git a/ProtosExpan/UseInfo/Use.Server.cs b/ProtosExpan/UseInfo/Use.Server.cs
new file mode 100644
index 0000000..f2228d9
--- /dev/null
+++ b/ProtosExpan/UseInfo/Use.Server.cs
@@ -0,0 +1,353 @@
+using HotelPms.Data.Common.Util;
+using HotelPms.Share.Data;
+using HotelPms.Share.IO;
+using System.Data.Common;
+using System.Reflection;
+using System.Text;
+
+namespace HotelPms.Data.UseInfo
+{
+    /// <summary>
+    /// サーバー側の処理
+    /// ①データR/W
+    /// ②クラウド中の計算
+    /// </summary>
+    public partial class Use
+    {
+        private Dictionary<int, UsePerson> personDict = new();
+        private Dictionary<int, UseDetail> detailDict = new();
+        private Dictionary<string, UseRoom> useRoomDict = new();  //DetailID,UseDate
+
+        /// <summary>
+        /// 利用情報の更新SQL生成
+        /// </summary>
+        /// <returns></returns>
+        public string ToSql()
+        {
+            bool isNew = UpdateID == 0;
+            UseSql useSql = new UseSql(isNew, ID);
+
+            foreach (UsePerson person in PersonlList)
+            {
+                foreach(UsePersonFree personFree in person.FreeList) { useSql.UsePersonFree.AppendLine(personFree.AddSql());  }
+                foreach (UsePersonTel personTel in person.TelList) { useSql.UsePersonTel.AppendLine(personTel.AddSql()); }
+                useSql.UsePerson.AppendLine(person.AddSql());
+            }
+
+            foreach (UseMemo useMemo in MemoList) { useSql.UseMemo.AppendLine(useMemo.AddSql()); }
+            foreach (UseFree useFree in FreeList) { useSql.UseFree.AppendLine(useFree.AddSql()); }
+
+            // 利用明細
+            foreach (UseDetail useDetail in DetailList)
+            {
+                foreach (UseMemo useMemo in useDetail.MemoList) { useSql.UseMemo.AppendLine(useMemo.AddSql()); }
+                foreach (UseFree useFree in useDetail.FreeList) { useSql.UseFree.AppendLine(useFree.AddSql()); }
+                foreach (Rental rental in useDetail.RentalList) { useSql.Rental.AppendLine(rental.AddSql()); }
+                foreach (UseRoom useRoom in useDetail.UseRoomList)
+                {
+                    foreach (UseFree useFree in useRoom.FreeList) { useSql.UseFree.AppendLine(useFree.AddSql()); }
+                    foreach (UseAllo useAllo in useRoom.UseAlloList) { useSql.UseAllo.AppendLine(useAllo.AddSql()); }
+                    foreach (Arrange arrange in useRoom.ArrangeList) { useSql.Arrange.AppendLine(arrange.AddSql()); }
+                    foreach (Sale sale in useRoom.SaleList) { useSql.Sale.AppendLine(sale.AddSql()); }
+                    foreach (Pay pay in useRoom.PayList) { useSql.Pay.AppendLine(pay.AddSql()); }
+                    useSql.UseRoom.AppendLine(useRoom.AddSql());
+                }
+                useSql.UseDetail.AppendLine(useDetail.AddSql());
+            }
+
+            //更新直前にカウントする
+            UpdateID++;
+            useSql.Use.AppendLine(isNew ? AddSql() : UpdateSql());
+
+
+            StringBuilder sql = new StringBuilder();
+            sql.Append(useSql.ToString());
+            sql.AppendLine($"EXECUTE SaveUseAfter {ID}");
+            return sql.ToString();
+        }
+
+        /// <summary>
+        /// 利用者情報
+        /// </summary>
+        /// <param name="reader"></param>
+        /// <param name="use"></param>
+        public void SetUsePerson(DbDataReader reader)
+        {
+            while (reader.Read())
+            {
+                UsePerson item = new();
+                item.ConvertReader(reader);
+                PersonlList.Add(item);
+                personDict.Add(item.PersonID, item);
+            }
+            reader.NextResult();
+        }
+
+        /// <summary>
+        /// 個人自由集計
+        /// </summary>
+        /// <param name="reader"></param>
+        public void SetUsePersonFree(DbDataReader reader)
+        {
+            while (reader.Read())
+            {
+                UsePersonFree item = new();
+                item.ConvertReader(reader);
+                UsePerson person = personDict[item.PersonID];
+                person.FreeList.Add(item);
+            }
+            reader.NextResult();
+        }
+
+        /// <summary>
+        /// 個人電話
+        /// </summary>
+        /// <param name="reader"></param>
+        public void SetUsePersonTel(DbDataReader reader)
+        {
+            while (reader.Read())
+            {
+                UsePersonTel item = new();
+                item.ConvertReader(reader);
+                UsePerson person = personDict[item.PersonID];
+                person.TelList.Add(item);
+            }
+            reader.NextResult();
+        }
+
+        /// <summary>
+        /// 利用明細
+        /// </summary>
+        /// <param name="reader"></param>
+        /// <param name="use"></param>
+        public void SetUseDetail(DbDataReader reader)
+        {
+            while (reader.Read())
+            {
+                UseDetail item = new();
+                item.ConvertReader(reader);
+                DetailList.Add(item);
+                detailDict.Add(item.DetailID, item);
+            }
+            reader.NextResult();
+        }
+
+        /// <summary>
+        /// 利用部屋
+        /// </summary>
+        /// <param name="reader"></param>
+        public void SetUseRoom(DbDataReader reader)
+        {
+            while (reader.Read())
+            {
+                UseRoom item = new();
+                item.ConvertReader(reader);
+                UseDetail detail = detailDict[item.DetailID];
+                detail.UseRoomList.Add(item);
+                item.Parent = detail;
+                useRoomDict.Add($"{item.DetailID},{item.UseDate.Value}", item);
+            }
+            reader.NextResult();
+        }
+
+        /// <summary>
+        /// 部屋割り
+        /// </summary>
+        /// <param name="reader"></param>
+        public void SetUseAllo(DbDataReader reader)
+        {
+            while (reader.Read())
+            {
+                UseAllo item = new();
+                item.ConvertReader(reader);
+                UseRoom useRoom = useRoomDict[$"{item.DetailID},{item.UseDate.Value}"];
+                useRoom.UseAlloList.Add(item);
+                item.Parent = useRoom;
+                item.Detail = detailDict[item.DetailID];
+                item.Person = personDict[item.PersonID];
+            }
+            reader.NextResult();
+        }
+
+        /// <summary>
+        /// 自由集計
+        /// </summary>
+        /// <param name="reader"></param>
+        /// <param name="use"></param>
+        public void SetUseFree(DbDataReader reader)
+        {
+            while (reader.Read())
+            {
+                UseFree item = new();
+                item.ConvertReader(reader);
+
+                if (item.DetailID == 0)
+                {
+                    //利用情報の自由集計
+                    FreeList.Add(item);
+                    item.Parent = this;
+                }
+                else if (item.UseDate.CompareTo(customTypes.Date.MinUseDate) <= 0)
+                {
+                    //利用明細の自由集計
+                    UseDetail detail = detailDict[item.DetailID];
+                    detail.FreeList.Add(item);
+                    item.Parent = detail;   
+                }
+                else
+                {
+                    //利用部屋の自由集計
+                    UseRoom useRoom = useRoomDict[$"{item.DetailID},{item.UseDate.Value}"];
+                    useRoom.FreeList.Add(item);
+                    item.Parent = useRoom;
+                }
+            }
+            reader.NextResult();
+        }
+
+        /// <summary>
+        /// メモ
+        /// </summary>
+        /// <param name="reader"></param>
+        /// <param name="use"></param>
+        public void SetUseMemo(DbDataReader reader)
+        {
+            while (reader.Read())
+            {
+                UseMemo item = new();
+                item.ConvertReader(reader);
+
+                if (item.DetailID == 0)
+                {
+                    //利用情報
+                    MemoList.Add(item);
+                    item.Parent = this;
+                }
+                else
+                {
+                    //利用明細
+                    UseDetail detail = detailDict[item.DetailID];
+                    detail.MemoList.Add(item);
+                    item.Parent = detail;
+                }
+            }
+            reader.NextResult();
+        }
+
+        /// <summary>
+        /// 売上
+        /// </summary>
+        /// <param name="reader"></param>
+        public void SetSale(DbDataReader reader)
+        {
+            while (reader.Read())
+            {
+                Sale item = new();
+                item.ConvertReader(reader);
+                UseRoom useRoom = useRoomDict[$"{item.DetailID},{item.UseDate.Value}"];
+                useRoom.SaleList.Add(item);
+                item.Parent = useRoom;
+            }
+            reader.NextResult();
+        }
+
+        /// <summary>
+        /// 入金
+        /// </summary>
+        /// <param name="reader"></param>
+        public void SetPay(DbDataReader reader)
+        {
+            while (reader.Read())
+            {
+                Pay item = new();
+                item.ConvertReader(reader);
+                UseRoom useRoom = useRoomDict[$"{item.DetailID},{item.UseDate.Value}"];
+                useRoom.PayList.Add(item);
+                item.Parent = useRoom;
+            }
+            reader.NextResult();
+        }
+
+        /// <summary>
+        /// 手配情報
+        /// </summary>
+        /// <param name="reader"></param>
+        public void SetArrange(DbDataReader reader)
+        {
+            while (reader.Read())
+            {
+                Arrange item = new();
+                item.ConvertReader(reader);
+                UseRoom useRoom = useRoomDict[$"{item.DetailID},{item.UseDate.Value}"];
+                useRoom.ArrangeList.Add(item);
+                item.Parent = useRoom;
+            }
+            reader.NextResult();
+        }
+
+        /// <summary>
+        /// 備品情報
+        /// </summary>
+        /// <param name="reader"></param>
+        public void SetRental(DbDataReader reader)
+        {
+            while (reader.Read())
+            {
+                Rental item = new();
+                item.ConvertReader(reader);
+                UseDetail detail = detailDict[item.DetailID];
+                detail.RentalList.Add(item);
+                item.Parent = detail;
+            }
+            reader.NextResult();
+        }
+
+        /// <summary>
+        /// バッファークリア
+        /// </summary>
+        public void ClearDict()
+        {
+            personDict.Clear();
+            detailDict.Clear();
+            useRoomDict.Clear();
+        }
+
+        /// <summary>
+        /// 利用情報取得
+        /// ※サーバー中のバッファーより、マスタ名も取得する
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        public static Use? Get(int id, DataAccess access)
+        {
+            try
+            {
+                string sql = $"EXECUTE GetUse {id}";
+                OperationLog.Instance.WriteLog($"データ読込:{sql}");
+                Use item = access.GetDataReader<Use>(sql, (reader, use) =>
+                {
+                    use.ClearDict();
+                    if (reader.Read()) { use.ConvertReader(reader); reader.NextResult(); }  //D_Use
+                    use.SetUsePerson(reader);  //D_UsePerson
+                    use.SetUsePersonFree(reader);  //D_UsePersonFree
+                    use.SetUsePersonTel(reader);  //D_UsePersonTel
+                    use.SetUseDetail(reader);  //D_UseDetail
+                    use.SetUseRoom(reader);  //D_UseRoom
+                    use.SetUseAllo(reader);  //D_UseAllo
+                    use.SetUseFree(reader);  //D_UseFree
+                    use.SetUseMemo(reader);  //D_UseMemo
+                    use.SetRental(reader);  //D_Rental
+                    use.SetSale(reader);  //D_Sale
+                    use.SetPay(reader);  //D_Pay
+                    use.SetArrange(reader);  //D_Arrange
+                });
+                return item;
+            }
+            catch (Exception ex)
+            {
+                OperationLog.Instance.WriteLog($"{MethodInfo.GetCurrentMethod()}:{ex.Message}");
+                return null;
+            }
+        }
+    }
+}

--
Gitblit v1.10.0