using System;
using ShareeBike.Model.Connector;
namespace ShareeBike.Services.BluetoothLock.Tdo
{
/// Data required to connect to a blutooth lock.
public class LockInfoAuthTdo
{
/// Identification number of bluetooth lock, 6-digits, second part of advertisement name.
public int Id { get; private set; }
/// GUID to the device.
public Guid Guid { get; private set; }
/// Seed used to generate key for connecting to bluetooth lock.
public byte[] K_seed { get; private set; }
/// Key for connect to bluetooth lock as user.
public byte[] K_u { get; private set; }
/// Key for connect to bluetooth lock as admin.
public byte[] K_a { get; private set; }
public bool IsIdValid => Id != TextToLockItTypeHelper.INVALIDLOCKID;
public bool IsGuidValid => Guid != TextToLockItTypeHelper.INVALIDLOCKGUID;
public class Builder
{
private LockInfoAuthTdo lockInfoTdo = new LockInfoAuthTdo();
public Builder() { }
/// Identification number of bluetooth lock, 6-digits, second part of advertisement name.
public int Id { get => lockInfoTdo.Id; set { lockInfoTdo.Id = value; } }
/// GUID to the device.
public Guid Guid { get => lockInfoTdo.Guid; set { lockInfoTdo.Guid = value; } }
/// Seed used to generate key for connecting to bluetooth lock.
public byte[] K_seed { get => lockInfoTdo.K_seed; set { lockInfoTdo.K_seed = value; } }
/// Key for connect to bluetooth lock as user.
public byte[] K_u { get => lockInfoTdo.K_u; set { lockInfoTdo.K_u = value; } }
/// Key for connect to bluetooth lock as admin.
public byte[] K_a { get => lockInfoTdo.K_a; set { lockInfoTdo.K_a = value; } }
public LockInfoAuthTdo Build()
{
if (K_seed == null) K_seed = new byte[0];
if (K_u == null) K_u = new byte[0];
if (K_a == null) K_a = new byte[0];
return lockInfoTdo;
}
}
}
}