using Microsoft.AspNetCore.Mvc; using Nop.Web.Framework.Controllers; using Nop.Web.Framework.Mvc.Filters; using Nop.Web.Framework; using Nop.Plugin.Misc.AuctionPlugin.Areas.Admin.Models; using Nop.Services.Configuration; using Nop.Plugin.Misc.AuctionPlugin; using Nop.Services.Messages; using Nop.Services.Localization; using Nop.Services.Logging; using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; using Nop.Plugin.Misc.AuctionPlugin.Services; using Nop.Web.Framework.Models.DataTables; using Nop.Plugin.Misc.AuctionPlugin.Models; using AyCode.Core.Extensions; namespace Nop.Plugin.Misc.AuctionPlugin.Areas.Admin.Controllers; //[AutoValidateAntiforgeryToken] //[AuthorizeAdmin] [Area(AreaNames.ADMIN)] public class AuctionPluginAdminController : BasePluginController { //private readonly SignalRservice _signalRservice; protected readonly ILocalizationService _localizationService; protected readonly INotificationService _notificationService; protected readonly ISettingService _settingService; protected readonly AuctionSettings _auctionSettings; protected readonly AuctionService _auctionService; protected readonly ILogger _logger; //public AuctionPluginAdminController(SignalRservice signalRservice) public AuctionPluginAdminController(ILocalizationService localizationService, INotificationService notificationService, ISettingService settingService, AuctionSettings auctionSettings, ILogger logger, AuctionService auctionService) { _localizationService = localizationService; _notificationService = notificationService; _settingService = settingService; _auctionSettings = auctionSettings; //_signalRservice = signalRservice; _auctionService = auctionService; _logger = logger; } public async Task Configure(bool showtour = false) { return View("~/Plugins/Misc.AuctionPlugin/Areas/Admin/Views/Configure.cshtml", new ConfigurationModel()); } [HttpPost, ActionName("Configure")] [FormValueRequired("save")] public async Task Configure(ConfigurationModel model) { if (!ModelState.IsValid) { await _logger.ErrorAsync($"Auction configuration model error: invalid modelstate!"); return await Configure(); } if (_auctionSettings.SomeText != model.Test) { _auctionSettings.SomeText = model.Test; await _logger.InformationAsync($"Auction configuration saving: {_auctionSettings.SomeText}"); } await _settingService.SaveSettingAsync(_auctionSettings); await _logger.InformationAsync($"Auction configuration saved: {_auctionSettings.SomeText}"); //_notificationService.SuccessNotification(await _localizationService.GetResourceAsync("Admin.Plugins.Saved")); _notificationService.SuccessNotification("Saved"); return await Configure(); } //[HttpPost] //public async Task TestHubConnection(string message) //{ // try // { // await _signalRservice.TestHub(); // return Json(new { success = true, message = $"Hub successfully called - {message}" }); // } // catch (Exception ex) // { // return Json(new { success = false, message = $"Error: {ex.Message}" }); // } //} public IActionResult GetAuctionViewModel() { var model = new AuctionViewModel(); return View("~/Plugins/Misc.AuctionPlugin/Areas/Admin/Views/Auction.cshtml", model); } public async Task AuctionList() { await _logger.InformationAsync("AnnouncementList called!"); var model = new AuctionViewModel(); return View("~/Plugins/Misc.AuctionPlugin/Areas/Admin/Views/AuctionList.cshtml", model); } [HttpPost] public async Task GetAuctionViewModel(AuctionViewModel viewModel) { Auction objOfAuctionDomain = new Auction(); objOfAuctionDomain.AuctionName = viewModel.AuctionName; objOfAuctionDomain.AuctionType = viewModel.AuctionType; objOfAuctionDomain.StartDateUtc = viewModel.StartDateUtc; objOfAuctionDomain.EndDateUtc = viewModel.EndDateUtc; objOfAuctionDomain.Closed = viewModel.Closed; objOfAuctionDomain.Created = DateTime.UtcNow; //TODO: ezt kell majd használni! - J. //var objOfAuctionDomain = viewModel.AuctionDto.CreateMainEntity(); await _auctionService.InsertAuctionAsync(objOfAuctionDomain); //if (viewModel.IsActive == true) //{ // await _announcementHubContext.Clients.All.SendAsync("send", viewModel.Body.ToString()); //} return RedirectToAction("AuctionList"); } [HttpPost] public async Task GetAuctionList() { //await _logger.InformationAsync("GetAnnouncementList called!"); //var total = (await _announcementService.GetAnnouncementsAsync()).Count(); //var result = await _announcementService.GetAnnouncementsAsync(request.Page, request.PageSize); //return Json(new //{ // Data = result, // Total = total //}); try { return Ok(new DataTablesModel { Data = await _auctionService.GetAllAuctionsAsync() }); } catch (Exception ex) { return BadRequest(ex); } } public async Task TestPage() { var model = new TestPageViewModel(); var auctions = await _auctionService.GetAllAuctionsAsync(); var auctionDtoWithProducts = await _auctionService.GetAuctionDtoWithProductByIdAsync(1, 4); model.Message = $"Teszt üzenet; Auctions count: {auctions.Count}; Products count: {auctionDtoWithProducts.ProductToAuctionDtos.Count}"; return View("~/Plugins/Misc.AuctionPlugin/Areas/Admin/Views/TestPage.cshtml", model); } public async Task AssignProductToAuction() { _logger.Information("AssignProductToAuction has been called"); var result = await _auctionService.GetProductToAuctionsByAuctionIdAsync(1); return Ok(result.ToJson()); } [HttpPost] public async Task AssignProductToAuction([FromBody] AssignAuctionRequestModel model) { _logger.Information("AssignProductToAuction has been called"); if (Convert.ToInt32(model.ProductId) <= 0 || Convert.ToInt32(model.AuctionId) <= 0) return BadRequest(); var result = await _auctionService.AssignProductToAuctionAsync(Convert.ToInt32(model.ProductId), Convert.ToDecimal(model.StartingPrice), Convert.ToDecimal(model.BidPrice), Convert.ToInt32(model.AuctionId)); return result != null ? Ok("Baaaazdmeeeeeeeeg") : StatusCode(500, "Error assigning product to auction."); } }