This commit is contained in:
@@ -17,15 +17,16 @@ public class DeviceController : ControllerBase
|
||||
}
|
||||
|
||||
//=========================== GET =================================//
|
||||
#region GET
|
||||
[HttpGet("GetTypes")]
|
||||
[ProducesResponseType<List<DeviceType>>(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<DeviceItem>(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<DeviceItem>(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
|
||||
}
|
||||
|
||||
@@ -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<ObjectController> _logger;
|
||||
|
||||
public ObjectController(ILogger<ObjectController> logger)
|
||||
{
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
//=========================== GET =================================//
|
||||
[HttpGet("GetObject")]
|
||||
[ProducesResponseType<List<ObjectItem>>(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<ObjectItem>(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<ObjectItem>(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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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<DeviceItem> Devises { get; set; }
|
||||
public DeviceType DeviceType { get; set; }
|
||||
public List<DeviceItem>? ListDevices { get; set; }
|
||||
public DeviceType? DeviceType { get; set; }
|
||||
public int ConnectedToSwitchId { get; set; }
|
||||
public int ConnectedToPortOnSwitch { get; set; }
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -9,6 +9,7 @@ namespace Strela.Services
|
||||
public virtual DbSet<User> Users { get; set; }
|
||||
public virtual DbSet<DeviceItem> Devices { get; set; }
|
||||
public virtual DbSet<DeviceType> DeviceTypes { get; set; }
|
||||
public virtual DbSet<ObjectItem> ObjectItems { get; set; }
|
||||
|
||||
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||
|
||||
@@ -8,6 +8,13 @@
|
||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="Models\OTD\**" />
|
||||
<Content Remove="Models\OTD\**" />
|
||||
<EmbeddedResource Remove="Models\OTD\**" />
|
||||
<None Remove="Models\OTD\**" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.16" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.16" />
|
||||
@@ -23,8 +30,4 @@
|
||||
<ProjectReference Include="..\lsSoft.ServiceDefaults\lsSoft.ServiceDefaults.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Models\OTD\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
using static System.Net.WebRequestMethods;
|
||||
|
||||
namespace Visor.Models
|
||||
{
|
||||
public class AllPubData
|
||||
{
|
||||
public static List<ObjectItems> 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<List<ObjectItems>>("api/Object/GetObject");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
@page "/"
|
||||
@using Visor.Models
|
||||
@inject IVersionProvider VersionProvider
|
||||
<Heading Size="HeadingSize.Is1" Margin="Margin.Is3.FromBottom">Blazorise</Heading>
|
||||
|
||||
<Heading Size="HeadingSize.Is1" Margin="Margin.Is3.FromBottom">ДАШБОРД</Heading>
|
||||
|
||||
|
||||
@@ -1,48 +1,179 @@
|
||||
@page "/setting/add_objects"
|
||||
@using Visor.Models
|
||||
|
||||
<Row>
|
||||
<Column ColumnSize="ColumnSize.Is4">
|
||||
<Button Color="Color.Primary" Outline Clicked="@ShowAddObjetc">
|
||||
<Icon Name="IconName.Add" TextColor="TextColor.Success" />
|
||||
@* @inject HttpClient Http *@
|
||||
|
||||
<LoadingIndicator Visible="@isLoading" FullScreen />
|
||||
|
||||
|
||||
<Row Width="Width.Max100">
|
||||
<Column ColumnSize="ColumnSize.Is10"></Column>
|
||||
<Column ColumnSize="ColumnSize.Is2">
|
||||
<Button Color="Color.Primary" Clicked="@ShowAddObjetc">
|
||||
<Icon Name="IconName.Add" />
|
||||
</Button>
|
||||
<Button Color="Color.Primary" Outline Clicked="@ShowDelObjetc">
|
||||
<Icon Name="IconName.Delete" />
|
||||
</Button>
|
||||
|
||||
</Column>
|
||||
</Row>
|
||||
<Divider />
|
||||
<Div>
|
||||
@if (isLoading || listObjects is null)
|
||||
{
|
||||
<Paragraph>@MessagePages</Paragraph>
|
||||
}
|
||||
else if (listObjects != null && listObjects.Any())
|
||||
{
|
||||
<Table>
|
||||
<TableHeader>
|
||||
<TableRow>
|
||||
<TableHeaderCell>Название</TableHeaderCell>
|
||||
<TableHeaderCell>Описание</TableHeaderCell>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
@foreach (var item in listObjects)
|
||||
{
|
||||
<TableRow>
|
||||
<TableRowCell>@item.NameObject</TableRowCell>
|
||||
<TableRowCell>@item.DescriptionObject</TableRowCell>
|
||||
</TableRow>
|
||||
}
|
||||
</TableBody>
|
||||
</Table>
|
||||
}
|
||||
else
|
||||
{
|
||||
<Alert Color="Color.Warning">@MessagePages</Alert>
|
||||
<Paragraph>@MessagePages</Paragraph>
|
||||
}
|
||||
</Div>
|
||||
|
||||
<Row>
|
||||
<Label>
|
||||
Тут будет таблица всех объектов
|
||||
</Label>
|
||||
</Row>
|
||||
|
||||
@code {
|
||||
private List<ObjectItems>? 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();
|
||||
|
||||
}
|
||||
<Modal @ref="modalAdd" Centered>
|
||||
<ModalContent>
|
||||
<ModalHeader>
|
||||
<ModalTitle>Добавить объект</ModalTitle>
|
||||
</ModalHeader>
|
||||
<ModalBody>
|
||||
@* <Addons>
|
||||
<Addon AddonType="AddonType.Start">
|
||||
<AddonLabel>Id</AddonLabel>
|
||||
</Addon>
|
||||
<Addon AddonType="AddonType.Body">
|
||||
<NumericInput Disabled Placeholder="Номер объекта" @bind-Value="@id_object" />
|
||||
</Addon>
|
||||
</Addons> *@
|
||||
<Addons>
|
||||
<Addon AddonType="AddonType.Start">
|
||||
<AddonLabel>Name</AddonLabel>
|
||||
</Addon>
|
||||
<Addon AddonType="AddonType.Body">
|
||||
<TextInput @bind-Value="@name_object" Placeholder="Имя объекта" />
|
||||
</Addon>
|
||||
</Addons>
|
||||
<Addons>
|
||||
<Addon AddonType="AddonType.Start">
|
||||
<AddonLabel>Описание</AddonLabel>
|
||||
</Addon>
|
||||
<Addon AddonType="AddonType.Body">
|
||||
<TextInput Placeholder="Дополнительная информация" @bind-Value="@decript_object" />
|
||||
</Addon>
|
||||
</Addons>
|
||||
<ModalFooter>
|
||||
<Button Color="Color.Secondary" Clicked="@HideModal">Close</Button>
|
||||
<Button Color="Color.Primary" Clicked="@HideModal">Save Changes</Button>
|
||||
<Button Color="Color.Secondary" Clicked="@HideAddModal">Close</Button>
|
||||
<Button Color="Color.Primary" Clicked="@AddObject">Добавить</Button>
|
||||
</ModalFooter>
|
||||
</ModalBody>
|
||||
</ModalContent>
|
||||
</Modal>
|
||||
@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();
|
||||
}
|
||||
}
|
||||
<Modal @ref="modalDel" Centered>
|
||||
<ModalContent>
|
||||
<ModalHeader>
|
||||
<ModalTitle>Удалить объект</ModalTitle>
|
||||
</ModalHeader>
|
||||
<ModalBody>
|
||||
<Addons>
|
||||
<Addon AddonType="AddonType.Start">
|
||||
<AddonLabel>Id</AddonLabel>
|
||||
</Addon>
|
||||
<Addon AddonType="AddonType.Body">
|
||||
<Select TValue="int" @bind-Value="@select_id">
|
||||
<SelectItem Value="9999">Объект</SelectItem>
|
||||
@foreach (var item in listObjects)
|
||||
{
|
||||
<SelectItem Value="@item.Id">@item.NameObject</SelectItem>
|
||||
}
|
||||
</Select>
|
||||
</Addon>
|
||||
</Addons>
|
||||
<ModalFooter>
|
||||
<Button Color="Color.Secondary" Clicked="@HideDelModal">Close</Button>
|
||||
<Button Color="Color.Primary" Clicked="@DelObject">Удалить</Button>
|
||||
</ModalFooter>
|
||||
</ModalBody>
|
||||
</ModalContent>
|
||||
</Modal>
|
||||
@@ -1,3 +0,0 @@
|
||||
@using Visor.Components.TodoApp
|
||||
@page "/apps/todo"
|
||||
<TodoItems />
|
||||
@@ -24,6 +24,8 @@
|
||||
<PackageReference Include="Blazorise.Bootstrap5" Version="2.2.1" />
|
||||
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="2.2.1" />
|
||||
<PackageReference Include="Blazorise.DataGrid" Version="2.2.1" />
|
||||
<PackageReference Include="Blazorise.LoadingIndicator" Version="2.2.1" />
|
||||
<PackageReference Include="Blazorise.SpinKit" Version="2.2.1" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -9,4 +9,6 @@
|
||||
|
||||
@using Visor
|
||||
@using Blazorise
|
||||
@using Blazorise.SpinKit
|
||||
@using Blazorise.LoadingIndicator
|
||||
@using Blazorise.DataGrid
|
||||
|
||||
Reference in New Issue
Block a user