diff --git a/WebAPI/Controllers/LayersController.cs b/WebAPI/Controllers/LayersController.cs index e2a977f..72166e7 100644 --- a/WebAPI/Controllers/LayersController.cs +++ b/WebAPI/Controllers/LayersController.cs @@ -168,6 +168,60 @@ public class LayersController : Controller } } + [HttpGet] + [Route("getConfiguration/{apiKey}/{number:int}")] + public IActionResult GetConfigurationByNumber(string apiKey, int number) + { + if (apiKey != _configuration["apiKey"]) + { + return Unauthorized(); + } + + try + { + if ( + !Request.Headers.TryGetValue("Authorization", out var authHeader)) + { + return Unauthorized(); + } + + var credentialsArr = authHeader.ToString().Split(" "); + if (credentialsArr.Length != 2) + { + return Unauthorized(); + } + + var authValue = Encoding.UTF8.GetString(Convert.FromBase64String(credentialsArr[1])); + var username = authValue.Split(':')[0]; + var password = authValue.Split(':')[1]; + if (username != _configuration["morska-user"] || password != _configuration["morska-pass"]) + { + return Unauthorized(); + } + + var config = _db.Layers + .Include(x => x.Records) + .AsNoTracking() + .First(x => x.Number == number && !x.IsDeleted); + + if (config is null) + { + return BadRequest(); + } + + var type = config.Records?.Where(x => x.Code == "Type").FirstOrDefault(); + if (type is null || type.Desc1 != "ExternalConfiguration") { + return BadRequest(); + } + + return Ok(config); + } + catch + { + return BadRequest(); + } + } + [HttpGet] [Route("exportToGoogleSheet/{id:guid}")] public IActionResult ExportToGoogleSheet(Guid id) diff --git a/WebAPI/Helpers/DbSeed/Utlis/CreateConfig.sql b/WebAPI/Helpers/DbSeed/Utlis/CreateConfig.sql new file mode 100644 index 0000000..539dfa7 --- /dev/null +++ b/WebAPI/Helpers/DbSeed/Utlis/CreateConfig.sql @@ -0,0 +1,50 @@ +-- T3-MultiSourceSummary +DECLARE @JustForDebug TINYINT = 0; + +-- SETUP VARIABLES +DECLARE @Number INT = (SELECT COUNT(id) + 1 FROM [diunabi-morska].[dbo].[Layers]); +DECLARE @CurrentTimestamp NVARCHAR(14) = FORMAT(GETDATE(), 'yyyyMMddHHmm'); +DECLARE @Name NVARCHAR(50) = CONCAT( + 'L', @Number, '-A-C_D3-', @CurrentTimestamp +); +DECLARE @LayerId UNIQUEIDENTIFIER = NEWID(); + +DECLARE @Query NVARCHAR(MAX) = ' + SELECT + REPLACE(dko_Konto, ''-'', '''') + + CAST(YEAR(dko_DataDekretacji) AS VARCHAR) + + RIGHT(''0'' + CAST(MONTH(dko_DataDekretacji) AS VARCHAR), 2) AS Code, + SUM(dko_KwotaWn) AS Value +FROM [PRZYCHODNIA_MORSKA_SP_ZOO].[dbo].[dkr_Pozycja] +WHERE dko_Konto = ''402-5'' AND YEAR(dko_DataDekretacji) > 2023 +GROUP BY dko_Konto, dko_DataDekretacji ,dko_DataDekretacji +ORDER BY dko_Konto, dko_DataDekretacji; +'; + +SELECT @Name AS Name, @Query AS Query; + +IF @JustForDebug = 1 +BEGIN + SELECT 'Just for debug' AS Logger; + RETURN; +END; + +INSERT INTO [diunabi-morska].[dbo].[Layers] +([Id], [Number], [Name], [CreatedAt], [ModifiedAt], [IsDeleted], [CreatedById], [ModifiedById], [Type]) +VALUES (@LayerId, @Number, @Name, GETDATE(), GETDATE(), 0, '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 2); + +INSERT INTO [diunabi-morska].[dbo].[Records] +([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId]) +VALUES ((SELECT NEWID()), 'Type', 'ExternalConfiguration', GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, @LayerId); + +INSERT INTO [diunabi-morska].[dbo].[Records] +([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId]) +VALUES ((SELECT NEWID()), 'ConfigurationType', 'D3', GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, @LayerId); + +INSERT INTO [diunabi-morska].[dbo].[Records] +([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId]) +VALUES ((SELECT NEWID()), 'IsEnabled', 'True', GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, @LayerId); + +INSERT INTO [diunabi-morska].[dbo].[Records] +([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId]) +VALUES ((SELECT NEWID()), 'SQL-QUERY-1', @Query, GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, @LayerId); \ No newline at end of file diff --git a/WebAPI/Helpers/HttpRequests/getForPowerBI.http b/WebAPI/Helpers/HttpRequests/getForPowerBI.http index 863a4e9..970828a 100644 --- a/WebAPI/Helpers/HttpRequests/getForPowerBI.http +++ b/WebAPI/Helpers/HttpRequests/getForPowerBI.http @@ -1,3 +1,3 @@ ### -http://localhost:5400/api/layers/getForPowerBI/10763478CB738D4ecb2h76g803478CB738D4e/1205 -Authorization: Basic powerbi 0F9C7E2D19FSLOCgKexz2h76g802tj6a +http://localhost:5400/api/layers/getConfiguration/10763478CB738D4ecb2h76g803478CB738D4e/5926 +Authorization: Basic morska 0F9C7E8CB738gK2h76g803478CB diff --git a/WebAPI/Program.cs b/WebAPI/Program.cs index f4dfc13..8e81a49 100644 --- a/WebAPI/Program.cs +++ b/WebAPI/Program.cs @@ -78,6 +78,7 @@ app.Use(async (context, next) => var token = context.Request.Headers.Authorization.ToString(); if (token.Length > 0 && !context.Request.Path.ToString().Contains("getForPowerBI") + && !context.Request.Path.ToString().Contains("getConfiguration") && !context.Request.Path.ToString().Contains("DataInbox/Add")) { var handler = new JwtSecurityTokenHandler();