This commit is contained in:
spacyboy 2024-04-29 19:25:42 +04:00
commit 75d7be454c
7 changed files with 136 additions and 48 deletions

@ -7,6 +7,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging.Log4Net.AspNetCore" Version="6.1.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
</ItemGroup>

@ -0,0 +1,68 @@
using CarCenterContracts.BindingModels;
using CarCenterContracts.BusinessLogicsContracts;
using CarCenterContracts.SearchModels;
using CarCenterContracts.ViewModels;
using Microsoft.AspNetCore.Mvc;
namespace CarCenterRestApi.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
public class AdministratorController : Controller
{
private readonly ILogger _logger;
private readonly IAdministratorLogic _logic;
public AdministratorController(IAdministratorLogic logic, ILogger<AdministratorController> logger)
{
_logger = logger;
_logic = logic;
}
[HttpGet]
public AdministratorViewModel? Login(string login, string password)
{
try
{
return _logic.ReadElement(new AdministratorSearchModel
{
AdministratorEmail = login,
AdministratorPassword = password
});
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка входа в систему");
throw;
}
}
[HttpPost]
public void Register(AdministratorBindingModel model)
{
try
{
_logic.Create(model);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка регистрации");
throw;
}
}
[HttpPost]
public void UpdateData(AdministratorBindingModel model)
{
try
{
_logic.Update(model);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка обновления данных");
throw;
}
}
}
}

@ -0,0 +1,11 @@
using Microsoft.AspNetCore.Mvc;
namespace CarCenterRestApi.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
public class MainController : Controller
{
}
}

@ -1,33 +0,0 @@
using Microsoft.AspNetCore.Mvc;
namespace CarCenterRestApi.Controllers
{
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
}
}

@ -1,11 +1,49 @@
using CarCenterBusinessLogic.BusinessLogics;
using CarCenterContracts.BusinessLogicsContracts;
using CarCenterContracts.StoragesContracts;
using CarCenterDataBaseImplement.Implements;
using CarCenterDataBaseImplement.Implemets;
using Microsoft.OpenApi.Models;
var builder = WebApplication.CreateBuilder(args);
builder.Logging.SetMinimumLevel(LogLevel.Trace);
builder.Logging.AddLog4Net("log4net.config");
// Add services to the container.
builder.Services.AddTransient<IManagerStorage, ManagerStorage>();
builder.Services.AddTransient<IPreSaleWorkStorage, PreSaleWorkStorage>();
builder.Services.AddTransient<ISaleStorage, SaleStorage>();
builder.Services.AddTransient<IEmployeeStorage, EmployeeStorage>();
builder.Services.AddTransient<IManagerLogic, ManagerLogic>();
builder.Services.AddTransient<IPreSaleWorkLogic, PreSaleWorkLogic>();
builder.Services.AddTransient<ISaleLogic, SaleLogic>();
builder.Services.AddTransient<IEmployeeLogic, EmployeeLogic>();
builder.Services.AddTransient<IAdministratorStorage, AdministratorStorage>();
builder.Services.AddTransient<ICarStorage, CarStorage>();
builder.Services.AddTransient<IEquipmentStorage, EquipmentStorage>();
builder.Services.AddTransient<IInspectionStorage, InspectionStorage>();
builder.Services.AddTransient<IAdministratorLogic, AdministratorLogic>();
builder.Services.AddTransient<ICarLogic, CarLogic>();
builder.Services.AddTransient<IEquipmentLogic, EquipmentLogic>();
builder.Services.AddTransient<IInspectionLogic, InspectionLogic>();
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo
{
Title = "CarCenterRestApi",
Version = "v1"
});
});
var app = builder.Build();
@ -13,7 +51,7 @@ var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "CarCenterRestApi v1"));
}
app.UseHttpsRedirection();

@ -1,13 +0,0 @@
namespace CarCenterRestApi
{
public class WeatherForecast
{
public DateTime Date { get; set; }
public int TemperatureC { get; set; }
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
public string? Summary { get; set; }
}
}

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<file value="c:/temp/HotelRestApi.log" />
<appendToFile value="true" />
<maximumFileSize value="100KB" />
<maxSizeRollBackups value="2" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %5level %logger.%method [%line] - MESSAGE: %message%newline %exception" />
</layout>
</appender>
<root>
<level value="TRACE" />
<appender-ref ref="RollingFile" />
</root>
</log4net>