2026-07-24 17:35:34 -03:00
|
|
|
using Data.SeaHavenIndustries;
|
|
|
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
|
using SeaHaven.DataServices.Interfaces;
|
|
|
|
|
|
|
|
|
|
namespace SeaHaven.DataServices.Implementation
|
|
|
|
|
{
|
|
|
|
|
public class CommonDataService : ICommonDataService
|
|
|
|
|
{
|
|
|
|
|
private readonly ApplicationDbContext _context;
|
|
|
|
|
|
|
|
|
|
public CommonDataService(ApplicationDbContext context)
|
|
|
|
|
{
|
|
|
|
|
_context = context;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<(IEnumerable<ApplicationUser> Items, int TotalCount)> GetUsersPagedAsync(int page, int pageSize, string search, CancellationToken cancellationToken)
|
|
|
|
|
{
|
|
|
|
|
var query = _context.Users
|
|
|
|
|
.Where(w => (w.FirstName ?? "").ToLower().Contains((search ?? "").ToLower()))
|
|
|
|
|
.OrderByDescending(d => d.Id);
|
|
|
|
|
|
|
|
|
|
var totalCount = await query.CountAsync(cancellationToken);
|
|
|
|
|
|
|
|
|
|
var paginatedUsers = await query
|
|
|
|
|
.Skip((page - 1) * pageSize)
|
|
|
|
|
.Take(pageSize)
|
|
|
|
|
.AsNoTracking()
|
|
|
|
|
.ToListAsync(cancellationToken);
|
|
|
|
|
|
|
|
|
|
return (paginatedUsers, totalCount);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<IEnumerable<string?>> GetRoleNamesAsync(CancellationToken cancellationToken)
|
|
|
|
|
{
|
|
|
|
|
return await _context.Roles
|
|
|
|
|
.AsNoTracking()
|
|
|
|
|
.Select(s => s.Name)
|
|
|
|
|
.ToListAsync(cancellationToken);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<IEnumerable<Locations>> GetSiteNamesAsync(CancellationToken cancellationToken)
|
|
|
|
|
{
|
|
|
|
|
return await _context.Locations
|
|
|
|
|
.AsNoTracking()
|
2026-09-25 11:19:29 -03:00
|
|
|
.Where(n => n.IsDeleted != true)
|
2026-07-24 17:35:34 -03:00
|
|
|
.Select(n => new Locations
|
|
|
|
|
{
|
|
|
|
|
Id = n.Id,
|
|
|
|
|
Name = n.Name,
|
|
|
|
|
Title = n.Title
|
|
|
|
|
})
|
|
|
|
|
.ToListAsync(cancellationToken);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<IEnumerable<Contacts>> GetContactsAsync(CancellationToken cancellationToken)
|
|
|
|
|
{
|
|
|
|
|
return await _context.Contacts
|
|
|
|
|
.AsNoTracking()
|
|
|
|
|
.Select(n => new Contacts
|
|
|
|
|
{
|
|
|
|
|
Id = n.Id,
|
|
|
|
|
FirstName = n.FirstName,
|
|
|
|
|
LastName = n.LastName,
|
|
|
|
|
Email = n.Email,
|
|
|
|
|
PhoneNumber = n.PhoneNumber
|
|
|
|
|
})
|
|
|
|
|
.ToListAsync(cancellationToken);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<IEnumerable<Category>> GetCategoriesAsync(CancellationToken cancellationToken)
|
|
|
|
|
{
|
|
|
|
|
return await _context.Categories
|
|
|
|
|
.AsNoTracking()
|
|
|
|
|
.Select(s => new Category
|
|
|
|
|
{
|
|
|
|
|
Id = s.Id,
|
|
|
|
|
Name = s.Name
|
|
|
|
|
})
|
|
|
|
|
.ToListAsync(cancellationToken);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|