/
Lexus_666
/
Pir_API
Обзор
Документация
Войти
/
Lexus_666
/
Pir_API
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Services/WorkerService.cs
114 строк
3 KB
Lexus_666
Добавлена пагинация и опциональные поля
20 окт 2025, 03:36
20 окт 2025, 03:36
b323cab
Код
Авторство
О чём код?
using Pir_API.Interfaces; using Pir_API.Model; using Pir_API.Models; namespace Pir_API.Services; public class WorkerService : IWorkerService { private readonly List<WorkerModel> _worker = []; public Task<IEnumerable<WorkerModel>> GetAllWorkersAsync() { return Task.FromResult(_worker.AsEnumerable()); } public Task<PaginatedList<WorkerModel>> GetWorkersPaginatedAsync(int pageNumber, int pageSize) { var totalCount = _worker.Count; var items = _worker .Skip((pageNumber - 1) * pageSize) .Take(pageSize) .ToList(); var result = new PaginatedList<WorkerModel> { Items = items, PageNumber = pageNumber, PageSize = pageSize, TotalCount = totalCount }; return Task.FromResult(result); } public Task<WorkerModel?> GetWorkerByIdAsync(Guid id) { var worker = _worker.FirstOrDefault(w => w.Id == id); return Task.FromResult(worker); } public Task<WorkerModel> CreateWorkerAsync(WorkerModel worker) { worker.Id = Guid.NewGuid(); _worker.Add(worker); return Task.FromResult(worker); } public Task<WorkerModel?> UpdateWorkerAsync(Guid id, WorkerModel worker) { var existingWorker = _worker.FirstOrDefault(w => w.Id == id); if (existingWorker != null) { existingWorker.Name = worker.Name; existingWorker.Surname = worker.Surname; existingWorker.Phone = worker.Phone; existingWorker.OnWorkTimer = worker.OnWorkTimer; existingWorker.StartedAt = worker.StartedAt; existingWorker.Role = worker.Role; } return Task.FromResult(existingWorker); } public Task<bool> DeleteWorkerAsync(Guid id) { var worker = _worker.FirstOrDefault(w => w.Id == id); if (worker == null) return Task.FromResult(false); _worker.Remove(worker); return Task.FromResult(true); } public Task<WorkerModel?> StartWork(Guid id) { var worker = _worker.FirstOrDefault(w => w.Id == id); if (worker == null) return null; worker.OnWorkTimer = TimeSpan.Zero; worker.StartedAt = DateTime.Now; return Task.FromResult(worker); } public Task<TimeSpan?> StopWork(Guid id) { var worker = _worker.FirstOrDefault(w => w.Id == id); if (worker == null) return null; TimeSpan? result = DateTime.Now - worker.StartedAt + worker.OnWorkTimer; worker.OnWorkTimer = TimeSpan.Zero; return Task.FromResult(result); } public Task<WorkerModel?> PauseWork(Guid id) { var worker = _worker.FirstOrDefault(w => w.Id == id); if (worker == null) return null; worker.OnWorkTimer += DateTime.Now - worker.StartedAt; worker.StartedAt = DateTime.Now; return Task.FromResult(worker); } public Task<WorkerModel?> ContinueWork(Guid id) { var worker = _worker.FirstOrDefault(w => w.Id == id); if (worker == null) return null; worker.StartedAt = DateTime.Now; return Task.FromResult(worker); } }