using Microsoft.AspNetCore.Mvc; using MyCore.DTO.Common; using MyCore.DTO.MyControlPanel; using MyCore.Models.MyControlPanel; using MyCore.Services.MyControlPanel; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace MyCore.Services.Devices { public class DeviceService { private static DeviceDatabaseService _DeviceDatabaseService; private static ProviderDatabaseService _ProviderDatabaseService; private static LocationDatabaseService _LocationDatabaseService; public static DeviceDetailDTO CreateOrUpdate(DeviceDetailDTO deviceDetailDTO, bool create) { Device device; if (create) device = new Device(); else { device = _DeviceDatabaseService.GetById(deviceDetailDTO.Id); } device.Name = deviceDetailDTO.Name; if (_ProviderDatabaseService.IsExist(deviceDetailDTO.ProviderId)) device.ProviderId = deviceDetailDTO.ProviderId; else throw new KeyNotFoundException("Provider does not exist"); if (_LocationDatabaseService.IsExist(deviceDetailDTO.LocationId)) device.LocationId = deviceDetailDTO.LocationId; else throw new KeyNotFoundException("Location does not exist"); device.ConnectionStatus = ConnectionStatus.Unknown; device.CreatedDate = DateTime.Now; device.UpdatedDate = DateTime.Now; device.MeansOfCommunications = deviceDetailDTO.MeansOfCommunications; device.IpAddress = deviceDetailDTO.IpAddress; device.Battery = deviceDetailDTO.Battery; device.BatteryStatus = deviceDetailDTO.BatteryStatus; device.GroupIds = device.GroupIds; // Todo structure informations device.Information = device.Information; if (create) return _DeviceDatabaseService.Create(device).ToDTO(); else return _DeviceDatabaseService.Update(device.Id, device).ToDTO(); } public static List CreateFromProvider(string providerId) { // TODO ! Device device = new Device(); Provider provider = new Provider(); if (_ProviderDatabaseService.IsExist(providerId)) provider = _ProviderDatabaseService.GetById(providerId); else throw new KeyNotFoundException("Provider does not exist"); switch (provider.Name) { case "Arlo": break; case "Meross": break; case "Yeelight": break; default: throw new KeyNotFoundException("Provider is not yet supported"); } List createdDevice = new List(); return createdDevice; } } }