diff --git a/MyCore/Controllers/Devices/DeviceController.cs b/MyCore/Controllers/Devices/DeviceController.cs index 1ec853c..5e6e629 100644 --- a/MyCore/Controllers/Devices/DeviceController.cs +++ b/MyCore/Controllers/Devices/DeviceController.cs @@ -41,16 +41,22 @@ namespace MyCore.Controllers.Devices /// /// Get all devices summary /// + /// Id of user [ProducesResponseType(typeof(List), 200)] [HttpGet] - public ObjectResult GetAll() + public ObjectResult GetAll(string userId) { try { - List Devices = _DeviceDatabaseService.GetAll(); + List Devices = _DeviceDatabaseService.GetAll(userId); List devicesSummaryDTO = Devices.Select(d => d.ToSummaryDTO()).ToList(); + foreach (var device in devicesSummaryDTO) + { + device.ProviderName = _ProviderDatabaseService.GetById(userId, device.ProviderId).Name; + } + return new OkObjectResult(devicesSummaryDTO); } catch (Exception ex) @@ -62,10 +68,11 @@ namespace MyCore.Controllers.Devices /// /// Get a specific device info /// + /// Id of user /// id of device [ProducesResponseType(typeof(DeviceDetailDTO), 200)] [HttpGet("{deviceId}")] - public ObjectResult GetDetail(string deviceId) + public ObjectResult GetDetail(string userId, string deviceId) { try { @@ -89,11 +96,10 @@ namespace MyCore.Controllers.Devices { try { - if (deviceDetailDTO == null) throw new KeyNotFoundException("Device is null"); - DeviceDetailDTO deviceCreated = DeviceService.CreateOrUpdate(this._DeviceDatabaseService, this._ProviderDatabaseService, this._LocationDatabaseService, deviceDetailDTO, true); + DeviceDetailDTO deviceCreated = DeviceService.CreateOrUpdate(this._DeviceDatabaseService, this._ProviderDatabaseService, this._LocationDatabaseService, deviceDetailDTO.UserId, deviceDetailDTO, true); return new OkObjectResult(deviceCreated); @@ -133,7 +139,7 @@ namespace MyCore.Controllers.Devices if (provider == null) throw new KeyNotFoundException("Provider id is null"); - List devicesCreated = await DeviceService.CreateFromProvider(this._DeviceDatabaseService, this._ProviderDatabaseService, this._LocationDatabaseService, provider); + List devicesCreated = await DeviceService.CreateFromProvider(this._DeviceDatabaseService, this._ProviderDatabaseService, this._LocationDatabaseService, userId, provider); return new OkObjectResult(devicesCreated); } @@ -162,18 +168,18 @@ namespace MyCore.Controllers.Devices /// /// Update a device /// - /// Device Id + /// Device Id /// Device to update [ProducesResponseType(typeof(DeviceDetailDTO), 200)] [HttpPut("{deviceId}")] - public ObjectResult Update(string deviceId, [FromBody] DeviceDetailDTO deviceDetailDTO) + public ObjectResult Update(string userId, [FromBody] DeviceDetailDTO deviceDetailDTO) { try { - if (!_DeviceDatabaseService.IsExist(deviceId)) + if (!_DeviceDatabaseService.IsExist(deviceDetailDTO.Id)) throw new KeyNotFoundException("Device does not exist"); - DeviceDetailDTO deviceUpdated = DeviceService.CreateOrUpdate(this._DeviceDatabaseService, this._ProviderDatabaseService, this._LocationDatabaseService, deviceDetailDTO, false); + DeviceDetailDTO deviceUpdated = DeviceService.CreateOrUpdate(this._DeviceDatabaseService, this._ProviderDatabaseService, this._LocationDatabaseService, userId, deviceDetailDTO, false); return new OkObjectResult(deviceUpdated); } @@ -206,5 +212,25 @@ namespace MyCore.Controllers.Devices return new ObjectResult(ex.Message) { StatusCode = 500 }; } } + + /// + /// Delete a device + /// + /// Id of user + [HttpDelete("user/{userId}")] + public ObjectResult DeleteAllForUser(string userId) + { + try + { + // Check if exist + _DeviceDatabaseService.RemoveForUser(userId); + + return new OkObjectResult(201); + } + catch (Exception ex) + { + return new ObjectResult(ex.Message) { StatusCode = 500 }; + } + } } } diff --git a/MyCore/Controllers/Devices/ProviderController.cs b/MyCore/Controllers/Devices/ProviderController.cs index 240d927..a8ea451 100644 --- a/MyCore/Controllers/Devices/ProviderController.cs +++ b/MyCore/Controllers/Devices/ProviderController.cs @@ -91,11 +91,14 @@ namespace MyCore.Controllers.Devices throw new KeyNotFoundException("User not found"); if (providerDTO == null) - throw new KeyNotFoundException("Provider is null"); + throw new KeyNotFoundException("Provider is null"); - ProviderDTO providerCreated = ProviderService.CreateOrUpdate(this._ProviderDatabaseService, userId, providerDTO, true); + if (_ProviderDatabaseService.AlreadyExistForUser(userId, providerDTO.Name)) + throw new ArgumentException("Provider already exists"); - return new OkObjectResult(providerCreated); + ProviderDTO providerCreated = ProviderService.CreateOrUpdate(this._ProviderDatabaseService, userId, providerDTO, true); + + return new OkObjectResult(providerCreated); } catch (InvalidOperationException ex) @@ -106,6 +109,10 @@ namespace MyCore.Controllers.Devices { return new BadRequestObjectResult(ex.Message) { StatusCode = 404 }; } + catch (ArgumentException ex) + { + return new BadRequestObjectResult(ex.Message) { StatusCode = 409 }; + } catch (Exception ex) { return new ObjectResult(ex.Message) { StatusCode = 500 }; diff --git a/MyCore/DTO/Common/DeviceType.cs b/MyCore/DTO/Common/DeviceType.cs new file mode 100644 index 0000000..6d260a8 --- /dev/null +++ b/MyCore/DTO/Common/DeviceType.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace MyCore.DTO.Common +{ + public enum DeviceType // TO BE Continued + { + Sensor = 1, + Actuator, + Camera, + Light, + Sound, + Plug, + Thermostat, + Valve, + Gateway + } +} diff --git a/MyCore/DTO/MyControlPanel/DeviceDTO.cs b/MyCore/DTO/MyControlPanel/DeviceDTO.cs index 978cd3d..b3f2b60 100644 --- a/MyCore/DTO/MyControlPanel/DeviceDTO.cs +++ b/MyCore/DTO/MyControlPanel/DeviceDTO.cs @@ -11,16 +11,24 @@ namespace MyCore.DTO.MyControlPanel { public string Id { get; set; } + public string UserId { get; set; } + public string Name { get; set; } public string Model { get; set; } + public DeviceType Type { get; set; } + public bool Status { get; set; } public ConnectionStatus ConnectionStatus { get; set; } public string LocationId { get; set; } + public string ProviderId { get; set; } + + public string ProviderName { get; set; } + public LocationDTO Location { get; set; } public DateTime LastStateDate { get; set; } @@ -34,10 +42,14 @@ namespace MyCore.DTO.MyControlPanel { public string Id { get; set; } + public string UserId { get; set; } + public string Name { get; set; } public string Model { get; set; } + public DeviceType Type { get; set; } + public string FirmwareVersion { get; set; } public int Port { get; set; } @@ -70,7 +82,9 @@ namespace MyCore.DTO.MyControlPanel public string ProviderId { get; set; } - public List Groups { get; set; } + public string ProviderName { get; set; } + + public List GroupIds { get; set; } public Dictionary Properties { get; set; } diff --git a/MyCore/Models/MyControlPanel/Database/Device.cs b/MyCore/Models/MyControlPanel/Database/Device.cs index e8a3882..bd7fcff 100644 --- a/MyCore/Models/MyControlPanel/Database/Device.cs +++ b/MyCore/Models/MyControlPanel/Database/Device.cs @@ -19,6 +19,10 @@ namespace MyCore.Models.MyControlPanel.Database [BsonRepresentation(BsonType.ObjectId)] public string Id { get; set; } + [BsonElement("UserId")] + [BsonRequired] + public string UserId { get; set; } + [BsonElement("Name")] [BsonRequired] public string Name { get; set; } @@ -38,6 +42,9 @@ namespace MyCore.Models.MyControlPanel.Database [BsonElement("Status")] public bool Status { get; set; } + [BsonElement("Type")] + public DeviceType Type { get; set; } + [BsonElement("ConnectionStatus")] public ConnectionStatus ConnectionStatus { get; set; } @@ -89,10 +96,13 @@ namespace MyCore.Models.MyControlPanel.Database return new DeviceSummaryDTO() { Id = Id, + UserId = UserId, Name = Name, Model = Model, + Type = Type, Status = Status, ConnectionStatus = ConnectionStatus, + ProviderId = ProviderId, LocationId = LocationId, // Check if correct way // Location = LastStateDate = LastStateDate, @@ -106,8 +116,10 @@ namespace MyCore.Models.MyControlPanel.Database return new DeviceDetailDTO() { Id = Id, + UserId = UserId, Name = Name, Model = Model, + Type = Type, Status = Status, Port = Port, FirmwareVersion = FirmwareVersion, @@ -122,7 +134,7 @@ namespace MyCore.Models.MyControlPanel.Database IpAddress = IpAddress, ServiceIdentification = ServiceIdentification, ProviderId = ProviderId, - Groups = GroupIds, + GroupIds = GroupIds, Properties = Properties, SupportedOperations = SupportedOperations, Battery = Battery, diff --git a/MyCore/Models/MyControlPanel/Database/Provider.cs b/MyCore/Models/MyControlPanel/Database/Provider.cs index 67f9fc6..08dca9c 100644 --- a/MyCore/Models/MyControlPanel/Database/Provider.cs +++ b/MyCore/Models/MyControlPanel/Database/Provider.cs @@ -45,6 +45,10 @@ namespace MyCore.Models.MyControlPanel.Database { Id = Id, Name = Name, + UserId = UserId, + /*Username = Username, + Password = Password, + ApiKey = ApiKey,*/ Active = Active }; } diff --git a/MyCore/Services/Devices/DeviceService.cs b/MyCore/Services/Devices/DeviceService.cs index d93005f..33f9004 100644 --- a/MyCore/Services/Devices/DeviceService.cs +++ b/MyCore/Services/Devices/DeviceService.cs @@ -16,7 +16,7 @@ namespace MyCore.Services.Devices public class DeviceService { - public static DeviceDetailDTO CreateOrUpdate(DeviceDatabaseService _DeviceDatabaseService, ProviderDatabaseService _ProviderDatabaseService, LocationDatabaseService _LocationDatabaseService, DeviceDetailDTO deviceDetailDTO, bool create) + public static DeviceDetailDTO CreateOrUpdate(DeviceDatabaseService _DeviceDatabaseService, ProviderDatabaseService _ProviderDatabaseService, LocationDatabaseService _LocationDatabaseService, string userId, DeviceDetailDTO deviceDetailDTO, bool create) { Device device; if (create) @@ -26,12 +26,14 @@ namespace MyCore.Services.Devices device = _DeviceDatabaseService.GetById(deviceDetailDTO.Id); } - if (_DeviceDatabaseService.IsAlreadyHere(deviceDetailDTO.IpAddress, deviceDetailDTO.Port) && create) + if (_DeviceDatabaseService.IsAlreadyHere(userId, deviceDetailDTO.ServiceIdentification, deviceDetailDTO.Model) && create) { return null; } - device.Name = deviceDetailDTO.Name; + device.UserId = userId; + device.Name = deviceDetailDTO.Name; + if (_ProviderDatabaseService.IsExist(deviceDetailDTO.ProviderId)) device.ProviderId = deviceDetailDTO.ProviderId; else @@ -44,14 +46,15 @@ namespace MyCore.Services.Devices device.Port = deviceDetailDTO.Port; device.Model = deviceDetailDTO.Model; + device.Type = deviceDetailDTO.Type; device.FirmwareVersion = deviceDetailDTO.FirmwareVersion; device.Status = deviceDetailDTO.Status; if (create) device.ConnectionStatus = ConnectionStatus.Unknown; else device.ConnectionStatus = deviceDetailDTO.ConnectionStatus; - device.Status = device.Status; - device.LocationId = device.LocationId; + device.Status = deviceDetailDTO.Status; + device.LocationId = deviceDetailDTO.LocationId; device.CreatedDate = DateTime.Now; device.UpdatedDate = DateTime.Now; @@ -60,11 +63,11 @@ namespace MyCore.Services.Devices device.ServiceIdentification = deviceDetailDTO.ServiceIdentification; device.Battery = deviceDetailDTO.Battery; device.BatteryStatus = deviceDetailDTO.BatteryStatus; - device.GroupIds = device.GroupIds; + device.GroupIds = deviceDetailDTO.GroupIds; // Todo structure Properties - device.Properties = device.Properties; + device.Properties = deviceDetailDTO.Properties; // Todo structure SupportedOperations - device.SupportedOperations = device.SupportedOperations; + device.SupportedOperations = deviceDetailDTO.SupportedOperations; if (create) return _DeviceDatabaseService.Create(device).ToDTO(); @@ -72,7 +75,7 @@ namespace MyCore.Services.Devices return _DeviceDatabaseService.Update(device.Id, device).ToDTO(); } - public async static Task> CreateFromProvider(DeviceDatabaseService _DeviceDatabaseService, ProviderDatabaseService _ProviderDatabaseService, LocationDatabaseService _LocationDatabaseService, Provider provider) + public async static Task> CreateFromProvider(DeviceDatabaseService _DeviceDatabaseService, ProviderDatabaseService _ProviderDatabaseService, LocationDatabaseService _LocationDatabaseService, string userId, Provider provider) { if (!ProviderService.IsProviderSupported(provider.Name)) throw new KeyNotFoundException("Provider is not yet supported"); @@ -84,15 +87,15 @@ namespace MyCore.Services.Devices { case "Arlo": List arloDevices = new ArloService(provider.Username, provider.Password).GetAllDevices(); - createdDevice = CreateArloDevices(_DeviceDatabaseService, _ProviderDatabaseService, _LocationDatabaseService, arloDevices, provider); + createdDevice = CreateArloDevices(_DeviceDatabaseService, _ProviderDatabaseService, _LocationDatabaseService, userId, arloDevices, provider); break; case "Meross": List merossDevices = new MerossService(provider.Username, provider.Password).GetMerossDevices(); - createdDevice = CreateMerossDevices(_DeviceDatabaseService, _ProviderDatabaseService, _LocationDatabaseService, merossDevices, provider); + createdDevice = CreateMerossDevices(_DeviceDatabaseService, _ProviderDatabaseService, _LocationDatabaseService, userId, merossDevices, provider); break; case "Yeelight": List yeelightDevices = await new YeelightService().GetDevices(); - createdDevice = CreateYeelightDevices(_DeviceDatabaseService, _ProviderDatabaseService, _LocationDatabaseService, yeelightDevices, provider); + createdDevice = CreateYeelightDevices(_DeviceDatabaseService, _ProviderDatabaseService, _LocationDatabaseService, userId, yeelightDevices, provider); break; } } @@ -108,7 +111,7 @@ namespace MyCore.Services.Devices return createdDevice; } - public static List CreateArloDevices(DeviceDatabaseService _DeviceDatabaseService, ProviderDatabaseService _ProviderDatabaseService, LocationDatabaseService _LocationDatabaseService, List arloDevices, Provider provider) + public static List CreateArloDevices(DeviceDatabaseService _DeviceDatabaseService, ProviderDatabaseService _ProviderDatabaseService, LocationDatabaseService _LocationDatabaseService, string userId, List arloDevices, Provider provider) { List createdArloDevices = new List(); @@ -116,41 +119,49 @@ namespace MyCore.Services.Devices { DeviceDetailDTO deviceDetailDTO = new DeviceDetailDTO(); deviceDetailDTO.Name = arlo.deviceName; - deviceDetailDTO.IpAddress = arlo.deviceId; // TO CHECK deviceDetailDTO.ServiceIdentification = arlo.deviceId; deviceDetailDTO.ProviderId = provider.Id; - deviceDetailDTO.ConnectionStatus = arlo.connectivity.connected ? ConnectionStatus.Connected : ConnectionStatus.Unknown; - deviceDetailDTO.Status = arlo.connectivity.connected ? true : false; // TODO STATE - deviceDetailDTO.Model = arlo.deviceType; - //deviceDetailDTO.Port = arlo.; // TO CHECK - deviceDetailDTO.FirmwareVersion = arlo.interfaceVersion; // TODO - /*Dictionary properties = new Dictionary(); - foreach (var property in arlo.properties) + if (arlo.connectivity != null) { - properties.Add(property.Key, property.Value); - }*/ // TODO - // deviceDetailDTO.Properties = properties; - - // TODO ! - List supportedOperationsDTO = new List(); - supportedOperationsDTO.Add(arlo.lastImageUploaded.GetType().Name + " : " + arlo.lastImageUploaded); - supportedOperationsDTO.Add(arlo.presignedLastImageUrl.GetType().Name + " : " + arlo.presignedLastImageUrl); - supportedOperationsDTO.Add(arlo.presignedFullFrameSnapshotUrl.GetType().Name + " : " + arlo.presignedFullFrameSnapshotUrl); - supportedOperationsDTO.Add(arlo.presignedSnapshotUrl.GetType().Name + " : " + arlo.presignedSnapshotUrl); - deviceDetailDTO.SupportedOperations = supportedOperationsDTO; - + deviceDetailDTO.ConnectionStatus = arlo.connectivity.connected ? ConnectionStatus.Connected : ConnectionStatus.Unknown; + deviceDetailDTO.Status = arlo.connectivity.connected ? true : false; // TODO STATE + } + else + deviceDetailDTO.ConnectionStatus = ConnectionStatus.Unknown; + + deviceDetailDTO.Model = arlo.modelId; + deviceDetailDTO.FirmwareVersion = arlo.interfaceVersion; // TODO + switch (arlo.deviceType) + { + case "camera": + deviceDetailDTO.Type = DeviceType.Camera; + Dictionary properties = new Dictionary(); + properties.Add("lastImageUploaded", arlo.lastImageUploaded); + properties.Add("presignedLastImageUrl", arlo.presignedLastImageUrl); + properties.Add("presignedFullFrameSnapshotUrl", arlo.presignedFullFrameSnapshotUrl); + properties.Add("presignedSnapshotUrl", arlo.presignedSnapshotUrl); + deviceDetailDTO.Properties = properties; + break; + case "siren": + deviceDetailDTO.Type = DeviceType.Sound; + break; + case "basestation": + deviceDetailDTO.Type = DeviceType.Gateway; + break; + } + deviceDetailDTO.MeansOfCommunications = new List(); - deviceDetailDTO.MeansOfCommunications.Add(MeansOfCommunication.Wifi); // TO CHECK + deviceDetailDTO.MeansOfCommunications.Add(MeansOfCommunication.Wifi); // To check deviceDetailDTO.CreatedDate = DateTime.Now; deviceDetailDTO.UpdatedDate = DateTime.Now; - createdArloDevices.Add(CreateOrUpdate(_DeviceDatabaseService, _ProviderDatabaseService, _LocationDatabaseService, deviceDetailDTO, true)); + createdArloDevices.Add(CreateOrUpdate(_DeviceDatabaseService, _ProviderDatabaseService, _LocationDatabaseService, userId, deviceDetailDTO, true)); } return createdArloDevices; } - public static List CreateMerossDevices(DeviceDatabaseService _DeviceDatabaseService, ProviderDatabaseService _ProviderDatabaseService, LocationDatabaseService _LocationDatabaseService, List merossDevices, Provider provider) + public static List CreateMerossDevices(DeviceDatabaseService _DeviceDatabaseService, ProviderDatabaseService _ProviderDatabaseService, LocationDatabaseService _LocationDatabaseService, string userId, List merossDevices, Provider provider) { List createdMerossDevices = new List(); @@ -158,12 +169,26 @@ namespace MyCore.Services.Devices { DeviceDetailDTO deviceDetailDTO = new DeviceDetailDTO(); deviceDetailDTO.Name = meross.devName; - deviceDetailDTO.IpAddress = meross.uuid; // TO CHECK deviceDetailDTO.ServiceIdentification = meross.uuid; deviceDetailDTO.ProviderId = provider.Id; deviceDetailDTO.ConnectionStatus = meross.onlineStatus == 1 ? ConnectionStatus.Connected : ConnectionStatus.Disconnected; // deviceDetailDTO.Status = meross. ? true : false; // TODO STATE deviceDetailDTO.Model = meross.deviceType; + switch (deviceDetailDTO.Model) // TODO + { + case "mss425f": + deviceDetailDTO.Type = DeviceType.Plug; + break; + case "mss310": + deviceDetailDTO.Type = DeviceType.Actuator; + break; + case "msh300": + deviceDetailDTO.Type = DeviceType.Gateway; + break; + default: + deviceDetailDTO.Type = DeviceType.Actuator; + break; + } //deviceDetailDTO.Port = arlo.; // TO CHECK deviceDetailDTO.FirmwareVersion = meross.firmwareVersion; // TODO /*Dictionary properties = new Dictionary(); @@ -177,7 +202,8 @@ namespace MyCore.Services.Devices Dictionary properties = new Dictionary(); foreach (var property in meross.channels) { - properties.Add(property.devName, property.type); + if (property.type != null) + properties.Add(property.devName, property.type); } // deviceDetailDTO.SupportedOperations = supportedOperationsDTO; TODO @@ -185,13 +211,13 @@ namespace MyCore.Services.Devices deviceDetailDTO.MeansOfCommunications.Add(MeansOfCommunication.Wifi); // TO CHECK deviceDetailDTO.CreatedDate = DateTime.Now; deviceDetailDTO.UpdatedDate = DateTime.Now; - createdMerossDevices.Add(CreateOrUpdate(_DeviceDatabaseService, _ProviderDatabaseService, _LocationDatabaseService, deviceDetailDTO, true)); + createdMerossDevices.Add(CreateOrUpdate(_DeviceDatabaseService, _ProviderDatabaseService, _LocationDatabaseService, userId, deviceDetailDTO, true)); } return createdMerossDevices; } - public static List CreateYeelightDevices(DeviceDatabaseService _DeviceDatabaseService, ProviderDatabaseService _ProviderDatabaseService, LocationDatabaseService _LocationDatabaseService, List yeelightDevices, Provider provider) + public static List CreateYeelightDevices(DeviceDatabaseService _DeviceDatabaseService, ProviderDatabaseService _ProviderDatabaseService, LocationDatabaseService _LocationDatabaseService, string userId, List yeelightDevices, Provider provider) { List createdYeelightDevices = new List(); @@ -200,10 +226,12 @@ namespace MyCore.Services.Devices DeviceDetailDTO deviceDetailDTO = new DeviceDetailDTO(); deviceDetailDTO.Name = light.Name; deviceDetailDTO.IpAddress = light.Hostname; + deviceDetailDTO.ServiceIdentification = light.Id; deviceDetailDTO.ProviderId = provider.Id; deviceDetailDTO.ConnectionStatus = ConnectionStatus.Connected; deviceDetailDTO.Status = false; deviceDetailDTO.Model = light.Model.ToString(); + deviceDetailDTO.Type = DeviceType.Light; // TO CHECK deviceDetailDTO.Port = light.Port; deviceDetailDTO.FirmwareVersion = light.FirmwareVersion; Dictionary properties = new Dictionary(); @@ -222,7 +250,7 @@ namespace MyCore.Services.Devices deviceDetailDTO.MeansOfCommunications.Add(MeansOfCommunication.Wifi); deviceDetailDTO.CreatedDate = DateTime.Now; deviceDetailDTO.UpdatedDate = DateTime.Now; - createdYeelightDevices.Add(CreateOrUpdate(_DeviceDatabaseService, _ProviderDatabaseService, _LocationDatabaseService, deviceDetailDTO, true)); + createdYeelightDevices.Add(CreateOrUpdate(_DeviceDatabaseService, _ProviderDatabaseService, _LocationDatabaseService, userId, deviceDetailDTO, true)); } return createdYeelightDevices; diff --git a/MyCore/Services/Devices/SupportedDevices/MerossService.cs b/MyCore/Services/Devices/SupportedDevices/MerossService.cs index 8ff497b..7ee7335 100644 --- a/MyCore/Services/Devices/SupportedDevices/MerossService.cs +++ b/MyCore/Services/Devices/SupportedDevices/MerossService.cs @@ -28,7 +28,7 @@ namespace MyCore.Services private string _logUrl = $"{_merossUrl}/v1/log/user"; private string _devList = $"{_merossUrl}/v1/Device/devList"; - private string username = "thomas.fransolet@hotmail.be"; + private static string username = "thomas.fransolet@hotmail.be"; private static string password = "Coconuts07"; private static ResultToken resultToken; diff --git a/MyCore/Services/MyControlPanel/Database/DeviceDatabaseService.cs b/MyCore/Services/MyControlPanel/Database/DeviceDatabaseService.cs index 3228184..6320f9c 100644 --- a/MyCore/Services/MyControlPanel/Database/DeviceDatabaseService.cs +++ b/MyCore/Services/MyControlPanel/Database/DeviceDatabaseService.cs @@ -20,9 +20,9 @@ namespace MyCore.Services.MyControlPanel var database = client.GetDatabase("MyCoreDb"); _Devices = database.GetCollection("Devices"); } - public List GetAll() + public List GetAll(string userId) { - return _Devices.Find(d => true).ToList(); + return _Devices.Find(d => d.UserId == userId).ToList(); } public Device GetById(string id) @@ -35,9 +35,9 @@ namespace MyCore.Services.MyControlPanel return _Devices.Find(d => d.Id == id).FirstOrDefault() != null ? true : false; } - public bool IsAlreadyHere(string ipAddress, int port) + public bool IsAlreadyHere(string userId, string serviceIdentification, string model) { - return _Devices.Find(d => d.IpAddress == ipAddress && d.Port == port).FirstOrDefault() != null ? true : false; + return _Devices.Find(d => d.UserId == userId && d.ServiceIdentification == serviceIdentification && d.Model == model).FirstOrDefault() != null ? true : false; } public Device Create(Device device) @@ -56,5 +56,10 @@ namespace MyCore.Services.MyControlPanel { _Devices.DeleteOne(device => device.Id == id); } + + public void RemoveForUser(string userId) + { + _Devices.DeleteMany(device => device.UserId == userId); + } } } diff --git a/MyCore/Services/MyControlPanel/Database/ProviderDatabaseService.cs b/MyCore/Services/MyControlPanel/Database/ProviderDatabaseService.cs index 4b4a843..85ff5ea 100644 --- a/MyCore/Services/MyControlPanel/Database/ProviderDatabaseService.cs +++ b/MyCore/Services/MyControlPanel/Database/ProviderDatabaseService.cs @@ -29,6 +29,11 @@ namespace MyCore.Services.MyControlPanel return _Providers.Find(p => p.Id == id && p.UserId == userId).FirstOrDefault(); } + public bool AlreadyExistForUser(string userId, string name) + { + return _Providers.Find(p => p.UserId == userId && p.Name == name).FirstOrDefault() != null ? true : false; ; + } + public Provider GetByName(string name) { return _Providers.Find(p => p.Name == name).FirstOrDefault();