diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json new file mode 100644 index 0000000..677ed3f --- /dev/null +++ b/.config/dotnet-tools.json @@ -0,0 +1,12 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "dotnet-ef": { + "version": "8.0.4", + "commands": [ + "dotnet-ef" + ] + } + } +} \ No newline at end of file diff --git a/Controllers/ProductController.cs b/Controllers/ProductController.cs index 91056fc..5eda21b 100644 --- a/Controllers/ProductController.cs +++ b/Controllers/ProductController.cs @@ -16,7 +16,12 @@ namespace FirmTracker_Server.Controllers } // POST: api/Products + /// + /// Creates a new product. + /// [HttpPost] + [ProducesResponseType(200)] // Created + [ProducesResponseType(400)] // Bad Request public IActionResult CreateProduct([FromBody] Product product) { try @@ -32,6 +37,8 @@ namespace FirmTracker_Server.Controllers // GET: api/Products/5 [HttpGet("{id}")] + [ProducesResponseType(200)] // Created + [ProducesResponseType(400)] // Bad Request public IActionResult GetProduct(int id) { var product = _productCrud.GetProduct(id); @@ -42,6 +49,8 @@ namespace FirmTracker_Server.Controllers // PUT: api/Products/5 [HttpPut("{id}")] + [ProducesResponseType(200)] // Created + [ProducesResponseType(400)] // Bad Request public IActionResult UpdateProduct(int id, [FromBody] Product product) { if (id != product.Id) @@ -60,6 +69,8 @@ namespace FirmTracker_Server.Controllers // DELETE: api/Products/5 [HttpDelete("{id}")] + [ProducesResponseType(200)] // Created + [ProducesResponseType(400)] // Bad Request public IActionResult DeleteProduct(int id) { try @@ -75,6 +86,8 @@ namespace FirmTracker_Server.Controllers // GET: api/Products [HttpGet] + [ProducesResponseType(200)] // Created + [ProducesResponseType(400)] // Bad Request public IActionResult GetAllProducts() { var products = _productCrud.GetAllProducts(); diff --git a/FirmTracker-Server.csproj b/FirmTracker-Server.csproj index 727e11d..3616e11 100644 --- a/FirmTracker-Server.csproj +++ b/FirmTracker-Server.csproj @@ -5,8 +5,13 @@ enable enable FirmTracker_Server + 08986e21-848b-485a-a219-03e2dc6041e4 + + + + @@ -16,4 +21,31 @@ + + + True + True + Resources.resx + + + + + + PreserveNewest + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + + + PreserveNewest + + + diff --git a/Program.cs b/Program.cs index 9986c4b..bff4c04 100644 --- a/Program.cs +++ b/Program.cs @@ -4,33 +4,75 @@ using NHibernate.Dialect; using NHibernate.Driver; using FirmTracker_Server.Controllers; using FirmTracker_Server.nHibernate.Products; +using FirmTracker_Server.nHibernate; namespace FirmTracker_Server { public class Program { + public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); + string appDirectory = Directory.GetCurrentDirectory(); + // Combine the application directory with the relative path to the config file + string configFilePath = Path.Combine(appDirectory, "appsettings.json"); + string connectionString = ""; + // Check if the config file exists + if (File.Exists(configFilePath)) + { + var config = new ConfigurationBuilder() + .AddJsonFile(configFilePath) + .Build(); + + + var connectionstringsection = config.GetSection("AppSettings:ConnectionString"); + + connectionString = connectionstringsection.Value; + + SessionFactory.Init(connectionString); + } + else + { + Console.WriteLine($"The configuration file '{configFilePath}' was not found."); + } - // Add services to the container. TestClass test = new TestClass(); test.AddTestProduct(); builder.Services.AddControllers(); - // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle + builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); var app = builder.Build(); + var configSwagger = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .Build(); - // Configure the HTTP request pipeline. - if (app.Environment.IsDevelopment()) + + var port = configSwagger.GetValue("Port", 5075); + var port2 = configSwagger.GetValue("Port", 7039); + app.Urls.Add($"http://*:{port}"); + app.Urls.Add($"https://*:{port2}"); + + try { app.UseSwagger(); - app.UseSwaggerUI(); + app.UseSwaggerUI(c => + { + c.SwaggerEndpoint($"/swagger/v1/swagger.json", "FirmTracker - TEST"); + c.RoutePrefix = "swagger"; + }); + Console.WriteLine("uruchomiono swaggera"); + app.UseHttpsRedirection(); + } + catch (Exception ex) + { + Console.WriteLine("Nie uda³o siê uruchomiæ swaggera"); } - app.UseHttpsRedirection(); + Console.WriteLine("raz dwa trzy"); app.UseAuthorization(); @@ -38,9 +80,9 @@ namespace FirmTracker_Server app.MapControllers(); var configuration = new Configuration(); - + app.Run(); } } -} \ No newline at end of file +} diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs new file mode 100644 index 0000000..9a0ac44 --- /dev/null +++ b/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace FirmTracker_Server.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("FirmTracker_Server.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/Properties/Resources.resx b/Properties/Resources.resx new file mode 100644 index 0000000..4fdb1b6 --- /dev/null +++ b/Properties/Resources.resx @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Properties/launchSettings.json b/Properties/launchSettings.json index ae02a6f..c7b3353 100644 --- a/Properties/launchSettings.json +++ b/Properties/launchSettings.json @@ -1,4 +1,34 @@ -{ +{ + "profiles": { + "http": { + "commandName": "Project", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Production" + }, + "dotnetRunMessages": true, + "applicationUrl": "http://localhost:5045" + }, + "https": { + "commandName": "Project", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Production" + }, + "dotnetRunMessages": true, + "applicationUrl": "https://localhost:7039;http://localhost:5045" + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Production" + } + } + }, "$schema": "https://json.schemastore.org/launchsettings.json", "iisSettings": { "windowsAuthentication": false, @@ -7,35 +37,5 @@ "applicationUrl": "http://localhost:17940", "sslPort": 44326 } - }, - "profiles": { - "http": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "launchUrl": "swagger", - "applicationUrl": "http://localhost:5045", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "https": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "launchUrl": "swagger", - "applicationUrl": "https://localhost:7039;http://localhost:5045", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "launchUrl": "swagger", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } } -} +} \ No newline at end of file diff --git a/TestClass.cs b/TestClass.cs index e428bcb..f7302d4 100644 --- a/TestClass.cs +++ b/TestClass.cs @@ -8,21 +8,30 @@ namespace FirmTracker_Server { public void AddTestProduct() { - SessionFactory.Init("Server=localhost;Database=FirmTrackerDB;User Id=sa;Password=Rap45tro2;"); + // SessionFactory.Init(ConnectionString); var product = new nHibernate.Products.Product { - Name = "Test Product2", - Description = "This is a test product", - Price = 11.99m, - Type = 0, // Goods - Availability = true + Name = "Produkt 1", + Description = "testowy produkt", + Price = 11.50m, + Type = 1, + Availability = 5 + }; + var product2 = new nHibernate.Products.Product + { + Name = "Usluga 1", + Description = "testowa usluga", + Price = 1120.00m, + Type = 0, + Availability = 0 }; try { FirmTracker_Server.nHibernate.Products.ProductCRUD crud = new ProductCRUD(); crud.AddProduct(product); + crud.AddProduct(product2); } catch(Exception ex) { diff --git a/appsettings.json b/appsettings.json index 10f68b8..57058bd 100644 --- a/appsettings.json +++ b/appsettings.json @@ -1,9 +1,29 @@ { - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } + "AppSettings": { + "ConnectionString": "Server=localhost;Database=FirmTrackerDB;User Id=sa;Password=Rap45tro2;", }, - "AllowedHosts": "*" -} + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "http://localhost:5045" + + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "https://localhost:7039" + + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger" + + } + } +} \ No newline at end of file diff --git a/nHIbernate/Products/Product.cs b/nHIbernate/Products/Product.cs index 2faefa4..f0089b4 100644 --- a/nHIbernate/Products/Product.cs +++ b/nHIbernate/Products/Product.cs @@ -1,4 +1,6 @@ -namespace FirmTracker_Server.nHibernate.Products +using System.Text.Json.Serialization; + +namespace FirmTracker_Server.nHibernate.Products { public class Product { @@ -7,6 +9,6 @@ public virtual string Description { get; set; } public virtual decimal Price { get; set; } public virtual int Type { get; set; } // 0 for service, 1 for goods - public virtual bool Availability { get; set; } + public virtual int Availability { get; set; } } }