52 lines
2.0 KiB
C#
52 lines
2.0 KiB
C#
using Netina.Core.BaseServices.Abstracts;
|
|
using Netina.Domain.Dtos.DashboardDtos;
|
|
using Netina.Domain.Entities.Blogs;
|
|
using Netina.Domain.Entities.Brands;
|
|
using Netina.Domain.Entities.Orders;
|
|
using Netina.Domain.Entities.Products;
|
|
using Netina.Domain.Entities.Users;
|
|
using Netina.Domain.Enums;
|
|
using Netina.Repository.Repositories.Base.Contracts;
|
|
|
|
namespace Netina.Core.BaseServices;
|
|
|
|
public class DashboardService : IDashboardService
|
|
{
|
|
private readonly IRepositoryWrapper _repositoryWrapper;
|
|
private readonly UserManager<ApplicationUser> _userManager;
|
|
|
|
public DashboardService(IRepositoryWrapper repositoryWrapper,UserManager<ApplicationUser> userManager)
|
|
{
|
|
_repositoryWrapper = repositoryWrapper;
|
|
_userManager = userManager;
|
|
}
|
|
public async Task<HomeDashboardDto> GetHomeDashboardAsyncTask(CancellationToken cancellationToken = default)
|
|
{
|
|
var response = new HomeDashboardDto();
|
|
response.BlogsCount = await _repositoryWrapper.SetRepository<Blog>()
|
|
.TableNoTracking
|
|
.CountAsync(cancellationToken);
|
|
|
|
response.ProductsCount = await _repositoryWrapper.SetRepository<Product>()
|
|
.TableNoTracking
|
|
.CountAsync(cancellationToken);
|
|
|
|
response.TodayOrdersCount = await _repositoryWrapper.SetRepository<Order>()
|
|
.TableNoTracking
|
|
.Where(o => o.OrderAt.Date == DateTime.Today.Date)
|
|
.CountAsync(cancellationToken);
|
|
|
|
response.UnSubmittedOrdersCount = await _repositoryWrapper.SetRepository<Order>()
|
|
.TableNoTracking
|
|
.Where(o => o.OrderStatus == OrderStatus.Paid || o.OrderStatus == OrderStatus.Submitted)
|
|
.CountAsync(cancellationToken);
|
|
|
|
response.BrandsCount = await _repositoryWrapper.SetRepository<Brand>()
|
|
.TableNoTracking
|
|
.CountAsync(cancellationToken);
|
|
|
|
response.SubscribersCount = await _userManager.Users.CountAsync(cancellationToken);
|
|
|
|
return response;
|
|
}
|
|
} |