208 lines
8.4 KiB
C#
208 lines
8.4 KiB
C#
using AyCode.Core.Loggers;
|
|
using AyCode.Services.SignalRs;
|
|
using FruitBank.Common.Entities;
|
|
using FruitBank.Common.Interfaces;
|
|
using FruitBank.Common.Loggers;
|
|
using FruitBank.Common.Models;
|
|
using FruitBank.Common.Server;
|
|
using FruitBank.Common.SignalRs;
|
|
using Mango.Nop.Core.Dtos;
|
|
using Mango.Nop.Core.Models;
|
|
using Nop.Core;
|
|
using Nop.Core.Domain.Customers;
|
|
using Nop.Plugin.Misc.FruitBankPlugin.Domains.DataLayer;
|
|
using Nop.Services.Customers;
|
|
using Nop.Services.Localization;
|
|
using Nop.Web.Framework.Controllers;
|
|
using NUglify.Helpers;
|
|
|
|
namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers
|
|
{
|
|
//https://linq2db.github.io/articles/sql/Join-Operators.html
|
|
public class FruitBankDataController(
|
|
FruitBankDbContext ctx,
|
|
IWorkContext workContext,
|
|
ICustomerService customerService,
|
|
ICustomerRegistrationService customerRegistrationService,
|
|
ILocalizationService localizationService,
|
|
IEnumerable<IAcLogWriterBase> logWriters)
|
|
: BasePluginController, IFruitBankDataControllerServer
|
|
{
|
|
private readonly ILogger _logger = new Logger<FruitBankDataController>(logWriters.ToArray());
|
|
|
|
|
|
[SignalR(SignalRTags.GetMeasuringModels)]
|
|
public async Task<List<MeasuringModel>> GetMeasuringModels()
|
|
{
|
|
throw new NotImplementedException("GetMeasuringModels");
|
|
}
|
|
|
|
[SignalR(SignalRTags.GetMeasuringModelByShippingId)]
|
|
public async Task<MeasuringModel> GetMeasuringModelByShippingId(int shippingId)
|
|
{
|
|
return await ctx.GetMeasuringModelByShippingId(shippingId).FirstOrDefaultAsync();
|
|
}
|
|
|
|
[SignalR(SignalRTags.GetPartners)]
|
|
public async Task<List<Partner>> GetPartners()
|
|
{
|
|
_logger.Detail($"GetPartners invoked");
|
|
|
|
return await ctx.Partners.GetAll().ToListAsync();
|
|
}
|
|
|
|
[SignalR(SignalRTags.GetPartnerById)]
|
|
public async Task<Partner> GetPartnerById(int id)
|
|
{
|
|
_logger.Detail($"GetPartnerById invoked; id: {id}");
|
|
|
|
//var customers = await ctx.GetCustormersBySystemRoleName("Measuring").ToListAsync();
|
|
//_logger.Error($"COUNT: {customers.Count}");
|
|
|
|
return await ctx.Partners.GetByIdAsync(id);
|
|
}
|
|
|
|
[SignalR(SignalRTags.UpdatePartner)]
|
|
public async Task<Partner> UpdatePartner(Partner partner)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(partner);
|
|
|
|
_logger.Detail($"UpdatePartner invoked; id: {partner.Id}");
|
|
|
|
await ctx.Partners.UpdateAsync(partner);
|
|
return partner;
|
|
}
|
|
|
|
|
|
[SignalR(SignalRTags.GetShippings)]
|
|
public async Task<List<Shipping>> GetShippings()
|
|
{
|
|
_logger.Detail($"GetShippings invoked");
|
|
|
|
return await ctx.Shippings.GetAll().ToListAsync();
|
|
}
|
|
|
|
[SignalR(SignalRTags.GetShippingById)]
|
|
public async Task<Shipping> GetShippingById(int id)
|
|
{
|
|
_logger.Detail($"GetShippingById invoked; id: {id}");
|
|
|
|
return await ctx.Shippings.GetByIdAsync(id);
|
|
}
|
|
|
|
[SignalR(SignalRTags.GetShippingItems)]
|
|
public async Task<List<ShippingItem>> GetShippingItems()
|
|
{
|
|
_logger.Detail($"GetShippingItems invoked");
|
|
|
|
return await ctx.ShippingItems.GetAll().ToListAsync();
|
|
}
|
|
|
|
[SignalR(SignalRTags.GetShippingItemById)]
|
|
public async Task<ShippingItem> GetShippingItemById(int id)
|
|
{
|
|
_logger.Detail($"GetShippingItemById invoked; id: {id}");
|
|
|
|
return await ctx.ShippingItems.GetByIdAsync(id);
|
|
}
|
|
|
|
[SignalR(SignalRTags.GetShippingDocuments)]
|
|
public async Task<List<ShippingDocument>> GetShippingDocuments()
|
|
{
|
|
_logger.Detail($"GetShippingDocuments invoked");
|
|
|
|
return await ctx.ShippingDocuments.GetAll().ToListAsync();
|
|
}
|
|
|
|
[SignalR(SignalRTags.GetShippingDocumentById)]
|
|
public async Task<ShippingDocument> GetShippingDocumentById(int id)
|
|
{
|
|
_logger.Detail($"GetShippingDocumentById invoked; id: {id}");
|
|
|
|
return await ctx.ShippingDocuments.GetByIdAsync(id);
|
|
}
|
|
|
|
[SignalR(SignalRTags.GetMeasuringUsers)]
|
|
public async Task<List<CustomerDto>> GetMeasuringUsers()
|
|
{
|
|
_logger.Detail($"GetMeasuringUsers invoked");
|
|
|
|
var customers = await ctx.GetCustormersBySystemRoleName(FruitBankConst.MeasuringRoleSystemName).OrderBy(o => o.Username).Select(c => new CustomerDto(c)).ToListAsync();
|
|
|
|
return customers; //.ToModelDto<CustomerDto>();
|
|
}
|
|
|
|
[SignalR(SignalRTags.GetProductDtos)]
|
|
public async Task<List<ProductDto>> GetProductDtos()
|
|
{
|
|
_logger.Detail($"GetProductDtos invoked");
|
|
|
|
return await ctx.GetProducts().OrderBy(o => o.Name).Select(c => new ProductDto(c)).ToListAsync();
|
|
}
|
|
|
|
[SignalR(SignalRTags.AuthenticateUser)]
|
|
public async Task<MgLoginModelResponse> LoginMeasuringUser(MgLoginModelRequest loginModelRequest)
|
|
{
|
|
var customerEmail = loginModelRequest?.Email;
|
|
var customerPassword = loginModelRequest?.Password;
|
|
|
|
_logger.Detail($"LoginMeasuringUser invoked; customerEmail; {customerEmail}");
|
|
|
|
var resultLoginModel = new MgLoginModelResponse();
|
|
|
|
if (!customerEmail.IsNullOrWhiteSpace() && !customerPassword.IsNullOrWhiteSpace())
|
|
{
|
|
var loginResult = await customerRegistrationService.ValidateCustomerAsync(customerEmail, customerPassword);
|
|
|
|
switch (loginResult)
|
|
{
|
|
case CustomerLoginResults.Successful:
|
|
{
|
|
var customer = await customerService.GetCustomerByEmailAsync(customerEmail);
|
|
|
|
var isInMeasuringRole = await customerService.IsInCustomerRoleAsync(customer, FruitBankConst.MeasuringRoleSystemName);
|
|
if (!isInMeasuringRole)
|
|
{
|
|
resultLoginModel.ErrorMessage = "Is not in MeauringRole!";
|
|
break;
|
|
}
|
|
|
|
//var actionResult = await customerRegistrationService.SignInCustomerAsync(customer, returnUrl, loginModel.RememberMe);
|
|
|
|
//await _workContext.SetCurrentCustomerAsync(customer);
|
|
//await _authenticationService.SignInAsync(customer, isPersist);
|
|
////raise event
|
|
//await _eventPublisher.PublishAsync(new CustomerLoggedinEvent(customer));
|
|
|
|
resultLoginModel.CustomerDto = new CustomerDto(customer); //customer.ToModel<CustomerDto>();
|
|
break;
|
|
}
|
|
case CustomerLoginResults.CustomerNotExist:
|
|
resultLoginModel.ErrorMessage = await localizationService.GetResourceAsync("Account.Login.WrongCredentials.CustomerNotExist");
|
|
break;
|
|
case CustomerLoginResults.Deleted:
|
|
resultLoginModel.ErrorMessage = await localizationService.GetResourceAsync("Account.Login.WrongCredentials.Deleted");
|
|
break;
|
|
case CustomerLoginResults.NotActive:
|
|
resultLoginModel.ErrorMessage = await localizationService.GetResourceAsync("Account.Login.WrongCredentials.NotActive");
|
|
break;
|
|
case CustomerLoginResults.NotRegistered:
|
|
resultLoginModel.ErrorMessage = await localizationService.GetResourceAsync("Account.Login.WrongCredentials.NotRegistered");
|
|
break;
|
|
case CustomerLoginResults.LockedOut:
|
|
resultLoginModel.ErrorMessage = await localizationService.GetResourceAsync("Account.Login.WrongCredentials.LockedOut");
|
|
break;
|
|
case CustomerLoginResults.WrongPassword:
|
|
default:
|
|
resultLoginModel.ErrorMessage = await localizationService.GetResourceAsync("Account.Login.WrongCredentials");
|
|
break;
|
|
}
|
|
}
|
|
else resultLoginModel.ErrorMessage = await localizationService.GetResourceAsync("Account.Login.WrongCredentials");
|
|
|
|
if (!resultLoginModel.ErrorMessage.IsNullOrWhiteSpace()) _logger.Error($"{resultLoginModel.ErrorMessage}; email: {customerEmail}");
|
|
return resultLoginModel;
|
|
}
|
|
}
|
|
}
|