diff --git a/AsbCloudApp/Services/IClusterService.cs b/AsbCloudApp/Services/IClusterService.cs index 8fa0bd11..50b51288 100644 --- a/AsbCloudApp/Services/IClusterService.cs +++ b/AsbCloudApp/Services/IClusterService.cs @@ -11,6 +11,7 @@ namespace AsbCloudApp.Services { IEnumerable GetDeposits(int idCustomer); IEnumerable GetClusters(int idCustomer, int depositId); + IEnumerable GetClusters(int idCustomer); IEnumerable GetWells(int idCustomer, int clusterId); IEnumerable GetAnalysis(int idCustomer, int clusterId); } diff --git a/AsbCloudDb/Model/AsbCloudDbContext.cs b/AsbCloudDb/Model/AsbCloudDbContext.cs index 1c3b9d20..19ab9024 100644 --- a/AsbCloudDb/Model/AsbCloudDbContext.cs +++ b/AsbCloudDb/Model/AsbCloudDbContext.cs @@ -176,22 +176,33 @@ namespace AsbCloudDb.Model modelBuilder.Entity(entity => { entity.HasData(new List { - new Deposit{Id = 1, Caption = "м/р 1" }, + new Deposit{Id = 1, Caption = "м/р 1", Latitude = 60.8705722222222, Longitude = 70.3811888888889 }, }); }); modelBuilder.Entity(entity => { entity.HasData(new List { - new Cluster{Id = 1, Caption = "куст 1", IdDeposit = 1 }, + new Cluster{Id = 1, Caption = "к221", IdDeposit = 1, Latitude = 60.8705722222222, Longitude = 70.3811888888889}, + new Cluster{Id = 2, Caption = "к151", IdDeposit = 1, Latitude = 60.8205750000000, Longitude = 70.1343833333334}, + new Cluster{Id = 3, Caption = "к611", IdDeposit = 1, Latitude = 60.8100666666667, Longitude = 69.7778388888889}, + new Cluster{Id = 4, Caption = "к203", IdDeposit = 1, Latitude = 60.8928805555556, Longitude = 70.3272055555556}, + new Cluster{Id = 5, Caption = "к39.1", IdDeposit = 1, Latitude = 60.6672055555556, Longitude = 69.6603861111111}, }); }); modelBuilder.Entity(entity => { entity.HasData(new List { - new Well{Id = 1, IdCluster = 1, IdCustomer = 1, Caption = "скв 1" }, - new Well{Id = 2, IdCluster = 1, IdCustomer = 1, Caption = "скв 2" }, + new Well{Id = 1, IdCluster = 1, IdCustomer = 1, Caption = "скв 42669", Latitude = 60.8705722222222, Longitude = 70.3811888888889}, + new Well{Id = 2, IdCluster = 1, IdCustomer = 1, Caption = "скв 16311", Latitude = 60.8705722222222, Longitude = 70.3811888888889}, + new Well{Id = 3, IdCluster = 2, IdCustomer = 1, Caption = "скв 16315", Latitude = 60.8205750000000, Longitude = 70.1343833333334}, + new Well{Id = 4, IdCluster = 2, IdCustomer = 1, Caption = "скв 16318", Latitude = 60.8205750000000, Longitude = 70.1343833333334}, + new Well{Id = 5, IdCluster = 3, IdCustomer = 1, Caption = "скв 16310", Latitude = 60.8100666666667, Longitude = 69.7778388888889}, + new Well{Id = 6, IdCluster = 4, IdCustomer = 1, Caption = "скв 16316", Latitude = 60.8928805555556, Longitude = 70.3272055555556}, + new Well{Id = 7, IdCluster = 5, IdCustomer = 1, Caption = "скв 16312", Latitude = 60.6672055555556, Longitude = 69.6603861111111}, + new Well{Id = 8, IdCluster = 5, IdCustomer = 1, Caption = "скв 16313", Latitude = 60.6672055555556, Longitude = 69.6603861111111}, + new Well{Id = 9, IdCluster = 5, IdCustomer = 1, Caption = "скв 16314", Latitude = 60.6672055555556, Longitude = 69.6603861111111}, }); }); diff --git a/AsbCloudInfrastructure/Services/СlusterService.cs b/AsbCloudInfrastructure/Services/СlusterService.cs index 8de76465..8060484e 100644 --- a/AsbCloudInfrastructure/Services/СlusterService.cs +++ b/AsbCloudInfrastructure/Services/СlusterService.cs @@ -38,6 +38,24 @@ namespace AsbCloudInfrastructure.Services return dtos; } + public IEnumerable GetClusters(int idCustomer) + { + var entities = db.GetWellsByCustomer(idCustomer) + .Select(e => e.Cluster) + .Distinct() + .ToList(); + + var dtos = entities.Select(e => new ClusterDto + { + Id = e.Id, + Name = e.Caption, + Latitude = e.Latitude, + Longitude = e.Longitude, + }); + + return dtos; + } + public IEnumerable GetClusters(int idCustomer, int depositId) { var entities = db.GetWellsByCustomer(idCustomer) diff --git a/AsbCloudWebApi/Controllers/ClusterController.cs b/AsbCloudWebApi/Controllers/ClusterController.cs index 601ebd79..f81e7b28 100644 --- a/AsbCloudWebApi/Controllers/ClusterController.cs +++ b/AsbCloudWebApi/Controllers/ClusterController.cs @@ -13,7 +13,7 @@ namespace AsbCloudWebApi.Controllers /// /// Контроллер кустов /// - [Route("api/[controller]")] + [Route("api/cluster")] [ApiController] [Authorize] public class ClusterController : ControllerBase @@ -25,6 +25,23 @@ namespace AsbCloudWebApi.Controllers this.clusterService = clusterService; } + /// + /// Получает список доступных пользователю кустов + /// + /// + [HttpGet()] + [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)] + public IActionResult GetClusters() + { + int? idCustomer = User.GetCustomerId(); + + if (idCustomer is null) + return Forbid(); + + var result = clusterService.GetClusters((int)idCustomer); + return Ok(result); + } + /// /// Получение доступных пользователю скважин /// diff --git a/AsbCloudWebApi/Controllers/DepositController.cs b/AsbCloudWebApi/Controllers/DepositController.cs index 5fc94160..1a8bef23 100644 --- a/AsbCloudWebApi/Controllers/DepositController.cs +++ b/AsbCloudWebApi/Controllers/DepositController.cs @@ -13,7 +13,7 @@ namespace AsbCloudWebApi.Controllers /// /// Контроллер для месторождений /// - [Route("api/[controller]")] + [Route("api/deposit")] [ApiController] [Authorize] public class DepositController : ControllerBase