/// /// class: Device.cs /// ///This file defines the abstract Device class, which serves as the base class for all device types (e.g., smartphones, smartwatches). ///It includes common properties and methods for managing device details and assignments. /// /// Name: Rens Pastoor /// Studentnumber: 555408 /// Date: 11 May 2025 /// ///Version: 1 /// using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PoloClubApp { internal abstract class Device { public int Id { get; } public string Name { get; } public string PlayerName { get; set; } public Device(int id, string name, string playerName = null){ Id = id; Name = name; PlayerName = playerName; } public abstract string GetDetails(); public bool IsAssigned(){ return PlayerName != null; } public Exception AssignDevice(string playerName, int? waterResistanceMeters){ if (IsAssigned()){ throw new Exception("Device is already assigned"); } else if (this is IWearable && waterResistanceMeters < 3){ throw new Exception("Water resistance meters should be 3 or more"); } else if (this.Id == null){ throw new Exception("Device Id is null"); } else { PlayerName = playerName; return null; } } public bool ReturnDevice(){ if (!IsAssigned()){ return false; } PlayerName = null; return true; } } }