From 2883b537ab7a29529014ed01c7898abf6ca39437 Mon Sep 17 00:00:00 2001 From: astankovmi Date: Mon, 13 Jul 2026 15:11:05 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=B8=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=B2=20Visor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Strela/Controllers/DeviceController.cs | 42 +- Strela/Controllers/TypeController.cs | 77 ++ Strela/Models/DeviceItem.cs | 4 +- Strela/Models/DeviceType.cs | 2 +- Strela/Models/ObjectItem.cs | 2 +- Strela/Services/DataBase.db | Bin 32768 -> 36864 bytes Strela/Services/DataBase.db-shm | Bin 32768 -> 0 bytes Strela/Services/DataBase.db-wal | Bin 4152 -> 0 bytes Visor/Visor/Models/AllPubData.cs | 27 +- Visor/Visor/Models/DeviceItems.cs | 4 +- Visor/Visor/Models/DeviceTypeItems.cs | 2 +- Visor/Visor/Models/ObjectItems.cs | 2 +- .../Pages/Setting/Objects/AddObjects.razor | 2 +- Visor/Visor/Pages/Setting/Wizard.razor | 656 +++++++++++------- 14 files changed, 517 insertions(+), 303 deletions(-) create mode 100644 Strela/Controllers/TypeController.cs delete mode 100644 Strela/Services/DataBase.db-shm delete mode 100644 Strela/Services/DataBase.db-wal diff --git a/Strela/Controllers/DeviceController.cs b/Strela/Controllers/DeviceController.cs index da87a02..0002a8a 100644 --- a/Strela/Controllers/DeviceController.cs +++ b/Strela/Controllers/DeviceController.cs @@ -9,28 +9,16 @@ namespace Strela.Controllers; [Route("api/[controller]")] public class DeviceController : ControllerBase { - private readonly ILogger _logger; + private readonly ILogger _logger; - public DeviceController(ILogger logger) + public DeviceController(ILogger logger) { _logger = logger; } //=========================== GET =================================// #region GET - [HttpGet("GetTypes")] - [ProducesResponseType>(StatusCodes.Status200OK)] - [ProducesResponseType(StatusCodes.Status204NoContent)] - public IActionResult GetList()// Получить лист типов устройств - { - using (var db = new SQLiteService()) - { - var tps = db.DeviceTypes.ToList(); - if (tps.Count != 0) - return Ok(tps); - else return NoContent(); - } - } + [HttpGet("GetDeviceById")] [ProducesResponseType(StatusCodes.Status200OK)] @@ -74,32 +62,12 @@ public class DeviceController : ControllerBase } } - [HttpPost("AddType")] - public IActionResult AddType(DeviceType d) //Добавить один тип устройства - { - using (var db = new SQLiteService()) - { - db.DeviceTypes.Add(d);//.Where(u => u.Name == name).FirstOrDefault(); - db.SaveChanges(); - return Created(); - } - } + #endregion //========================= DELETE ====================================// #region DELETE - [HttpDelete("DelType")] - public IActionResult DelType(int id) //Удалить тип устройства по id - { - using (var db = new SQLiteService()) - { - var deldevtype = db.DeviceTypes.Where(u => u.Id == id).FirstOrDefault(); - db.DeviceTypes.Remove(deldevtype); - db.SaveChanges(); - return Ok(); - } - } - + [HttpDelete("DelDevice")] public IActionResult DelDevice(int id) //Удалить устройство по id { diff --git a/Strela/Controllers/TypeController.cs b/Strela/Controllers/TypeController.cs new file mode 100644 index 0000000..60edd38 --- /dev/null +++ b/Strela/Controllers/TypeController.cs @@ -0,0 +1,77 @@ +using Microsoft.AspNetCore.Http.HttpResults; +using Microsoft.AspNetCore.Mvc; +using Strela.Models; +using Strela.Services; + +namespace Strela.Controllers; + +[ApiController] +[Route("api/[controller]")] +public class TypeController : ControllerBase +{ + private readonly ILogger _logger; + + public TypeController(ILogger logger) + { + _logger = logger; + } + + //=========================== GET =================================// + #region GET + [HttpGet("GetTypes")] + public IActionResult GetList()// Получить лист типов устройств + { + using (var db = new SQLiteService()) + { + var tps = db.DeviceTypes.ToList(); + return Ok(tps); + } + } + + [HttpGet("GetTypeById")] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status204NoContent)] + public IActionResult GetById(int id) // Получить устройство по id + { + using (var db = new SQLiteService()) + { + var d = db.DeviceTypes.Where(d => d.Id == id).FirstOrDefault(); + if (d != null) + return Ok(d); + else return NoContent(); + } + } + + + #endregion + + //========================= POST ====================================// + #region POST + + [HttpPost("AddType")] + public IActionResult AddType(DeviceType d) //Добавить один тип устройства + { + using (var db = new SQLiteService()) + { + db.DeviceTypes.Add(d);//.Where(u => u.Name == name).FirstOrDefault(); + db.SaveChanges(); + return Created(); + } + } + #endregion + + //========================= DELETE ====================================// + #region DELETE + [HttpDelete("DelType")] + public IActionResult DelType(int id) //Удалить тип устройства по id + { + using (var db = new SQLiteService()) + { + var deldevtype = db.DeviceTypes.Where(u => u.Id == id).FirstOrDefault(); + db.DeviceTypes.Remove(deldevtype); + db.SaveChanges(); + return Ok(); + } + } + #endregion +} diff --git a/Strela/Models/DeviceItem.cs b/Strela/Models/DeviceItem.cs index 609de2b..2c3dd65 100644 --- a/Strela/Models/DeviceItem.cs +++ b/Strela/Models/DeviceItem.cs @@ -2,7 +2,7 @@ { public class DeviceItem { - public int Id { get; set; } + public Guid Id { get; set; } public string? Ip { get; set; } public string? Mac { get; set; } public string? Description { get; set; } @@ -11,7 +11,7 @@ public List? ListDevices { get; set; } public DeviceType? DeviceType { get; set; } public ObjectItem? DeviceObject { get; set; } - public int ConnectedToSwitchId { get; set; } + public Guid ConnectedToSwitchId { get; set; } public int ConnectedToPortOnSwitch { get; set; } } diff --git a/Strela/Models/DeviceType.cs b/Strela/Models/DeviceType.cs index 61b58a6..19e09a3 100644 --- a/Strela/Models/DeviceType.cs +++ b/Strela/Models/DeviceType.cs @@ -2,7 +2,7 @@ { public class DeviceType { - public int Id { get; set; } + public Guid Id { get; set; } public string Name { get; set; } public string? Description { get; set; } } diff --git a/Strela/Models/ObjectItem.cs b/Strela/Models/ObjectItem.cs index 18ae19f..12cbf68 100644 --- a/Strela/Models/ObjectItem.cs +++ b/Strela/Models/ObjectItem.cs @@ -2,7 +2,7 @@ { public class ObjectItem { - public int Id { get; set; } + public Guid Id { get; set; } public string NameObject { get; set; } = "Unknown"; public string? DescriptionObject { get; set; } = null; } diff --git a/Strela/Services/DataBase.db b/Strela/Services/DataBase.db index e067756c434cc52fcf37b1023484ca950aaa4401..4fc0470d906cb25212b0a861274d512c11097985 100644 GIT binary patch delta 324 zcmZo@U}{*vG(n!1lK}zPC+gUUaBysA;5X#E&&R^6&n3V)pHqWl`^H9V4yJsL$>ChG zlMT4oI9yW8GLut_IVTHpxp0=Uvy0nHGd9Xjj^h$z^H0i3O)iC5jyj>&FEC9-CDg?Q@xdyrVIlBfcC?SlQY|HzIGlH32Tv?g1seG~q t-|5NU`64-e7$G9@lOy?;Ouo;{F}a3YjG329bCH9>q5uIfGFX%#001nQTlxS1 delta 253 zcmZozz|_#dG(n!1g8>29ChFJ-v2#9Q;P>bI%O}U{$#sk?l=I1EL4hnzrhN9v3pr(3 zLMjVVC;M`0PG;s*ojjkjkgJt}m0es~nz1u{vlN#c0X7rzYjW32%j}aoKJlUFm$>zWO>;i0z{O=j~-vjM<$}i8)$gIrhpOlrFT;f@h znp@1l3v?VK|1}2wYy3y}-vAYDPy5C&jKC@?mZRJ2x3!VI<+E@0sXtbo0-vvdFlK@&sm1j187XzdL7{^W9( zmzOKP0WN>6qmcMpS?FnB#qwTXigvX-SNlbCdtIO9=5#o2^B@2Bt3C;P-;)f_V@t-# zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV6S#0^uH)5FkK+009C72oNAZfB*pk v1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly@ZSO*+-xVe diff --git a/Strela/Services/DataBase.db-wal b/Strela/Services/DataBase.db-wal deleted file mode 100644 index 34732af1b446a793763f24f58a2c2a7ad5312655..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4152 zcmXr7XKP~6eI&uaAiw|uSu4BBIUgMP=u^0+_M2RaHc*HKh&f>5vmbKHsXv$7zzb3g z)WUy_{|NsZ5N8yOhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb23(5D;Qw zVGx%OaSaYJzOd-R)C&tQXmGGF$huybcd_Ndj*E>K=3Ur$vFpOt3%f2hDO}hG5mW#w In}1;=0R0#>)&Kwi diff --git a/Visor/Visor/Models/AllPubData.cs b/Visor/Visor/Models/AllPubData.cs index faea964..3328b10 100644 --- a/Visor/Visor/Models/AllPubData.cs +++ b/Visor/Visor/Models/AllPubData.cs @@ -1,20 +1,37 @@ -using static System.Net.WebRequestMethods; - -namespace Visor.Models +namespace Visor.Models { public class AllPubData { public static List ListObjectItems { get; set; } = new(); + public static List ListDeviceItems { get; set; } = new(); + public static List ListDeviceTypeItems { get; set; } = new(); public static HttpClient http { get; set; } = new() { BaseAddress = new Uri("http://localhost:5262/") }; + public static Task GetAll() => _GetAllData(); public static Task GetObjects() => _GetObject(); + public static Task GetType() => _GetType(); + public static Task GetDevice() => _GetDevice(); - private static async Task _GetObject() + private static async Task _GetAllData() { - ListObjectItems = await http.GetFromJsonAsync>("api/Object/GetObject"); + var o = await _GetObject(); + var t = await _GetType(); + var d = await _GetDevice(); + } + private static async Task> _GetObject() + { + return ListObjectItems = await http.GetFromJsonAsync>("api/Object/GetObject"); + } + private static async Task> _GetDevice() + { + return ListDeviceItems = http.GetFromJsonAsync>("api/Device/GetDevices").Result.Take(100).ToList(); + } + private static async Task> _GetType() + { + return ListDeviceTypeItems = await http.GetFromJsonAsync>("api/Type/GetTypes"); } } diff --git a/Visor/Visor/Models/DeviceItems.cs b/Visor/Visor/Models/DeviceItems.cs index 9d7f8ef..abd3a45 100644 --- a/Visor/Visor/Models/DeviceItems.cs +++ b/Visor/Visor/Models/DeviceItems.cs @@ -2,7 +2,7 @@ { public class DeviceItems { - public int Id { get; set; } + public Guid Id { get; set; } public string? Ip { get; set; } public string? Mac { get; set; } public string? Description { get; set; } @@ -11,7 +11,7 @@ public List? ListDevices { get; set; } public DeviceTypeItems? DeviceType { get; set; } public ObjectItems? DeviceObject { get; set; } - public int ConnectedToSwitchId { get; set; } + public Guid ConnectedToSwitchId { get; set; } public int ConnectedToPortOnSwitch { get; set; } } diff --git a/Visor/Visor/Models/DeviceTypeItems.cs b/Visor/Visor/Models/DeviceTypeItems.cs index 61efbdc..1e11b09 100644 --- a/Visor/Visor/Models/DeviceTypeItems.cs +++ b/Visor/Visor/Models/DeviceTypeItems.cs @@ -2,7 +2,7 @@ { public class DeviceTypeItems { - public int Id { get; set; } + public Guid Id { get; set; } public string Name { get; set; } public string? Description { get; set; } = null; } diff --git a/Visor/Visor/Models/ObjectItems.cs b/Visor/Visor/Models/ObjectItems.cs index 297b573..1fcf8bf 100644 --- a/Visor/Visor/Models/ObjectItems.cs +++ b/Visor/Visor/Models/ObjectItems.cs @@ -5,7 +5,7 @@ namespace Visor.Models public class ObjectItems { [Key] - public int Id { get; set; } + public Guid Id { get; set; } public string NameObject { get; set; } = "Unknown"; public string DescriptionObject { get; set; } = string.Empty; } diff --git a/Visor/Visor/Pages/Setting/Objects/AddObjects.razor b/Visor/Visor/Pages/Setting/Objects/AddObjects.razor index c273ae3..90f2a39 100644 --- a/Visor/Visor/Pages/Setting/Objects/AddObjects.razor +++ b/Visor/Visor/Pages/Setting/Objects/AddObjects.razor @@ -56,7 +56,7 @@ private Modal modalAdd; private Modal modalDel; - private int select_id { get; set; } + private Guid select_id { get; set; } private int id_object { get; set; } private string name_object { get; set; } private string decript_object { get; set; } diff --git a/Visor/Visor/Pages/Setting/Wizard.razor b/Visor/Visor/Pages/Setting/Wizard.razor index e20c50b..d420bff 100644 --- a/Visor/Visor/Pages/Setting/Wizard.razor +++ b/Visor/Visor/Pages/Setting/Wizard.razor @@ -1,248 +1,357 @@ @page "/setting/wizard" @using Visor.Models +@using System.Text.Json

Wizard

- - - Объекты - Типы - Устройства - Итог - - - - - - - - Введите название объекта. Например: VNK, SPB... - - - - - - - Введите текстовое описание объекта - - - - - - - - - - - - - - # - Название объекта - Описание объекта - - - - @foreach (var item in list_obj) - { - - @item.Id - @item.NameObject - @item.DescriptionObject - - } - -
-
-
- - - - - - Введите название типа. Например: Server, Switch... - - - - - - - Введите текстовое описание типа устройства - - - - - - - - - - - - - - # - Тип устройства - Описание типа устройств - - - - @foreach (var item in list_type) - { - - @item.Id - @item.Name - @item.Description - - } - -
-
-
- - - - - Добавление устройства - - - - - IP - - - - - - - - MAC - - - - - - - - Название - - - - - - - - Описание - - - - - - - - Место установки - - - - - - - - Тип устройства - - - - - - - - Объект - - - - - - - - Подключен к - - - - - - - - - - - Порт подключения - - - - - - - - - - - - Итог - -
-
-
- - -
+ + + + @error_group + + + + @error_msg + + + + + + + + Объекты + Типы + Устройства + Итог + + + + + + + + + + + Введите название объекта. Например: VNK, SPB... + + + + + Введите текстовое описание объекта + + + + + + + + + + + + + + + + + Название объекта + Описание объекта + + + + @foreach (var item in _list_obj) + { + + @item.NameObject + @item.DescriptionObject + + } + +
+
+
+
+
+
+
+ + + + + + + + + Введите название типа. Например: Server, Switch... + + + + + Введите текстовое описание типа устройства + + + + + + + + + + + + + + + + + Тип устройства + Описание типа устройств + + + + @foreach (var item in _list_type) + { + + @item.Name + @item.Description + + } + +
+
+
+
+
+
+
+ + + + + + + Добавление устройства + + + + + IP + + + + + + + + MAC + + + + + + + + Название + + + + + + + + Описание + + + + + + + + Место установки + + + + + + + + Тип устройства + + + + + + + + Объект + + + + + + + + Подключен к + + + + + + + + + + + Порт подключения + + + + + + + + + + + + + + + + + + Имя + Адрес + Тип + + + + @foreach (var item in _list_dev) + { + + @item.Name + @item.Ip + @item.DeviceType.Name + + } + +
+
+
+
+
+
+
+ + + + + + + ОБЪЕКТЫ + + + Объектов к добавлению - @_list_obj.Count + + + + + + + ТИПЫ УСТРОЙСТВ + + + Типов к добавлению - @_list_type.Count + + + + + + + УСТРОЙСТВА + + + Устройств к добавлению - @_list_dev.Count + из них коммутаторов - @_list_switch.Count + + + + + + +
+
+
+ + +
+
+ + @code { + bool visible, toastError = false; + + Visibility visibleProgress = Visibility.Invisible; + private Steps stepsRef; private ObjectItems obj_item; private DeviceTypeItems type_item; private DeviceItems dev_item; - private List list_obj = new(); - private List list_type = new(); - private static List list_dev = new(); - private List list_switch = new(); + private List list_obj = new(), _list_obj = new(); + private List list_type = new(), _list_type = new(); + private static List list_dev = new(), _list_dev = new(); + private List _list_switch = new(); private string email, nextButton = "Далее"; private string selectedStep = "1"; - private int id_type, id_obj, id_dev, num_port; + private Guid id_type, id_obj, id_dev; + private int num_port; private string obj_name, obj_desc; private string type_name, type_desc; - + private string error_msg, error_group; private string dev_ip, dev_mac, dev_desc, dev_name, dev_loc; + protected override async Task OnInitializedAsync() + { + visible = true; + await AllPubData.GetAll(); + list_type = AllPubData.ListDeviceTypeItems; + list_obj = AllPubData.ListObjectItems; + list_dev = AllPubData.ListDeviceItems; + visible = false; + } + private Task NavigationAllowed(StepNavigationContext context) { @@ -265,50 +374,93 @@ private void RefreshListSwitch() { - list_switch = list_dev.Where(s => s.DeviceType.Name.Contains("Switch")).ToList(); - if (list_switch.Count == 0) - id_dev = 0; + _list_switch = _list_dev.Where(s => s.DeviceType.Name.Contains("Switch")).ToList(); } - private void AddNewObject() + private async void AddNewObject() { obj_item = new() - { - NameObject = obj_name, - DescriptionObject = obj_desc, - Id = list_obj.Count + 1 - }; - list_obj.Add(obj_item); + { + Id = Guid.NewGuid(), + NameObject = obj_name, + DescriptionObject = obj_desc, + }; + _list_obj.Add(obj_item); obj_name = string.Empty; obj_desc = string.Empty; } - private void AddNewType() + private async void AddNewType() { type_item = new() { + Id = Guid.NewGuid(), Name = type_name, Description = type_desc, - Id = list_type.Count + 1 }; - list_type.Add(type_item); + _list_type.Add(type_item); type_name = string.Empty; type_desc = string.Empty; } - private void AddNewDev() + private async void AddNewDev() { dev_item = new() + { + Id = Guid.NewGuid(), + Ip = dev_ip, + Mac = dev_mac, + Description = dev_desc, + Name = dev_name, + Location = dev_loc, + DeviceType = _list_type.SingleOrDefault(t => t.Id == id_type), + DeviceObject = _list_obj.SingleOrDefault(o => o.Id == id_obj), + ConnectedToPortOnSwitch = num_port + }; + _list_dev.Add(dev_item); + if (dev_item.DeviceType.Name.Contains("Switch")) _list_switch.Add(dev_item); + dev_ip = string.Empty; + dev_mac = string.Empty; + dev_desc = string.Empty; + dev_name = string.Empty; + dev_loc = string.Empty; + } + + private async void clickSave() + { + if (nextButton == "Далее") stepsRef.NextStep(); + else + { + visibleProgress = Visibility.Visible; + foreach (var item in _list_obj) { - Id = list_type.Count + 1, - Ip = dev_ip, - Mac = dev_mac, - Description = dev_desc, - Name = dev_name, - Location = dev_loc, - DeviceType = list_type.SingleOrDefault(t => t.Id == id_type), - DeviceObject = list_obj.SingleOrDefault(o => o.Id == id_obj) - }; - list_dev.Add(dev_item); - type_name = string.Empty; - type_desc = string.Empty; + var p = await AllPubData.http.PostAsJsonAsync("api/Object/AddObject", item); + if (!p.IsSuccessStatusCode) + { + error_group = "ОБЪЕКТ"; + error_msg = $"{item.NameObject} не добавлено.\r\nСтатус код: {p.StatusCode}"; + toastError = true; + } + } + foreach (var item in _list_type) + { + var p = await AllPubData.http.PostAsJsonAsync("api/Type/AddType", item); + if (!p.IsSuccessStatusCode) + { + error_group = "ТИП"; + error_msg = $"{item.Name} не добавлено.\r\nСтатус код: {p.StatusCode}"; + toastError = true; + } + } + foreach (var item in _list_dev) + { + var p = await AllPubData.http.PostAsJsonAsync("api/Device/AddDevice", item); + if (!p.IsSuccessStatusCode) + { + error_group = "УСТРОЙСТВА"; + error_msg = $"{item.Name} не добавлено.\r\nСтатус код: {p.StatusCode}"; + toastError = true; + } + } + visibleProgress = Visibility.Invisible; + } } }