improvements, fixes, etc...
This commit is contained in:
parent
3abfc03d1e
commit
568deb0131
|
|
@ -1,21 +1,32 @@
|
|||
using AyCode.Core.Loggers;
|
||||
using AyCode.Services.SignalRs;
|
||||
using DocumentFormat.OpenXml.Office2010.Excel;
|
||||
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 Microsoft.AspNetCore.Mvc;
|
||||
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, IEnumerable<IAcLogWriterBase> logWriters): BasePluginController, IFruitBankDataControllerServer
|
||||
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());
|
||||
|
||||
|
|
@ -45,9 +56,9 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers
|
|||
{
|
||||
_logger.Detail($"GetPartnerById invoked; id: {id}");
|
||||
|
||||
var customers = await ctx.GetCustormersBySystemRoleName("Measuring").ToListAsync();
|
||||
//var customers = await ctx.GetCustormersBySystemRoleName("Measuring").ToListAsync();
|
||||
//_logger.Error($"COUNT: {customers.Count}");
|
||||
|
||||
_logger.Error($"COUNT: {customers.Count}");
|
||||
return await ctx.Partners.GetByIdAsync(id);
|
||||
}
|
||||
|
||||
|
|
@ -110,5 +121,87 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers
|
|||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ using LinqToDB;
|
|||
using Mango.Nop.Core.Repositories;
|
||||
using Microsoft.CodeAnalysis.CSharp.Syntax;
|
||||
using Nop.Core.Caching;
|
||||
using Nop.Core.Domain.Catalog;
|
||||
using Nop.Core.Domain.Customers;
|
||||
using Nop.Data;
|
||||
using Nop.Plugin.Misc.FruitBankPlugin.Domains.DataLayer.Interfaces;
|
||||
|
|
@ -18,20 +19,20 @@ public class FruitBankDbContext : MgDbContextBase, IPartnerDbSet<PartnerDbTable>
|
|||
private readonly IProductService _productService;
|
||||
private readonly IStaticCacheManager _staticCacheManager;
|
||||
|
||||
protected readonly IRepository<Customer> _customerRepository;
|
||||
protected readonly IRepository<CustomerCustomerRoleMapping> _customerCustomerRoleMappingRepository;
|
||||
protected readonly IRepository<CustomerRole> _customerRoleRepository;
|
||||
|
||||
public PartnerDbTable Partners { get; set; }
|
||||
public ShippingDbTable Shippings { get; set; }
|
||||
public ShippingItemDbTable ShippingItems { get; set; }
|
||||
public ShippingDocumentDbTable ShippingDocuments { get; set; }
|
||||
//public EntityRepository<Auction> Auctions2 { get; set; }
|
||||
//public IRepository<AuctionBid> AuctionBids2 { get; set; }
|
||||
|
||||
public IRepository<Product> Products { get; set; }
|
||||
public IRepository<Customer> Customers { get; set; }
|
||||
public IRepository<CustomerRole> CustomerRoles { get; set; }
|
||||
public IRepository<CustomerCustomerRoleMapping> CustomerRoleMappings { get; set; }
|
||||
|
||||
|
||||
public FruitBankDbContext(INopDataProvider dataProvider, PartnerDbTable partnerDbTable, ShippingDbTable shippingDbTable, ShippingItemDbTable shippingItemDbTable,
|
||||
ShippingDocumentDbTable shippingDocumentDbTable, IProductService productService, IStaticCacheManager staticCacheManager,
|
||||
public FruitBankDbContext(INopDataProvider dataProvider, PartnerDbTable partnerDbTable, ShippingDbTable shippingDbTable, ShippingItemDbTable shippingItemDbTable,
|
||||
ShippingDocumentDbTable shippingDocumentDbTable, IProductService productService, IStaticCacheManager staticCacheManager,
|
||||
IRepository<Product> productRepository,
|
||||
IRepository<Customer> customerRepository,
|
||||
IRepository<CustomerCustomerRoleMapping> customerCustomerRoleMappingRepository,
|
||||
IRepository<CustomerRole> customerRoleRepository,
|
||||
|
|
@ -45,13 +46,10 @@ public class FruitBankDbContext : MgDbContextBase, IPartnerDbSet<PartnerDbTable>
|
|||
ShippingItems = shippingItemDbTable;
|
||||
ShippingDocuments = shippingDocumentDbTable;
|
||||
|
||||
_customerRepository = customerRepository;
|
||||
_customerCustomerRoleMappingRepository = customerCustomerRoleMappingRepository;
|
||||
_customerRoleRepository = customerRoleRepository;
|
||||
|
||||
|
||||
//Auctions.Table
|
||||
//var auctions = DataProvider.GetTable<Auction>().Where(x => x.Closed);
|
||||
Products = productRepository;
|
||||
Customers = customerRepository;
|
||||
CustomerRoles = customerRoleRepository;
|
||||
CustomerRoleMappings = customerCustomerRoleMappingRepository;
|
||||
}
|
||||
|
||||
public IQueryable<MeasuringModel> GetMeasuringModelByShippingId(int shippingId)
|
||||
|
|
@ -70,92 +68,15 @@ public class FruitBankDbContext : MgDbContextBase, IPartnerDbSet<PartnerDbTable>
|
|||
if (systemRoleName.IsNullOrWhiteSpace()) throw new ArgumentException("systemRoleName.IsNullOrWhiteSpace()", nameof(systemRoleName));
|
||||
|
||||
var query =
|
||||
from c in _customerRepository.Table
|
||||
join crm in _customerCustomerRoleMappingRepository.Table on c.Id equals crm.CustomerId
|
||||
join cr in _customerRoleRepository.Table on crm.CustomerRoleId equals cr.Id
|
||||
from c in Customers.Table
|
||||
join crm in CustomerRoleMappings.Table on c.Id equals crm.CustomerId
|
||||
join cr in CustomerRoles.Table on crm.CustomerRoleId equals cr.Id
|
||||
where c.Active && !c.Deleted && cr.SystemName == systemRoleName
|
||||
select c;
|
||||
|
||||
return query.Distinct();
|
||||
|
||||
// query = query.Join(_customerCustomerRoleMappingRepository.Table, x => x.Id, y => y.CustomerId,
|
||||
// (x, y) => new { Customer = x, Mapping = y })
|
||||
// .Where(z => z.Mapping.CustomerRoleId == customerRoleId)
|
||||
// .Select(z => z.Customer)
|
||||
// .Distinct();
|
||||
//});
|
||||
|
||||
//return customers;
|
||||
}
|
||||
|
||||
////public AuctionDbContext(IRepository<Auction> _auctionRepository, IRepository<AuctionBid> _auctionBidRepository)
|
||||
////{
|
||||
//// Auctions2 = _auctionRepository as EntityRepository<Auction>;
|
||||
//// AuctionBids2 = _auctionBidRepository;
|
||||
////}
|
||||
|
||||
//public Task<List<AuctionBid>> GetAllLastBidByAuctionIdAsync(int auctionId) => AuctionBids.GetAllLastBidByAuctionId(auctionId).ToListAsync();
|
||||
|
||||
//public Task<Dictionary<int, AuctionBid>> GetAllLastBidDictionaryByAuctionIdAsync(int auctionId)
|
||||
// => AuctionBids.GetAllLastBidByAuctionId(auctionId).ToDictionaryAsync(x => x.ProductAuctionMappingId);
|
||||
|
||||
//public async Task<List<ProductToAuctionMapping>> GetProductToAuctionsByProductIdAsync(int productId)
|
||||
//{
|
||||
// return [..await ProductToAuctions.GetByProductId(productId).ToListAsync()];
|
||||
//}
|
||||
|
||||
//public async Task<List<ProductToAuctionMapping>> GetProductToAuctionByAuctionIdAndProductIdAsync(int auctionId, int productId, bool activeProductOnly)
|
||||
//{
|
||||
// return [..await ProductToAuctions.GetByAuctionAndProductId(auctionId, productId, activeProductOnly).ToListAsync()];
|
||||
//}
|
||||
|
||||
//public Task<bool> HasBidByProductToAuctionIdAsync(int productToAuctionId)
|
||||
// => AuctionBids.HasBidByProductToAuctionIdAsync(productToAuctionId);
|
||||
|
||||
//public Task<AuctionBid> GetLastAuctionBidByProductToAuctionId(int productToAuctionId)
|
||||
// => AuctionBids.GetLastAuctionBidByProductToAuctionId(productToAuctionId).FirstOrDefaultAsync();
|
||||
|
||||
//public Task<int> GetBidsCountByProductToAuctionIdAsync(int productToAuctionId)
|
||||
// => AuctionBids.GetBidsCountByProductToAuctionIdAsync(productToAuctionId);
|
||||
|
||||
|
||||
//public Task<AuctionBid> RevertAuctionBidByProductToAuctionId(int productToAuctionId)
|
||||
// => AuctionBids.RevertByProductToAuctionIdAsync(productToAuctionId);
|
||||
|
||||
////public async Task ResetProductToAuctionByProductId(int productId)
|
||||
//// => await ResetProductToAuctionAsync(await ProductToAuctions.GetByProductId(productId).FirstOrDefaultAsync());
|
||||
|
||||
//public async Task ResetProductToAuctionByIdAsync(int productToAuctionId, decimal basePrice = 0)
|
||||
// => await ResetProductToAuctionAsync(ProductToAuctions.GetById(productToAuctionId), basePrice);
|
||||
|
||||
//public async Task ResetProductToAuctionAsync(ProductToAuctionMapping productToAuction, decimal basePrice = 0)
|
||||
//{
|
||||
// if (productToAuction == null)
|
||||
// {
|
||||
// Logger.Error($"AuctionDbContext.ResetProductToAuctionAsync(); productToAuction == null");
|
||||
// return;
|
||||
// }
|
||||
|
||||
// await Logger.InformationAsync($"AuctionDbContext.ResetProductToAuctionAsync(); productToAuction.Id: {productToAuction.Id}; basePrice: {basePrice}");
|
||||
|
||||
// var product = await _productService.GetProductByIdAsync(productToAuction.ProductId);
|
||||
// if (product == null)
|
||||
// {
|
||||
// Logger.Error($"AuctionDbContext.ResetProductToAuctionAsync(); product == null");
|
||||
// return;
|
||||
// }
|
||||
|
||||
// if (basePrice <= 0) basePrice = product.Price;
|
||||
// else
|
||||
// {
|
||||
// product.Price = basePrice;
|
||||
// await _productService.UpdateProductAsync(product);
|
||||
// }
|
||||
|
||||
// await ProductToAuctions.ResetAsync(productToAuction, basePrice);
|
||||
// await AuctionBids.DeleteAllByProductToAuctionIdAsync(productToAuction.Id);
|
||||
|
||||
// await _staticCacheManager.ClearAsync();
|
||||
// //await _staticCacheManager.RemoveByPrefixAsync(AUCTION_PATTERN_KEY);
|
||||
//}
|
||||
public IQueryable<Product> GetProducts()
|
||||
=> Products.Table.Where(p => !p.Deleted);
|
||||
}
|
||||
|
|
@ -15,7 +15,6 @@ public class PartnerDbTable : MgDbTableBase<Partner>
|
|||
{
|
||||
}
|
||||
|
||||
public IQueryable<Partner> GetAll() => Table;
|
||||
|
||||
//public IOrderedQueryable<AuctionBid> GetAllLastBidByAuctionId(int auctionId)
|
||||
//{
|
||||
|
|
|
|||
|
|
@ -14,6 +14,4 @@ public class ShippingDbTable : MgDbTableBase<Shipping>
|
|||
: base(eventPublisher, dataProvider, shortTermCacheManager, staticCacheManager, appSettings, logger)
|
||||
{
|
||||
}
|
||||
|
||||
public IQueryable<Shipping> GetAll() => Table;
|
||||
}
|
||||
|
|
@ -14,6 +14,4 @@ public class ShippingDocumentDbTable : MgDbTableBase<ShippingDocument>
|
|||
: base(eventPublisher, dataProvider, shortTermCacheManager, staticCacheManager, appSettings, logger)
|
||||
{
|
||||
}
|
||||
|
||||
public IQueryable<ShippingDocument> GetAll() => Table;
|
||||
}
|
||||
|
|
@ -14,6 +14,4 @@ public class ShippingItemDbTable : MgDbTableBase<ShippingItem>
|
|||
: base(eventPublisher, dataProvider, shortTermCacheManager, staticCacheManager, appSettings, logger)
|
||||
{
|
||||
}
|
||||
|
||||
public IQueryable<ShippingItem> GetAll() => Table;
|
||||
}
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
|
||||
using FruitBank.Common.Server;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc.Infrastructure;
|
||||
using Microsoft.AspNetCore.Mvc.Routing;
|
||||
|
|
@ -50,7 +51,7 @@ namespace Nop.Plugin.Misc.FruitBankPlugin
|
|||
// --- INSTALL ---
|
||||
public override async Task InstallAsync()
|
||||
{
|
||||
//TODO: Add "Measuring" role
|
||||
//TODO: Add "Measuring" role - FruitBankConst.MeasuringRoleSystemName
|
||||
//TODO: Add "NeedsToBeMeasured" product attribute if not exists
|
||||
|
||||
// Default settings
|
||||
|
|
|
|||
Loading…
Reference in New Issue