修改挂单功能
This commit is contained in:
57
web/App_Code/Model/Partial/GuaDanOrderGuest.cs
Normal file
57
web/App_Code/Model/Partial/GuaDanOrderGuest.cs
Normal file
@@ -0,0 +1,57 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Entity;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
|
||||
/// <summary>
|
||||
/// GuaDanOrderGuest 的摘要描述
|
||||
/// </summary>
|
||||
namespace Model
|
||||
{
|
||||
public partial class GuaDanOrderGuest
|
||||
{
|
||||
// 状态常量定义
|
||||
public const string STATUS_BOOKED = "401"; // 预订成功
|
||||
public const string STATUS_CHECKED_IN = "402"; // 已入住
|
||||
public const string STATUS_CHECKED_OUT = "403"; // 已退房
|
||||
public const string STATUS_CANCELLED = "404"; // 已取消
|
||||
|
||||
public static bool IsStatusTransitionValid(ezEntities db, string targetStatus, Guid guestId)
|
||||
{
|
||||
// 获取当前客人对象
|
||||
GuaDanOrderGuest currentGuest = db.GuaDanOrderGuest.Find(guestId);
|
||||
if (currentGuest == null)
|
||||
{
|
||||
// 如果没有客人对象,只能创建新的预订
|
||||
return targetStatus == STATUS_BOOKED;
|
||||
}
|
||||
|
||||
// 安全获取当前状态(处理null情况)
|
||||
string currentStatus = currentGuest.RegionRoomBedStatus?.Code;
|
||||
|
||||
// 如果当前状态为空,只能进入预订成功状态
|
||||
if (string.IsNullOrEmpty(currentStatus))
|
||||
{
|
||||
return targetStatus == STATUS_BOOKED;
|
||||
}
|
||||
|
||||
// 定义有效的状态转换规则
|
||||
var validTransitions = new Dictionary<string, List<string>>
|
||||
{
|
||||
{ STATUS_BOOKED, new List<string> { STATUS_CHECKED_IN, STATUS_CANCELLED } },
|
||||
{ STATUS_CHECKED_IN, new List<string> { STATUS_CHECKED_OUT } },
|
||||
{ STATUS_CHECKED_OUT, new List<string> { } }, // 终态,不能再转换
|
||||
{ STATUS_CANCELLED, new List<string> { } } // 终态,不能再转换
|
||||
};
|
||||
|
||||
// 检查转换是否有效
|
||||
if (validTransitions.ContainsKey(currentStatus))
|
||||
{
|
||||
return validTransitions[currentStatus].Contains(targetStatus);
|
||||
}
|
||||
|
||||
return false; // 未知的当前状态
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user