mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-09-30 23:33:10 +00:00
82 lines
2.7 KiB
C#
82 lines
2.7 KiB
C#
|
|
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()
|
||
|
|
.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);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|