Files
Aperio_Control_Centre/Aperio_Control_Centre.ACSDatabase/Models/SupportedDoorMode.cs
2025-10-17 08:48:13 +02:00

81 lines
2.0 KiB
C#

using Aperio_Control_Centre.Aadp.Enumerations;
using Microsoft.AspNetCore.Mvc.Rendering;
namespace Aperio_Control_Centre.ACSDatabase.Models
{
public class SupportedDoorMode
{
public DoorMode DoorMode { get; set; }
public bool CurrentMode { get; set; }
}
public class SupportedDoorModes : List<SupportedDoorMode>
{
private void AddDoorMode(DoorMode mode, bool active)
{
SupportedDoorMode newMode = new()
{
DoorMode = mode,
CurrentMode = active
};
Add(newMode);
}
public void UpdateDoormodes(List<DoorMode> modes)
{
Clear();
foreach (DoorMode mode in modes)
{
AddDoorMode(mode, false);
}
}
public DoorMode GetDoorMode()
{
if (Count == 0)
{
return DoorMode.UNKNOWN;
}
return this.Where(c => c.CurrentMode == true).Select(m => m.DoorMode).FirstOrDefault();
}
public void SetDoorMode(DoorMode doorMode)
{
foreach (SupportedDoorMode doormode in this)
{
doormode.CurrentMode = false;
}
SupportedDoorMode? m = this.Where(m => m.DoorMode == doorMode).FirstOrDefault();
if (m != null)
{
m.CurrentMode = true;
}
else
{
AddDoorMode(doorMode, true);
}
}
public List<SelectListItem> DoorModeSelectListItems()
{
return this
.Select(s => new SelectListItem
{
Value = s.DoorMode.ToString(),
Text = s.DoorMode.ToString(),
}).ToList();
}
public SelectList DoorModeSelectList()
{
return new SelectList(DoorModeSelectListItems(), "Value", "Text");
}
}
}