Former-commit-id: 11d028055dc9d7897f94489569d61f20cc741bb4
TangShanKaiPing
wanggang 6 years ago
parent 703df4f7bc
commit 4492d21c45

@ -32,14 +32,9 @@ namespace Infrastructure.Extensions
return (T)(Activator.CreateInstance(typeof(T)).InjectFrom<NullableInjection>(source)); return (T)(Activator.CreateInstance(typeof(T)).InjectFrom<NullableInjection>(source));
} }
public static T Update<T>(this T target, object source) public static T Update<T>(this T target, object source, params string[] skips)
{ {
return (T)target.InjectFrom(new PlainInjection(null), source); return (T)target.InjectFrom(new PlainInjection(skips), source);
}
public static T UpdateWithoutId<T>(this T target, object source)
{
return (T)target.InjectFrom(new PlainInjection("Id"), source);
} }
} }

@ -18,12 +18,12 @@ namespace Application.Domain.Entities
/// <summary> /// <summary>
/// 场景Id /// 场景Id
/// </summary> /// </summary>
public Guid SenceId { get; set; } public Guid SceneId { get; set; }
/// <summary> /// <summary>
/// 场景 /// 场景
/// </summary> /// </summary>
public Sence Sence { get; set; } public Scene Scene { get; set; }
/// <summary> /// <summary>
/// API Id /// API Id
@ -34,5 +34,15 @@ namespace Application.Domain.Entities
/// API /// API
/// </summary> /// </summary>
public Api Api { get; set; } public Api Api { get; set; }
/// <summary>
/// API Id
/// </summary>
public Guid DeviceId { get; set; }
/// <summary>
/// API
/// </summary>
public Device Device { get; set; }
} }
} }

@ -75,6 +75,9 @@ namespace Application.Domain.Entities
[Display(Name = "数据")] [Display(Name = "数据")]
public List<Data> Data { get; set; } = new List<Data>(); public List<Data> Data { get; set; } = new List<Data>();
[Display(Name = "命令")]
public List<Command> Commands { get; set; } = new List<Command>();
public Data GetData(string key) public Data GetData(string key)
{ {
return this.Data.FirstOrDefault(o => o.Key == key); return this.Data.FirstOrDefault(o => o.Key == key);

@ -28,6 +28,6 @@ namespace Application.Domain.Entities
/// <summary> /// <summary>
/// 场景 /// 场景
/// </summary> /// </summary>
public List<Sence> Sences { get; set; } = new List<Sence>(); public List<Scene> Scenes { get; set; } = new List<Scene>();
} }
} }

