Переход на прямое подключение веб-приложения к логике, вместо использования Rest проекта

This commit is contained in:
abazov73 2023-05-17 11:10:25 +04:00
parent 4898fbe7b1
commit 050a46e3d1
3 changed files with 37 additions and 26 deletions

View File

@ -1,4 +1,6 @@
using BankContracts.BindingModels;
using BankContracts.BusinessLogicsContracts;
using BankContracts.SearchModels;
using BankContracts.ViewModels;
using BankDatabaseImplement.Models;
using BankDataModels.Models;
@ -12,10 +14,18 @@ namespace OperatorApp.Controllers
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
private readonly IDealLogic _dealLogic;
private readonly IPaymentLogic _paymentLogic;
private readonly ITransferLogic _transferLogic;
private readonly IOperatorLogic _operatorLogic;
public HomeController(ILogger<HomeController> logger)
public HomeController(ILogger<HomeController> logger, IDealLogic dealLogic, IPaymentLogic paymentLogic, ITransferLogic transferLogic, IOperatorLogic operatorLogic)
{
_logger = logger;
_dealLogic = dealLogic;
_paymentLogic = paymentLogic;
_transferLogic = transferLogic;
_operatorLogic = operatorLogic;
}
public IActionResult Index()
@ -24,7 +34,7 @@ namespace OperatorApp.Controllers
{
return Redirect("~/Home/Enter");
}
return View(APIClient.GetRequest<List<DealViewModel>>($"api/deal/getdeals?operatorId={APIClient.Operator.Id}"));
return View(_dealLogic.ReadList(new DealSearchModel { OperatorId = APIClient.Operator.Id}));
}
[HttpGet]
@ -48,7 +58,7 @@ namespace OperatorApp.Controllers
{
throw new Exception("Введите логин, пароль и ФИО");
}
APIClient.PostRequest("api/operator/updateoperator", new OperatorBindingModel
_operatorLogic.Update(new OperatorBindingModel
{
Id = APIClient.Operator.Id,
LastName = lastname,
@ -85,7 +95,7 @@ namespace OperatorApp.Controllers
{
throw new Exception("Введите логин и пароль");
}
APIClient.Operator = APIClient.GetRequest<OperatorViewModel>($"api/operator/login?login={login}&password={password}");
APIClient.Operator = _operatorLogic.ReadElement(new OperatorSearchModel { Login = login, Password = password});
if (APIClient.Operator == null)
{
throw new Exception("Неверный логин/пароль");
@ -106,7 +116,7 @@ namespace OperatorApp.Controllers
{
throw new Exception("Введите логин, пароль и ФИО");
}
APIClient.PostRequest("api/operator/createoperator", new OperatorBindingModel
_operatorLogic.Create(new OperatorBindingModel
{
LastName = lastname,
FirstName = firstname,
@ -130,7 +140,7 @@ namespace OperatorApp.Controllers
{
throw new Exception("Вы как суда попали? Суда вход только авторизованным");
}
APIClient.PostRequest("api/deal/createdeal", new DealBindingModel
_dealLogic.Create(new DealBindingModel
{
ClientId = clientid,
OperatorId = APIClient.Operator.Id,
@ -143,12 +153,12 @@ namespace OperatorApp.Controllers
{
return Redirect("~/Home/Enter");
}
return View(APIClient.GetRequest<List<PaymentViewModel>>($"api/payment/getpayments?operatorId={APIClient.Operator.Id}"));
return View(_paymentLogic.ReadList(new PaymentSearchModel { OperatorId = APIClient.Operator.Id}));
}
[HttpGet]
public IActionResult CreatePayment()
{
ViewBag.Deals = APIClient.GetRequest<List<DealViewModel>>("api/deal/getdealslist");
ViewBag.Deals = _dealLogic.ReadList(new DealSearchModel { OperatorId = APIClient.Operator.Id});
return View();
}
[HttpPost]
@ -158,27 +168,13 @@ namespace OperatorApp.Controllers
{
throw new Exception("Вы как суда попали? Суда вход только авторизованным");
}
Dictionary<int, ICurrencyModel> CurrencyPayments = new();
//foreach (int id in deals)
//{
// var deal = APIClient.GetRequest<DealViewModel>($"api/deal/getdeal?id={id}");
// if (deal != null) CurrencyPayments.Add(deal.Id, deal as IModel);
//}
APIClient.PostRequest("api/payment/createpayment", new PaymentBindingModel
{
OperatorId = APIClient.Operator.Id,
});
var payments = APIClient.GetRequest<List<PaymentViewModel>>("api/payment/getpaymentslist");
int addedPaymentId = payments == null ? 1 : payments[payments.Count - 1].Id;
Dictionary<int, IDealModel> DealPayments = new();
foreach (int id in deals)
{
var deal = APIClient.GetRequest<DealViewModel>($"api/deal/getdeal?id={id}");
if (deal != null)
{
APIClient.PostRequest<DealViewModel>($"api/payment/adddealtopayment?paymentId={addedPaymentId}", deal);
}
var deal = _dealLogic.ReadElement(new DealSearchModel { Id = id});
if (deal != null) DealPayments.Add(deal.Id, deal);
}
_paymentLogic.Create(new PaymentBindingModel { OperatorId = APIClient.Operator.Id, DealPayments = DealPayments, });
Response.Redirect("Payments");
}
}

View File

@ -15,6 +15,7 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\BankBusinessLogic\BankBusinessLogic.csproj" />
<ProjectReference Include="..\BankContracts\BankContracts.csproj" />
<ProjectReference Include="..\BankDatabaseImplement\BankDatabaseImplement.csproj" />
</ItemGroup>

View File

@ -1,3 +1,7 @@
using BankBusinessLogic.BusinessLogics;
using BankContracts.BusinessLogicsContracts;
using BankContracts.StoragesContracts;
using BankDatabaseImplement.Implements;
using OperatorApp;
var builder = WebApplication.CreateBuilder(args);
@ -5,6 +9,16 @@ var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllersWithViews();
builder.Services.AddTransient<IDealStorage, DealStorage>();
builder.Services.AddTransient<IPaymentStorage, PaymentStorage>();
builder.Services.AddTransient<ITransferStorage, TransferStorage>();
builder.Services.AddTransient<IOperatorStorage, OperatorStorage>();
builder.Services.AddTransient<IDealLogic, DealLogic>();
builder.Services.AddTransient<IPaymentLogic, PaymentLogic>();
builder.Services.AddTransient<ITransferLogic, TransferLogic>();
builder.Services.AddTransient<IOperatorLogic, OperatorLogic>();
var app = builder.Build();
APIClient.Connect(builder.Configuration);