81 lines
2.0 KiB
C#
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");
|
|
}
|
|
|
|
|
|
}
|
|
}
|