@ -5,20 +5,19 @@ using Infrastructure.Domain;
namespace Application.Domain.Entities namespace Application.Domain.Entities
{ {
/// <summary>
/// 场景
/// </summary>
[Display(Name = "场景")] [Display(Name = "场景")]
public class Sence : BaseEntity, IDisableRemove public class Scene : BaseEntity, IDisableRemove
{ {
/// <summary> [Display(Name = "名称")]
/// 名称
/// </summary>
public string Name { get; set; } public string Name { get; set; }
/// <summary> [Display(Name = "启用定时")]
/// 节点Id public bool Timed { get; set; }
/// </summary>
[Display(Name = "定时表达式")]
public string Corn { get; set; }
[Display(Name = "节点Id")]
public Guid NodeId { get; set; } public Guid NodeId { get; set; }
/// <summary> /// <summary>

@ -7,6 +7,6 @@ namespace Application.Models
{ {
public Node Node { get; set; } = new Node(); public Node Node { get; set; } = new Node();
public List<Device> Devices { get; set; } = new List<Device>(); public List<Device> Devices { get; set; } = new List<Device>();
public List<Sence> Sences { get; set; } = new List<Sence>(); public List<Scene> Scenes { get; set; } = new List<Scene>();
} }
} }

@ -150,8 +150,8 @@ namespace Application.Services
{ {
using (var scope = applicationServices.CreateScope()) using (var scope = applicationServices.CreateScope())
{ {
var repo = scope.ServiceProvider.GetService<IRepository<Sence>>(); var repo = scope.ServiceProvider.GetService<IRepository<Scene>>();
var entity = new Sence().From(model); var entity = new Scene().From(model);
repo.Add(entity); repo.Add(entity);
if (repo.SaveChanges() > 0) if (repo.SaveChanges() > 0)
{ {
@ -176,7 +176,7 @@ namespace Application.Services
{ {
using (var scope = applicationServices.CreateScope()) using (var scope = applicationServices.CreateScope())
{ {
var repo = scope.ServiceProvider.GetService<IRepository<Sence>>(); var repo = scope.ServiceProvider.GetService<IRepository<Scene>>();
var entity = repo.Table().FirstOrDefault(o => o.Id == model.Id); var entity = repo.Table().FirstOrDefault(o => o.Id == model.Id);
entity.From(model); entity.From(model);
if (repo.SaveChanges() > 0) if (repo.SaveChanges() > 0)
@ -202,7 +202,7 @@ namespace Application.Services
{ {
using (var scope = applicationServices.CreateScope()) using (var scope = applicationServices.CreateScope())
{ {
var repo = scope.ServiceProvider.GetService<IRepository<Sence>>(); var repo = scope.ServiceProvider.GetService<IRepository<Scene>>();
var entity = repo.Table().FirstOrDefault(o => o.Id == id); var entity = repo.Table().FirstOrDefault(o => o.Id == id);
if (entity != null) if (entity != null)
{ {
@ -367,7 +367,7 @@ namespace Application.Services
using (var scope = applicationServices.CreateScope()) using (var scope = applicationServices.CreateScope())
{ {
var httpClientFactory = scope.ServiceProvider.GetService<IHttpClientFactory>(); var httpClientFactory = scope.ServiceProvider.GetService<IHttpClientFactory>();
var senceRepo = scope.ServiceProvider.GetService<IRepository<Sence>>(); var senceRepo = scope.ServiceProvider.GetService<IRepository<Scene>>();
var sence = senceRepo.ReadOnlyTable() var sence = senceRepo.ReadOnlyTable()
.Include(o => o.Commands) .Include(o => o.Commands)
.ThenInclude(o => o.Api) .ThenInclude(o => o.Api)
@ -507,7 +507,7 @@ namespace Application.Services
Console.WriteLine("PushSenceAndDevice"); Console.WriteLine("PushSenceAndDevice");
var schoolUrl = $"http://{configuration["notify:host"]}/Notify/Update"; var schoolUrl = $"http://{configuration["notify:host"]}/Notify/Update";
var nodeRepo = scope.ServiceProvider.GetService<IRepository<Node>>(); var nodeRepo = scope.ServiceProvider.GetService<IRepository<Node>>();
var node = nodeRepo.ReadOnlyTable().Include(o => o.Sences).Include(o => o.Devices).FirstOrDefault(); var node = nodeRepo.ReadOnlyTable().Include(o => o.Scenes).Include(o => o.Devices).FirstOrDefault();
var data = node.ToJson(); var data = node.ToJson();
var httpClientFactory = scope.ServiceProvider.GetService<IHttpClientFactory>(); var httpClientFactory = scope.ServiceProvider.GetService<IHttpClientFactory>();
var task = httpClientFactory.CreateClient().PostAsync(schoolUrl, new StringContent(data)); var task = httpClientFactory.CreateClient().PostAsync(schoolUrl, new StringContent(data));

@ -15,13 +15,13 @@ namespace IoTShared.Controllers
{ {
private readonly ILogger<AjaxController> _logger; private readonly ILogger<AjaxController> _logger;
private readonly IRepository<Node> _nodeRepo; private readonly IRepository<Node> _nodeRepo;
private readonly IRepository<Sence> _senceRepo; private readonly IRepository<Scene> _senceRepo;
private readonly IRepository<Device> _deviceRepo; private readonly IRepository<Device> _deviceRepo;
private readonly IRepository<Api> _apiRepo; private readonly IRepository<Api> _apiRepo;
public AjaxController(ILogger<AjaxController> logger, public AjaxController(ILogger<AjaxController> logger,
IRepository<Node> nodeRepo, IRepository<Node> nodeRepo,
IRepository<Sence> senceRepo, IRepository<Scene> senceRepo,
IRepository<Device> deviceRepo, IRepository<Device> deviceRepo,
IRepository<Api> apiRepo) IRepository<Api> apiRepo)
{ {

@ -90,6 +90,9 @@ namespace IoT.UI.Shard
modelBuilder.Entity<Device>().HasOne(o => o.Node).WithMany(o => o.Devices).HasForeignKey(o => o.NodeId); modelBuilder.Entity<Device>().HasOne(o => o.Node).WithMany(o => o.Devices).HasForeignKey(o => o.NodeId);
modelBuilder.Entity<Data>().HasOne(o => o.Device).WithMany(o => o.Data).HasForeignKey(o => o.DeviceId); modelBuilder.Entity<Data>().HasOne(o => o.Device).WithMany(o => o.Data).HasForeignKey(o => o.DeviceId);
modelBuilder.Entity<Parameter>().HasOne(o => o.Api).WithMany(o => o.Parameters).HasForeignKey(o => o.ApiId); modelBuilder.Entity<Parameter>().HasOne(o => o.Api).WithMany(o => o.Parameters).HasForeignKey(o => o.ApiId);
modelBuilder.Entity<Command>().HasOne(o => o.Scene).WithMany(o => o.Commands).HasForeignKey(o => o.SceneId);
modelBuilder.Entity<Command>().HasOne(o => o.Api).WithMany(o => o.Commands).HasForeignKey(o => o.ApiId);
modelBuilder.Entity<Command>().HasOne(o => o.Device).WithMany(o => o.Commands).HasForeignKey(o => o.DeviceId);
} }
public override void Seed(DbContext dbContext, IServiceProvider serviceProvider, IConfiguration configuration) public override void Seed(DbContext dbContext, IServiceProvider serviceProvider, IConfiguration configuration)

@ -21,14 +21,14 @@ namespace IoTNode.Areas.Admin.Controllers
public class CommandController : CrudController<Command, PagedListModel<DisplayCommandModel>, DisplayCommandModel, EditCommandModel> public class CommandController : CrudController<Command, PagedListModel<DisplayCommandModel>, DisplayCommandModel, EditCommandModel>
{ {
private readonly IRepository<Node> _nodeRepo; private readonly IRepository<Node> _nodeRepo;
private readonly IRepository<Sence> _senceRepo; private readonly IRepository<Scene> _senceRepo;
private readonly IRepository<Api> _apiRepo; private readonly IRepository<Api> _apiRepo;
private readonly IRepository<Command> _repo; private readonly IRepository<Command> _repo;
private readonly AjaxController _ajax; private readonly AjaxController _ajax;
private readonly INodeService _nodeService; private readonly INodeService _nodeService;
public CommandController(IRepository<Node> nodeRepo, public CommandController(IRepository<Node> nodeRepo,
IRepository<Sence> senceRepo, IRepository<Scene> senceRepo,
IRepository<Api> apiRepo, IRepository<Api> apiRepo,
IRepository<Command> repo, IRepository<Command> repo,
AjaxController ajax, AjaxController ajax,
@ -85,7 +85,7 @@ namespace IoTNode.Areas.Admin.Controllers
public override IQueryable<Command> Include(IQueryable<Command> query) public override IQueryable<Command> Include(IQueryable<Command> query)
{ {
return query.Include(o => o.Sence).Include(o => o.Api).ThenInclude(o => o.Device).ThenInclude(o => o.Node); return query.Include(o => o.Scene).Include(o => o.Api).ThenInclude(o => o.Device).ThenInclude(o => o.Node);
} }
public override void ToDisplayModel(Command entity, DisplayCommandModel model) public override void ToDisplayModel(Command entity, DisplayCommandModel model)
@ -93,7 +93,7 @@ namespace IoTNode.Areas.Admin.Controllers
model.NodeId = entity.Api.Device.Node.Name; model.NodeId = entity.Api.Device.Node.Name;
model.DeviceId = entity.Api.Device.DisplayName; model.DeviceId = entity.Api.Device.DisplayName;
model.ApiId = entity.Api.Name; model.ApiId = entity.Api.Name;
model.SenceId = entity.Sence.Name; model.SenceId = entity.Scene.Name;
} }
public override void ToModel(Command entity, EditCommandModel model) public override void ToModel(Command entity, EditCommandModel model)

@ -17,14 +17,14 @@ namespace IoTNode.Areas.Admin.Controllers
{ {
[Authorize] [Authorize]
[Area(nameof(Admin))] [Area(nameof(Admin))]
public class SenceController : CrudController<Sence, PagedListModel<DisplaySenceModel>, DisplaySenceModel, EditSenceModel> public class SenceController : CrudController<Scene, PagedListModel<DisplaySenceModel>, DisplaySenceModel, EditSenceModel>
{ {
private readonly IRepository<Node> _nodeRepo; private readonly IRepository<Node> _nodeRepo;
private readonly IRepository<Sence> _repo; private readonly IRepository<Scene> _repo;
private readonly AjaxController _ajax; private readonly AjaxController _ajax;
private readonly INodeService _nodeService; private readonly INodeService _nodeService;
public SenceController(IRepository<Node> nodeRepo, IRepository<Sence> repo, AjaxController ajax, INodeService nodeService) : base(repo) public SenceController(IRepository<Node> nodeRepo, IRepository<Scene> repo, AjaxController ajax, INodeService nodeService) : base(repo)
{ {
this._repo = repo; this._repo = repo;
this._nodeRepo = nodeRepo; this._nodeRepo = nodeRepo;
@ -32,17 +32,17 @@ namespace IoTNode.Areas.Admin.Controllers
this._nodeService = nodeService; this._nodeService = nodeService;
} }
public override IQueryable<Sence> Include(IQueryable<Sence> query) public override IQueryable<Scene> Include(IQueryable<Scene> query)
{ {
return query.Include(o => o.Node); return query.Include(o => o.Node);
} }
public override void ToDisplayModel(Sence entity, DisplaySenceModel model) public override void ToDisplayModel(Scene entity, DisplaySenceModel model)
{ {
model.NodeId = entity.Node.Name; model.NodeId = entity.Node.Name;
} }
public override void ToModel(Sence entity, EditSenceModel model) public override void ToModel(Scene entity, EditSenceModel model)
{ {
ViewData.SelectList(o => model.NodeId, () => this._ajax.GetNodeSelectList(model.NodeId)); ViewData.SelectList(o => model.NodeId, () => this._ajax.GetNodeSelectList(model.NodeId));
base.ToModel(entity, model); base.ToModel(entity, model);

@ -64,7 +64,7 @@ namespace IoTCenter.Controllers
{ {
//var userName = this._jwtHelper.GetPayload(token)["UserName"].ToString(); //var userName = this._jwtHelper.GetPayload(token)["UserName"].ToString();
var model = this._nodeRepo.ReadOnlyTable() var model = this._nodeRepo.ReadOnlyTable()
.Include(o => o.Sences) .Include(o => o.Scenes)
.Include(o => o.Devices).ThenInclude(o => o.Data) .Include(o => o.Devices).ThenInclude(o => o.Data)
.FirstOrDefault(o => o.Number == number); .FirstOrDefault(o => o.Number == number);
return Json(model, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }); return Json(model, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore });

@ -17,13 +17,13 @@ namespace IoTNode.Controllers
private readonly ILogger<CommandController> _logger; private readonly ILogger<CommandController> _logger;
private readonly IHttpClientFactory _httpClientFactory; private readonly IHttpClientFactory _httpClientFactory;
private readonly IRepository<Device> _deviceRepo; private readonly IRepository<Device> _deviceRepo;
private readonly IRepository<Sence> _senceRepo; private readonly IRepository<Scene> _senceRepo;
private readonly INodeService _nodeService; private readonly INodeService _nodeService;
public CommandController(ILogger<CommandController> logger, public CommandController(ILogger<CommandController> logger,
IHttpClientFactory httpClientFactory, IHttpClientFactory httpClientFactory,
IRepository<Device> deviceRepo, IRepository<Device> deviceRepo,
IRepository<Sence> senceRepo, IRepository<Scene> senceRepo,
INodeService nodeService) INodeService nodeService)
{ {
this._logger = logger; this._logger = logger;

@ -36,7 +36,7 @@ namespace IoTNode.Controllers
public IActionResult GetNode(Guid id) public IActionResult GetNode(Guid id)
{ {
var model = this._nodeRepo.ReadOnlyTable() var model = this._nodeRepo.ReadOnlyTable()
.Include(o => o.Sences) .Include(o => o.Scenes)
.Include(o => o.Devices).ThenInclude(o => o.Data) .Include(o => o.Devices).ThenInclude(o => o.Data)
.Include(o => o.Devices).ThenInclude(o => o.Apis).ThenInclude(o => o.Parameters) .Include(o => o.Devices).ThenInclude(o => o.Apis).ThenInclude(o => o.Parameters)
.FirstOrDefault(o => o.Id == id); .FirstOrDefault(o => o.Id == id);

@ -26,7 +26,7 @@ namespace IoTNode.Controllers
private readonly IHubContext<PageHub> _pageHubContext; private readonly IHubContext<PageHub> _pageHubContext;
private readonly IRepository<Node> _nodeRepo; private readonly IRepository<Node> _nodeRepo;
private readonly IRepository<Device> _deviceRepo; private readonly IRepository<Device> _deviceRepo;
private readonly IRepository<Sence> _senceRepo; private readonly IRepository<Scene> _senceRepo;
public NotifyController(ILogger<NotifyController> logger, public NotifyController(ILogger<NotifyController> logger,
IConfiguration configuration, IConfiguration configuration,
@ -35,7 +35,7 @@ namespace IoTNode.Controllers
IHubContext<PageHub> pageHubContext, IHubContext<PageHub> pageHubContext,
IRepository<Node> nodeRepo, IRepository<Node> nodeRepo,
IRepository<Device> deviceRepo, IRepository<Device> deviceRepo,
IRepository<Sence> senceRepo) IRepository<Scene> senceRepo)
{ {
this._logger = logger; this._logger = logger;
this._configuration = configuration; this._configuration = configuration;

@ -109,8 +109,8 @@ namespace IoTNode
modelBuilder.Entity<Data>().HasOne(o => o.Device).WithMany(o => o.Data).HasForeignKey(o => o.DeviceId); modelBuilder.Entity<Data>().HasOne(o => o.Device).WithMany(o => o.Data).HasForeignKey(o => o.DeviceId);
modelBuilder.Entity<Api>().HasOne(o => o.Device).WithMany(o => o.Apis).HasForeignKey(o => o.DeviceId); modelBuilder.Entity<Api>().HasOne(o => o.Device).WithMany(o => o.Apis).HasForeignKey(o => o.DeviceId);
modelBuilder.Entity<Parameter>().HasOne(o => o.Api).WithMany(o => o.Parameters).HasForeignKey(o => o.ApiId); modelBuilder.Entity<Parameter>().HasOne(o => o.Api).WithMany(o => o.Parameters).HasForeignKey(o => o.ApiId);
modelBuilder.Entity<Sence>().HasOne(o => o.Node).WithMany(o => o.Sences).HasForeignKey(o => o.NodeId); modelBuilder.Entity<Scene>().HasOne(o => o.Node).WithMany(o => o.Scenes).HasForeignKey(o => o.NodeId);
modelBuilder.Entity<Command>().HasOne(o => o.Sence).WithMany(o => o.Commands).HasForeignKey(o => o.SenceId); modelBuilder.Entity<Command>().HasOne(o => o.Scene).WithMany(o => o.Commands).HasForeignKey(o => o.SceneId);
modelBuilder.Entity<Node>().HasIndex(o => o.Number).IsUnique(); modelBuilder.Entity<Node>().HasIndex(o => o.Number).IsUnique();
modelBuilder.Entity<Device>().HasIndex(o => o.Number).IsUnique(); modelBuilder.Entity<Device>().HasIndex(o => o.Number).IsUnique();
modelBuilder.Entity<Data>().HasIndex(o => new { o.DeviceId, o.Key }).IsUnique(); modelBuilder.Entity<Data>().HasIndex(o => new { o.DeviceId, o.Key }).IsUnique();

@ -19,14 +19,14 @@ namespace IoTCenter.Areas.Admin.Controllers
{ {
[Authorize] [Authorize]
[Area(nameof(Admin))] [Area(nameof(Admin))]
public class SenceController : CrudController<Sence, PagedListModel<DisplaySenceModel>, DisplaySenceModel, EditSenceModel> public class SenceController : CrudController<Scene, PagedListModel<DisplaySenceModel>, DisplaySenceModel, EditSenceModel>
{ {
private readonly IRepository<Node> _nodeRepo; private readonly IRepository<Node> _nodeRepo;
private readonly IRepository<Sence> _repo; private readonly IRepository<Scene> _repo;
private readonly AjaxController _ajax; private readonly AjaxController _ajax;
private readonly IHubContext<PageHub> _pageHubContext; private readonly IHubContext<PageHub> _pageHubContext;
public SenceController(IRepository<Node> nodeRepo, IRepository<Sence> repo, AjaxController ajax, IHubContext<PageHub> pageHubContext) : base(repo) public SenceController(IRepository<Node> nodeRepo, IRepository<Scene> repo, AjaxController ajax, IHubContext<PageHub> pageHubContext) : base(repo)
{ {
this._repo = repo; this._repo = repo;
this._nodeRepo = nodeRepo; this._nodeRepo = nodeRepo;
@ -34,12 +34,12 @@ namespace IoTCenter.Areas.Admin.Controllers
this._pageHubContext = pageHubContext; this._pageHubContext = pageHubContext;
} }
public override IQueryable<Sence> Include(IQueryable<Sence> query) public override IQueryable<Scene> Include(IQueryable<Scene> query)
{ {
return query.Include(o => o.Node); return query.Include(o => o.Node);
} }
public override void ToDisplayModel(Sence entity, DisplaySenceModel model) public override void ToDisplayModel(Scene entity, DisplaySenceModel model)
{ {
model.NodeId = entity.Node.Name; model.NodeId = entity.Node.Name;
} }
@ -87,7 +87,7 @@ namespace IoTCenter.Areas.Admin.Controllers
return RedirectTo(); return RedirectTo();
} }
public override void ToModel(Sence entity, EditSenceModel model) public override void ToModel(Scene entity, EditSenceModel model)
{ {
ViewData.SelectList(o => model.NodeId, () => this._ajax.GetNodeSelectList(model.NodeId)); ViewData.SelectList(o => model.NodeId, () => this._ajax.GetNodeSelectList(model.NodeId));
base.ToModel(entity, model); base.ToModel(entity, model);

@ -19,13 +19,13 @@ namespace IoTCenter.Controllers
private readonly ILogger<CommandController> _logger; private readonly ILogger<CommandController> _logger;
private readonly IHttpClientFactory _httpClientFactory; private readonly IHttpClientFactory _httpClientFactory;
private readonly IRepository<Device> _deviceRepo; private readonly IRepository<Device> _deviceRepo;
private readonly IRepository<Sence> _senceRepo; private readonly IRepository<Scene> _senceRepo;
private readonly IHubContext<PageHub> _pageHubContext; private readonly IHubContext<PageHub> _pageHubContext;
public CommandController(ILogger<CommandController> logger, public CommandController(ILogger<CommandController> logger,
IHttpClientFactory httpClientFactory, IHttpClientFactory httpClientFactory,
IRepository<Device> deviceRepo, IRepository<Device> deviceRepo,
IRepository<Sence> senceRepo, IRepository<Scene> senceRepo,
IHubContext<PageHub> pageHubContext) IHubContext<PageHub> pageHubContext)
{ {
this._logger = logger; this._logger = logger;

@ -43,7 +43,7 @@ namespace IoTCenter.Controllers
public IActionResult GetNode(Guid id) public IActionResult GetNode(Guid id)
{ {
var model = this._nodeRepo.ReadOnlyTable() var model = this._nodeRepo.ReadOnlyTable()
.Include(o => o.Sences) .Include(o => o.Scenes)
.Include(o => o.Devices).ThenInclude(o => o.Data) .Include(o => o.Devices).ThenInclude(o => o.Data)
//.Include(o => o.Devices).ThenInclude(o => o.Apis).ThenInclude(o => o.Parameters) //.Include(o => o.Devices).ThenInclude(o => o.Apis).ThenInclude(o => o.Parameters)
.FirstOrDefault(o => o.Id == id); .FirstOrDefault(o => o.Id == id);

@ -29,7 +29,7 @@ namespace IoTCenter.Controllers
private readonly IHubContext<PageHub> _pageHubContext; private readonly IHubContext<PageHub> _pageHubContext;
private readonly IRepository<Node> _nodeRepo; private readonly IRepository<Node> _nodeRepo;
private readonly IRepository<Device> _deviceRepo; private readonly IRepository<Device> _deviceRepo;
private readonly IRepository<Sence> _senceRepo; private readonly IRepository<Scene> _senceRepo;
public NotifyController(ILogger<NotifyController> logger, public NotifyController(ILogger<NotifyController> logger,
IConfiguration configuration, IConfiguration configuration,
@ -38,7 +38,7 @@ namespace IoTCenter.Controllers
IHubContext<PageHub> pageHubContext, IHubContext<PageHub> pageHubContext,
IRepository<Node> nodeRepository, IRepository<Node> nodeRepository,
IRepository<Device> deviceReposigory, IRepository<Device> deviceReposigory,
IRepository<Sence> senceRepository) IRepository<Scene> senceRepository)
{ {
this._logger = logger; this._logger = logger;
this._configuration = configuration; this._configuration = configuration;
@ -230,7 +230,7 @@ namespace IoTCenter.Controllers
{ {
var model = this.ReadPostData(); var model = this.ReadPostData();
var newNode = model.FromJson<Node>(); var newNode = model.FromJson<Node>();
var node = this._nodeRepo.Table().Include(o => o.Sences).Include(o => o.Devices).FirstOrDefault(o => o.Number == newNode.Number); var node = this._nodeRepo.Table().Include(o => o.Scenes).Include(o => o.Devices).FirstOrDefault(o => o.Number == newNode.Number);
if (node != null && node.Id != newNode.Id) if (node != null && node.Id != newNode.Id)
{ {
this._nodeRepo.Delete(node); this._nodeRepo.Delete(node);
@ -244,22 +244,22 @@ namespace IoTCenter.Controllers
} }
node.FromPlain(newNode); node.FromPlain(newNode);
this._nodeRepo.SaveChanges(); this._nodeRepo.SaveChanges();
foreach (var id in node.Sences.Select(o => o.Id).ToList()) foreach (var id in node.Scenes.Select(o => o.Id).ToList())
{ {
if (!newNode.Sences.Any(o => o.Id == id)) if (!newNode.Scenes.Any(o => o.Id == id))
{ {
node.Sences.Remove(node.Sences.FirstOrDefault(o => o.Id == id)); node.Scenes.Remove(node.Scenes.FirstOrDefault(o => o.Id == id));
this._nodeRepo.SaveChanges(); this._nodeRepo.SaveChanges();
this._pageHubContext.Clients.Group("page").SendAsync("DeleteSence", id.ToString()); this._pageHubContext.Clients.Group("page").SendAsync("DeleteSence", id.ToString());
} }
} }
foreach (var newSence in newNode.Sences) foreach (var newSence in newNode.Scenes)
{ {
var sence = node.Sences.FirstOrDefault(o => o.Id == newSence.Id); var sence = node.Scenes.FirstOrDefault(o => o.Id == newSence.Id);
if (sence == null) if (sence == null)
{ {
sence = new Sence(); sence = new Scene();
node.Sences.Add(sence); node.Scenes.Add(sence);
} }
sence.FromPlain(newSence); sence.FromPlain(newSence);
this._nodeRepo.SaveChanges(); this._nodeRepo.SaveChanges();

@ -116,11 +116,11 @@ namespace IoTCenter.Services
var data = device.Data.FirstOrDefault(o => o.Key == newData.Key); var data = device.Data.FirstOrDefault(o => o.Key == newData.Key);
if (data == null) if (data == null)
{ {
data = new Data().Update(data); data = new Data().Update(newData);
data.DeviceId = device.Id; data.DeviceId = device.Id;
device.Data.Add(data); device.Data.Add(data);
} }
data.UpdateWithoutId(newDevice); data.Update(newData, "Id", "UpdatedOn");
data.DeviceId = device.Id; data.DeviceId = device.Id;
} }
} }

@ -1,11 +1,11 @@
using System; using Application.Models;
using System.Linq;
using Application.Models;
using Infrastructure.Extensions; using Infrastructure.Extensions;
using Infrastructure.Web.SignalR;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.SignalR; using Microsoft.AspNetCore.SignalR;
using Raven.Embedded; using Raven.Embedded;
using System;
using System.Linq;
using UserCenter.Services;
namespace UserCenter.Controllers namespace UserCenter.Controllers
{ {

@ -0,0 +1,8 @@
using Infrastructure.Web.SignalR;
namespace UserCenter.Services
{
public class PageHub : BasePageHub
{
}
}
Loading…
Cancel
Save