using ConstructorAppUI.Dtos.ContactUsDtos; using ConstructorAppUI.Dtos.ProjectDtos; using ConstructorAppUI.Dtos.ReferenceDtos; using ConstructorAppUI.Dtos.TestimonialDtos; using ConstructorAppUI.ViewModels; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; namespace ConstructorAppUI.Controllers { public class DashboardController : Controller { private readonly string _signalRHubBaseUrl; private readonly IHttpClientFactory _httpClientFactory; private readonly IWebHostEnvironment _webHostEnvironment; private readonly string _apiBaseUrl; public DashboardController(IConfiguration configuration, IHttpClientFactory httpClientFactory, IWebHostEnvironment webHostEnvironment) { _signalRHubBaseUrl = configuration["SignalRHubSettings:BaseUrl"]; _httpClientFactory = httpClientFactory; _webHostEnvironment = webHostEnvironment; _apiBaseUrl = configuration["ApiSettings:BaseUrl"]; } //[Authorize(Roles = "Admin")] public async Task IndexAsync() { ViewBag.SignalRHubBaseUrl = _signalRHubBaseUrl; ViewBag.ApiBaseUrl = _apiBaseUrl; var client = _httpClientFactory.CreateClient(); // İletişim Talepleri için Listeyi Çek var contactsResponse = await client.GetAsync($"{_apiBaseUrl}/api/ContactUs/CountAll"); var contacts = new List(); var contactCount = 0; if (contactsResponse.IsSuccessStatusCode) { var contactJsonData = await contactsResponse.Content.ReadAsStringAsync(); contactCount = JsonConvert.DeserializeObject(contactJsonData); } // Projeler için Listeyi Çek var projectResponse = await client.GetAsync($"{_apiBaseUrl}/api/Project/CountAll"); var projects = new List(); var projectCount = 0; if (projectResponse.IsSuccessStatusCode) { var projectJsonData = await contactsResponse.Content.ReadAsStringAsync(); projectCount = JsonConvert.DeserializeObject(projectJsonData); } // Reference için Listeyi Çek var referenceResponse = await client.GetAsync($"{_apiBaseUrl}/api/Reference/CountAll"); var references = new List(); var referenceCount = 0; if (referenceResponse.IsSuccessStatusCode) { var referenceJsonData = await referenceResponse.Content.ReadAsStringAsync(); referenceCount = JsonConvert.DeserializeObject(referenceJsonData); } // Testimonial için Listeyi Çek var testimonialResponse = await client.GetAsync($"{_apiBaseUrl}/api/Testimonial/CountAll"); var testimonials = new List(); var testimonialCount = 0; if (testimonialResponse.IsSuccessStatusCode) { var testimonialJsonData = await referenceResponse.Content.ReadAsStringAsync(); testimonialCount = JsonConvert.DeserializeObject(testimonialJsonData); } // ViewModel'i Doldur var viewModel = new DashboardIndexViewModel { ContactUsCount = contactCount, ProjectCount = projectCount, ReferenceCount = referenceCount, TestimonialCount = testimonialCount, }; return View(viewModel); } } }