/
WorkerTime
/
WorkerTimeDiplom
Обзор
Документация
Войти
/
WorkerTime
/
WorkerTimeDiplom
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Services/WorkRecordService.cs
111 строк
3 KB
nikit
Логирование, автосохранение, восстановление пароля
05 июн 2026, 19:24
05 июн 2026, 19:24
715eb3d
Код
Авторство
О чём код?
using System; using System.Collections.Generic; using System.Linq; namespace WorkerTime.Services { public class WorkRecordService { private readonly AppDbContext _db; public WorkRecordService(AppDbContext db) { _db = db; } public List<WorkRecord> GetByMonth(int employeeId, int year, int month) { string prefix = year.ToString() + "-" + month.ToString("D2"); List<WorkRecord> result = new List<WorkRecord>(); foreach (WorkRecord w in _db.WorkRecords) { if (w.EmployeeId == employeeId && w.Date.StartsWith(prefix)) { result.Add(w); } } result.Sort((a, b) => a.Date.CompareTo(b.Date)); return result; } //Заполняет месяц 5/2 public void FillBySchedule(int employeeId, int year, int month) { int daysInMonth = DateTime.DaysInMonth(year, month); string prefix = year.ToString() + "-" + month.ToString("D2"); //Сбор дат у которых есть записи List<WorkRecord> allRecords = new List<WorkRecord>(); foreach (WorkRecord w in _db.WorkRecords) { if (w.EmployeeId == employeeId && w.Date.StartsWith(prefix)) { allRecords.Add(w); } } HashSet<string> existingDates = new HashSet<string>(); foreach (WorkRecord record in allRecords) { existingDates.Add(record.Date); } //Заполнение пустых дат for (int day = 1; day <= daysInMonth; day++) { string date = year.ToString() + "-" + month.ToString("D2") + "-" + day.ToString("D2"); if (existingDates.Contains(date)) { continue; } DateTime dt = new DateTime(year, month, day); bool isWeekend = dt.DayOfWeek == DayOfWeek.Saturday || dt.DayOfWeek == DayOfWeek.Sunday; WorkRecord record = new WorkRecord(); record.EmployeeId = employeeId; record.Date = date; if (isWeekend) { record.WorkCode = "В"; record.Hours = 0; } else { record.WorkCode = "Я"; record.Hours = 8; } _db.WorkRecords.Add(record); } _db.SaveChanges(); } public void Update(WorkRecord record) { _db.WorkRecords.Update(record); _db.SaveChanges(); } public void Delete(int id) { WorkRecord record = _db.WorkRecords.Find(id); if (record != null) { _db.WorkRecords.Remove(record); _db.SaveChanges(); } } public WorkRecord GetById(int id) { return _db.WorkRecords.Find(id); } } }