using Application.Domain.Entities; using Infrastructure.Data; using IoTCenter.Areas.Admin.ViewModels; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System.Linq; namespace IoTCenter.Areas.Admin.Controllers { [Authorize] [Area(nameof(Admin))] public class HomeController : Controller { private readonly IRepository _nodeRepo; private readonly IRepository _productRepo; private readonly IRepository _categoryRepo; public HomeController(IRepository nodeRepo, IRepository categoryRepo, IRepository productRepo) { this._nodeRepo = nodeRepo; this._categoryRepo = categoryRepo; this._productRepo = productRepo; } public IActionResult Index() { var model = new HomeIndexViewModel { Nodes = this._nodeRepo.ReadOnlyTable().Select(o => new NodeViewModel { Id = o.Id, Number = o.Number, Name = o.Name, Image = o.Image, Template = o.Template, DeviceCount = o.Devices.Count() }).ToList(), Categories = this._categoryRepo.ReadOnlyTable().Select(o => new CategoryViewModel { Id = o.Id, Name = o.Name, Image = o.Image, Number = o.Number, DeviceCount = o.Products.SelectMany(o => o.Devices).Count() }).ToList(), Products = this._productRepo.ReadOnlyTable().Select(o => new ProductViewModel { Id = o.Id, Name = o.Name, Image = o.Image, DeviceCount = o.Devices.Count() }).ToList() }; return View(model); } } }