From fd6506af7be3fa9ae438f3873f920c7a3e596e96 Mon Sep 17 00:00:00 2001 From: astankovmi Date: Fri, 3 Jul 2026 18:35:09 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Strela/Controllers/DeviceController.cs | 42 ++-- Strela/Controllers/ObjectController.cs | 86 ++++++++ Strela/Models/DeviceItem.cs | 8 +- Strela/Models/ObjectItem.cs | 9 + Strela/Services/DataBase.db | Bin 28672 -> 32768 bytes Strela/Services/DataBase.db-shm | Bin 32768 -> 32768 bytes Strela/Services/DataBase.db-wal | Bin 0 -> 4152 bytes Strela/Services/SQLiteService.cs | 1 + Strela/Strela.csproj | 11 +- Visor/Visor/Models/AllPubData.cs | 21 ++ Visor/Visor/Models/ObjectItems.cs | 12 ++ Visor/Visor/Pages/Dashboard.razor | 4 +- .../Pages/Setting/Objects/AddObjects.razor | 189 +++++++++++++++--- Visor/Visor/Pages/TodoAppPage.razor | 3 - Visor/Visor/Visor.csproj | 2 + Visor/Visor/_Imports.razor | 2 + 16 files changed, 336 insertions(+), 54 deletions(-) create mode 100644 Strela/Controllers/ObjectController.cs create mode 100644 Strela/Models/ObjectItem.cs create mode 100644 Visor/Visor/Models/AllPubData.cs create mode 100644 Visor/Visor/Models/ObjectItems.cs delete mode 100644 Visor/Visor/Pages/TodoAppPage.razor diff --git a/Strela/Controllers/DeviceController.cs b/Strela/Controllers/DeviceController.cs index 1c13756..da87a02 100644 --- a/Strela/Controllers/DeviceController.cs +++ b/Strela/Controllers/DeviceController.cs @@ -17,15 +17,16 @@ public class DeviceController : ControllerBase } //=========================== GET =================================// + #region GET [HttpGet("GetTypes")] [ProducesResponseType>(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status204NoContent)] - public IActionResult GetList() + public IActionResult GetList()// Получить лист типов устройств { using (var db = new SQLiteService()) { var tps = db.DeviceTypes.ToList(); - if (tps.Count != 0) + if (tps.Count != 0) return Ok(tps); else return NoContent(); } @@ -34,7 +35,7 @@ public class DeviceController : ControllerBase [HttpGet("GetDeviceById")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status204NoContent)] - public IActionResult GetById(int id) + public IActionResult GetById(int id) // Получить устройство по id { using (var db = new SQLiteService()) { @@ -48,20 +49,22 @@ public class DeviceController : ControllerBase [HttpGet("GetDevices")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status204NoContent)] - public IActionResult GetAll() + public IActionResult GetAll() // Получить все устройства { using (var db = new SQLiteService()) { var d = db.Devices.ToList(); //if (d.Count != 0) - return Ok(d); + return Ok(d); //else return NoContent(); } - } + } + #endregion //========================= POST ====================================// + #region POST [HttpPost("AddDevice")] - public IActionResult AddDevice(DeviceItem d) + public IActionResult AddDevice(DeviceItem d) // Добавить одно устройство { using (var db = new SQLiteService()) { @@ -72,7 +75,7 @@ public class DeviceController : ControllerBase } [HttpPost("AddType")] - public IActionResult AddType(DeviceType d) + public IActionResult AddType(DeviceType d) //Добавить один тип устройства { using (var db = new SQLiteService()) { @@ -80,18 +83,33 @@ public class DeviceController : ControllerBase db.SaveChanges(); return Created(); } - } + } + #endregion //========================= DELETE ====================================// + #region DELETE [HttpDelete("DelType")] - public IActionResult DelType(int id) + public IActionResult DelType(int id) //Удалить тип устройства по id { using (var db = new SQLiteService()) { - var deldev = db.DeviceTypes.Where(u => u.Id == id).FirstOrDefault(); - db.DeviceTypes.Remove(deldev); + 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 + { + using (var db = new SQLiteService()) + { + var deldev = db.Devices.Where(u => u.Id == id).FirstOrDefault(); + db.Devices.Remove(deldev); + db.SaveChanges(); + return Ok(); + } + } + #endregion } diff --git a/Strela/Controllers/ObjectController.cs b/Strela/Controllers/ObjectController.cs new file mode 100644 index 0000000..12dbdee --- /dev/null +++ b/Strela/Controllers/ObjectController.cs @@ -0,0 +1,86 @@ +using Microsoft.AspNetCore.Mvc; +using Strela.Models; +using Strela.Services; + +namespace Strela.Controllers; + +[ApiController] +[Route("api/[controller]")] +public class ObjectController : ControllerBase +{ + private readonly ILogger _logger; + + public ObjectController(ILogger logger) + { + _logger = logger; + } + + //=========================== GET =================================// + [HttpGet("GetObject")] + [ProducesResponseType>(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status204NoContent)] + public IActionResult GetList() + { + using (var db = new SQLiteService()) + { + var oi = db.ObjectItems.ToList(); + //if (oi.Count != 0) + return Ok(oi); + //else return NoContent(); + } + } + + [HttpGet("GetObjectById")] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status204NoContent)] + public IActionResult GetById(int id) + { + using (var db = new SQLiteService()) + { + var o = db.ObjectItems.Where(o => o.Id == id).FirstOrDefault(); + if (o != null) + return Ok(o); + else return NoContent(); + } + } + + [HttpGet("GetObjectByName")] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status204NoContent)] + public IActionResult GetByName(string name) + { + using (var db = new SQLiteService()) + { + var o = db.ObjectItems.Where(ob => ob.NameObject == name).FirstOrDefault(); + if (o != null) + return Ok(o); + else return NoContent(); + } + } + + + //========================= POST ====================================// + [HttpPost("AddObject")] + public IActionResult AddObject(ObjectItem o) + { + using (var db = new SQLiteService()) + { + db.ObjectItems.Add(o);//.Where(u => u.Name == name).FirstOrDefault(); + db.SaveChanges(); + return Created(); + } + } + + //========================= DELETE ====================================// + [HttpDelete("DelObject")] + public IActionResult DelObject(int id) + { + using (var db = new SQLiteService()) + { + var delobj = db.ObjectItems.Where(o => o.Id == id).FirstOrDefault(); + db.ObjectItems.Remove(delobj); + db.SaveChanges(); + return Ok(); + } + } +} diff --git a/Strela/Models/DeviceItem.cs b/Strela/Models/DeviceItem.cs index 5a15567..59d5bc3 100644 --- a/Strela/Models/DeviceItem.cs +++ b/Strela/Models/DeviceItem.cs @@ -3,13 +3,13 @@ public class DeviceItem { public int Id { get; set; } - public string Ip { get; set; } - public string Mac { get; set; } + public string? Ip { get; set; } + public string? Mac { get; set; } public string? Description { get; set; } public string? Name { get; set; } public string? Location { get; set; } - public List Devises { get; set; } - public DeviceType DeviceType { get; set; } + public List? ListDevices { get; set; } + public DeviceType? DeviceType { get; set; } public int ConnectedToSwitchId { get; set; } public int ConnectedToPortOnSwitch { get; set; } diff --git a/Strela/Models/ObjectItem.cs b/Strela/Models/ObjectItem.cs new file mode 100644 index 0000000..fcc9892 --- /dev/null +++ b/Strela/Models/ObjectItem.cs @@ -0,0 +1,9 @@ +namespace Strela.Models +{ + public class ObjectItem + { + public int Id { get; set; } + public string NameObject { get; set; } = "Unknown"; + public string DescriptionObject { get; set; } = string.Empty; + } +} diff --git a/Strela/Services/DataBase.db b/Strela/Services/DataBase.db index 57f0d38454f8c4a66683f30aedc94e352a7fe275..e067756c434cc52fcf37b1023484ca950aaa4401 100644 GIT binary patch delta 384 zcmZp8z}V2hG(n!1g8>29ChFJ-v2#9Q;P>bI%O}U{$#sk?l=I2P#w<>zeD=u_+_HQj zl?ADuDK4pHnaQce9Fs3`xiYc=CA21AtOcll%m z99 zmiAA|N=+{DEJ@8RMq;u!2e~?ixGID=I{CONC?RAf_wws=A#vYvt8n=x=B7e~Ca>oc z7k5c5PAbI%csHJ&Mn5ZbhDs`{C>ja?jPXR(6$hJ~;Am$5Zdv<<)c2NL3Fs d3JgHz{zn2(;feK}j4T@)^Sv1vH#V}H000}TF0KFo delta 62 zcmZo@U}|V!VwQNMJNdo0Dz^o@1e@vP+ni9o2#n7F1^X! A82|tP diff --git a/Strela/Services/DataBase.db-wal b/Strela/Services/DataBase.db-wal index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..34732af1b446a793763f24f58a2c2a7ad5312655 100644 GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/Strela/Services/SQLiteService.cs b/Strela/Services/SQLiteService.cs index d5571a8..2c93df7 100644 --- a/Strela/Services/SQLiteService.cs +++ b/Strela/Services/SQLiteService.cs @@ -9,6 +9,7 @@ namespace Strela.Services public virtual DbSet Users { get; set; } public virtual DbSet Devices { get; set; } public virtual DbSet DeviceTypes { get; set; } + public virtual DbSet ObjectItems { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) diff --git a/Strela/Strela.csproj b/Strela/Strela.csproj index 7f2993e..373eb7f 100644 --- a/Strela/Strela.csproj +++ b/Strela/Strela.csproj @@ -8,6 +8,13 @@ Linux + + + + + + + @@ -23,8 +30,4 @@ - - - - diff --git a/Visor/Visor/Models/AllPubData.cs b/Visor/Visor/Models/AllPubData.cs new file mode 100644 index 0000000..faea964 --- /dev/null +++ b/Visor/Visor/Models/AllPubData.cs @@ -0,0 +1,21 @@ +using static System.Net.WebRequestMethods; + +namespace Visor.Models +{ + public class AllPubData + { + public static List ListObjectItems { get; set; } = new(); + public static HttpClient http { get; set; } = new() + { + BaseAddress = new Uri("http://localhost:5262/") + }; + + public static Task GetObjects() => _GetObject(); + + private static async Task _GetObject() + { + ListObjectItems = await http.GetFromJsonAsync>("api/Object/GetObject"); + } + + } +} diff --git a/Visor/Visor/Models/ObjectItems.cs b/Visor/Visor/Models/ObjectItems.cs new file mode 100644 index 0000000..297b573 --- /dev/null +++ b/Visor/Visor/Models/ObjectItems.cs @@ -0,0 +1,12 @@ +using System.ComponentModel.DataAnnotations; + +namespace Visor.Models +{ + public class ObjectItems + { + [Key] + public int Id { get; set; } + public string NameObject { get; set; } = "Unknown"; + public string DescriptionObject { get; set; } = string.Empty; + } +} diff --git a/Visor/Visor/Pages/Dashboard.razor b/Visor/Visor/Pages/Dashboard.razor index d0cb29c..71d9969 100644 --- a/Visor/Visor/Pages/Dashboard.razor +++ b/Visor/Visor/Pages/Dashboard.razor @@ -1,5 +1,5 @@ @page "/" +@using Visor.Models @inject IVersionProvider VersionProvider -Blazorise - +ДАШБОРД diff --git a/Visor/Visor/Pages/Setting/Objects/AddObjects.razor b/Visor/Visor/Pages/Setting/Objects/AddObjects.razor index fec46b7..fb70b41 100644 --- a/Visor/Visor/Pages/Setting/Objects/AddObjects.razor +++ b/Visor/Visor/Pages/Setting/Objects/AddObjects.razor @@ -1,48 +1,179 @@ @page "/setting/add_objects" +@using Visor.Models - - - + - + +
+ @if (isLoading || listObjects is null) + { + @MessagePages + } + else if (listObjects != null && listObjects.Any()) + { + + + + Название + Описание + + + + @foreach (var item in listObjects) + { + + @item.NameObject + @item.DescriptionObject + + } + +
+ } + else + { + @MessagePages + @MessagePages + } +
- - - +@code { + private List? listObjects = AllPubData.ListObjectItems; + private Modal modalAdd; + private Modal modalDel; + + private int select_id { get; set; } + private int id_object { get; set; } + private string name_object { get; set; } + private string decript_object { get; set; } + + private HttpClient Http = AllPubData.http; + + + private string? MessagePages; + bool isLoading = true; + + protected override async Task OnInitializedAsync() + { + await AllPubData.GetObjects(); + listObjects = AllPubData.ListObjectItems; + if (listObjects.Count == 0) + MessagePages = "Нет данных"; + isLoading = false; + } + + private Task ShowAddObjetc() + { + id_object = listObjects.Count; + return modalAdd.Show(); + } + private async Task AddObject() + { + var obj = new ObjectItems() + { + NameObject = name_object, + DescriptionObject = decript_object + }; + + var post = await Http.PostAsJsonAsync("api/Object/AddObject", obj); + if (post.IsSuccessStatusCode) + { + listObjects.Add(obj); + await modalAdd.Hide(); + //await AllPubData.ReloadObject(); + } + + } + private Task ShowDelObjetc() => modalDel.Show(); + private async Task DelObject() + { + var del = await Http.DeleteAsync($"api/Object/DelObject?id={select_id}"); + if (del.IsSuccessStatusCode) + { + listObjects.Remove(listObjects.Where(i => i.Id == select_id).First()); + await HideDelModal(); + } + } + private Task HideAddModal() => modalAdd.Hide(); + private Task HideDelModal() => modalDel.Hide(); + +} Добавить объект + @* + + Id + + + + + *@ + + + Name + + + + + + + + Описание + + + + + - - + + -@code { - private Modal modalAdd; - private Modal modalDel; - private Task ShowAddObjetc() - { - return modalAdd.Show(); - } - private Task ShowDelObjetc() - { - return modalDel.Show(); - } - - private Task HideModal() - { - return modalAdd.Hide(); - } -} \ No newline at end of file + + + + Удалить объект + + + + + Id + + + + + + + + + + + + \ No newline at end of file diff --git a/Visor/Visor/Pages/TodoAppPage.razor b/Visor/Visor/Pages/TodoAppPage.razor deleted file mode 100644 index 9a9ab4f..0000000 --- a/Visor/Visor/Pages/TodoAppPage.razor +++ /dev/null @@ -1,3 +0,0 @@ -@using Visor.Components.TodoApp -@page "/apps/todo" - \ No newline at end of file diff --git a/Visor/Visor/Visor.csproj b/Visor/Visor/Visor.csproj index e84cca3..4adb133 100644 --- a/Visor/Visor/Visor.csproj +++ b/Visor/Visor/Visor.csproj @@ -24,6 +24,8 @@ + + diff --git a/Visor/Visor/_Imports.razor b/Visor/Visor/_Imports.razor index e467b30..2ac932d 100644 --- a/Visor/Visor/_Imports.razor +++ b/Visor/Visor/_Imports.razor @@ -9,4 +9,6 @@ @using Visor @using Blazorise +@using Blazorise.SpinKit +@using Blazorise.LoadingIndicator @using Blazorise.DataGrid