using MyCore.Interfaces.DTO; using MyCore.Interfaces.Models; using MyCore.Services.MyControlPanel; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace MyCore.Service.Services { public class AutomationService { public static AutomationDTO CreateOrUpdate(AutomationDatabaseService _AutomationDatabaseService, string userId, AutomationCreateOrUpdateDetailDTO automationCreateOrUpdateDetailDTO, bool create) { Automation automation; if (create) automation = new Automation(); else { automation = _AutomationDatabaseService.GetById(automationCreateOrUpdateDetailDTO.Id); } automation.UserId = userId; automation.Name = automationCreateOrUpdateDetailDTO.Name; automation.CreatedDate = create ? DateTime.Now : automation.CreatedDate; automation.UpdatedDate = DateTime.Now; automation.Triggers = automationCreateOrUpdateDetailDTO.Triggers; automation.Conditions = automationCreateOrUpdateDetailDTO.Conditions; automation.Actions = automationCreateOrUpdateDetailDTO.Actions; var allDeviceIds = new List(); allDeviceIds.AddRange(automation.Triggers.Select(t => t.DeviceId)); allDeviceIds.AddRange(automation.Conditions.Select(t => t.DeviceId)); allDeviceIds.AddRange(automation.Actions.Select(t => t.DeviceId)); automation.DevicesIds = allDeviceIds; if (create) return _AutomationDatabaseService.Create(automation).ToDTO(); else return _AutomationDatabaseService.Update(automation.Id, automation).ToDTO(); } } }