init
This commit is contained in:
parent
df8314a5ed
commit
aa3336ca1b
@ -1,8 +1,10 @@
|
||||
namespace Demo.Domain.Models
|
||||
|
||||
namespace Demo.Domain.Models
|
||||
{
|
||||
public class ClassGroup
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; } = string.Empty; // Название группы
|
||||
public List<User>? Users { get; internal set; }
|
||||
}
|
||||
}
|
||||
|
20
Demo1/Data/LocalData/Entity/DailyAttendance.cs
Normal file
20
Demo1/Data/LocalData/Entity/DailyAttendance.cs
Normal file
@ -0,0 +1,20 @@
|
||||
using System;
|
||||
|
||||
namespace Demo.Data.LocalData.Entity
|
||||
{
|
||||
public class DailyAttendance
|
||||
{
|
||||
public Guid UserId { get; set; }
|
||||
public bool[] Attendance { get; set; }
|
||||
|
||||
public DailyAttendance(Guid userId, int days)
|
||||
{
|
||||
UserId = userId;
|
||||
Attendance = new bool[days];
|
||||
for (int i = 0; i < days; i++)
|
||||
{
|
||||
Attendance[i] = true; // По умолчанию все присутствуют
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace Demo.Data.LocalData.Entity
|
||||
{
|
||||
public class Presence
|
||||
{
|
||||
public required LocalUser Student { get; set; } // добавлено required
|
||||
public bool IsPresent { get; set; } = true;
|
||||
public DateOnly AttendanceDate { get; set; }
|
||||
public int LessonId { get; set; }
|
||||
}
|
||||
}
|
25
Demo1/Data/LocalData/Entity/StudentAttendance.cs
Normal file
25
Demo1/Data/LocalData/Entity/StudentAttendance.cs
Normal file
@ -0,0 +1,25 @@
|
||||
using System;
|
||||
|
||||
namespace Demo.Domain.Models
|
||||
{
|
||||
public class StudentAttendance
|
||||
{
|
||||
public Guid UserId { get; set; }
|
||||
public bool[] Attendance { get; set; }
|
||||
|
||||
public StudentAttendance(Guid userId, int lessonsCount)
|
||||
{
|
||||
UserId = userId;
|
||||
Attendance = new bool[lessonsCount];
|
||||
for (int i = 0; i < lessonsCount; i++)
|
||||
{
|
||||
Attendance[i] = true; // По умолчанию все присутствуют
|
||||
}
|
||||
}
|
||||
|
||||
// Добавьте здесь новые свойства, если хотите хранить дополнительные данные
|
||||
public int LessonId { get; set; } // Идентификатор урока
|
||||
public bool IsPresent { get; set; } // Статус присутствия
|
||||
public DateTime AttendanceDate { get; set; } // Дата посещаемости
|
||||
}
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
using Demo.Data.LocalData.Entity;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Demo.Domain.Models;
|
||||
|
||||
namespace Demo.Data.LocalData
|
||||
{
|
||||
@ -22,5 +23,35 @@ namespace Demo.Data.LocalData
|
||||
"ИП1-23",
|
||||
"С1-23"
|
||||
};
|
||||
|
||||
// Список посещаемостей
|
||||
public static List<Presence> Presences { get; } = new List<Presence>();
|
||||
|
||||
public static void InitializePresences()
|
||||
{
|
||||
// Инициализация списка посещаемости для текущей недели
|
||||
foreach (var user in Users)
|
||||
{
|
||||
var lessons = new List<bool>(new bool[3]); // Предположим, что у нас 3 занятия
|
||||
Presences.Add(new Presence(user.Id, DateTime.Today, user.GroupID, lessons));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Класс для хранения посещаемости
|
||||
public class Presence
|
||||
{
|
||||
public Guid UserID { get; set; }
|
||||
public DateTime Date { get; set; }
|
||||
public int GroupID { get; set; }
|
||||
public List<bool> Lessons { get; set; } // true - присутствует, false - отсутствует
|
||||
|
||||
public Presence(Guid userId, DateTime date, int groupId, List<bool> lessons)
|
||||
{
|
||||
UserID = userId;
|
||||
Date = date;
|
||||
GroupID = groupId;
|
||||
Lessons = lessons;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
21
Demo1/Data/LocalData/WeeklyAttendance.cs
Normal file
21
Demo1/Data/LocalData/WeeklyAttendance.cs
Normal file
@ -0,0 +1,21 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Demo.Domain.Models
|
||||
{
|
||||
public class WeeklyAttendance
|
||||
{
|
||||
public Guid UserId { get; set; }
|
||||
public int GroupID { get; set; }
|
||||
public DateTime Date { get; set; }
|
||||
public List<bool> Lessons { get; set; }
|
||||
|
||||
public WeeklyAttendance(Guid userId, int groupId)
|
||||
{
|
||||
UserId = userId;
|
||||
GroupID = groupId;
|
||||
Date = DateTime.Now; // или передайте дату в качестве параметра
|
||||
Lessons = new List<bool>();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,6 +1,8 @@
|
||||
using Demo.Data.LocalData.Entity;
|
||||
using Demo.Domain.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Demo.Data.Repository
|
||||
{
|
||||
@ -23,5 +25,13 @@ namespace Demo.Data.Repository
|
||||
if (group == null) throw new ArgumentNullException(nameof(group));
|
||||
groups.Add(group);
|
||||
}
|
||||
|
||||
// Метод для получения пользователей по ID группы
|
||||
public List<User> GetUsersByGroup(int groupId)
|
||||
{
|
||||
// Предполагаем, что ClassGroup имеет свойство Users, содержащее список пользователей
|
||||
var group = groups.FirstOrDefault(g => g.Id == groupId);
|
||||
return group?.Users ?? new List<User>(); // Возвращаем пользователей или пустой список, если группа не найдена
|
||||
}
|
||||
}
|
||||
}
|
||||
|
18
Demo1/Data/Repository/IPresenceRepository.cs
Normal file
18
Demo1/Data/Repository/IPresenceRepository.cs
Normal file
@ -0,0 +1,18 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Demo.Domain.Models;
|
||||
|
||||
namespace Demo.Data.Repository
|
||||
{
|
||||
public interface IPresenceRepository
|
||||
{
|
||||
List<User> GetUsersByGroup(int groupNumber);
|
||||
void SavePresence(List<LessonPresence> presenceList);
|
||||
List<LessonPresence> GetPresenceByGroup(int groupNumber);
|
||||
List<LessonPresence> GetPresenceByGroupAndDate(int groupNumber, DateTime date);
|
||||
void MarkUserAbsent(Guid userId, int groupNumber, int lessonIndex, DateTime date);
|
||||
|
||||
// Добавляем метод для обновления записи о посещаемости
|
||||
void UpdatePresence(LessonPresence presence); // Обновление присутствия
|
||||
}
|
||||
}
|
22
Demo1/Data/Repository/LessonPresence.cs
Normal file
22
Demo1/Data/Repository/LessonPresence.cs
Normal file
@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Demo.Domain.Models
|
||||
{
|
||||
public class LessonPresence
|
||||
{
|
||||
public Guid UserId { get; set; } // Идентификатор пользователя
|
||||
public DateTime Date { get; set; } // Дата посещаемости
|
||||
public int GroupID { get; set; } // ID группы
|
||||
public List<bool> Lessons { get; set; } // Список посещаемости по занятиям
|
||||
|
||||
// Конструктор класса
|
||||
public LessonPresence(Guid userId, DateTime date, int groupId, List<bool> lessons)
|
||||
{
|
||||
UserId = userId;
|
||||
Date = date;
|
||||
GroupID = groupId;
|
||||
Lessons = lessons;
|
||||
}
|
||||
}
|
||||
}
|
52
Demo1/Data/Repository/PresenceRepositorylmpl.cs
Normal file
52
Demo1/Data/Repository/PresenceRepositorylmpl.cs
Normal file
@ -0,0 +1,52 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Demo.Data.LocalData;
|
||||
using Demo.Domain.Models;
|
||||
|
||||
namespace Demo.Data.Repository
|
||||
{
|
||||
public class PresenceRepositoryImpl : IPresenceRepository
|
||||
{
|
||||
private readonly List<LessonPresence> _presences = new List<LessonPresence>();
|
||||
|
||||
public List<User> GetUsersByGroup(int groupNumber)
|
||||
{
|
||||
// Здесь должна быть логика получения пользователей по номеру группы
|
||||
return new List<User>
|
||||
{
|
||||
new User { Id = Guid.NewGuid(), FullName = "Иванов Иван", ClassId = groupNumber },
|
||||
new User { Id = Guid.NewGuid(), FullName = "Петров Пётр", ClassId = groupNumber },
|
||||
// Добавьте других пользователей по аналогии
|
||||
};
|
||||
}
|
||||
|
||||
public void SavePresence(List<LessonPresence> presenceList)
|
||||
{
|
||||
_presences.AddRange(presenceList);
|
||||
}
|
||||
|
||||
public List<LessonPresence> GetPresenceByGroup(int groupNumber)
|
||||
{
|
||||
return _presences.FindAll(p => p.GroupID == groupNumber);
|
||||
}
|
||||
|
||||
public List<LessonPresence> GetPresenceByGroupAndDate(int groupNumber, DateTime date)
|
||||
{
|
||||
return _presences.FindAll(p => p.GroupID == groupNumber && p.Date.Date == date.Date);
|
||||
}
|
||||
|
||||
public void MarkUserAbsent(Guid userId, int groupNumber, int lessonIndex, DateTime date)
|
||||
{
|
||||
var presence = _presences.Find(p => p.UserId == userId && p.GroupID == groupNumber && p.Date.Date == date.Date);
|
||||
if (presence != null && lessonIndex >= 0 && lessonIndex < presence.Lessons.Count)
|
||||
{
|
||||
presence.Lessons[lessonIndex] = false; // Отметим занятие как отсутствующее
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdatePresence(LessonPresence presence)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
using Demo.Data.LocalData;
|
||||
using Demo.Data.LocalData.Entity;
|
||||
using Demo.Domain.Models;
|
||||
using Demo.Domain.Models;
|
||||
using Demo.Domain.Models; // Убедитесь, что эта директива используется только один раз
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
@ -1,13 +1,22 @@
|
||||
using Demo.Domain.Models;
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Demo.Domain.Models
|
||||
{
|
||||
public class Presence
|
||||
{
|
||||
public required User Student { get; set; } // Добавлено required
|
||||
public bool IsPresent { get; set; } = true; // По умолчанию
|
||||
public DateOnly AttendanceDate { get; set; }
|
||||
public int LessonId { get; set; }
|
||||
public Guid UserId { get; set; } // Идентификатор пользователя
|
||||
public DateTime Date { get; set; } // Дата посещаемости
|
||||
public int GroupID { get; set; } // ID группы
|
||||
public List<bool> Lessons { get; set; } // Список посещаемости по занятиям
|
||||
|
||||
// Конструктор класса
|
||||
public Presence(Guid userId, DateTime date, int groupId, List<bool> lessons)
|
||||
{
|
||||
UserId = userId;
|
||||
Date = date;
|
||||
GroupID = groupId;
|
||||
Lessons = lessons;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ namespace Demo.Domain.Models
|
||||
public string FullName { get; set; } = string.Empty;
|
||||
public ClassGroup ClassGroup { get; set; } = new ClassGroup();
|
||||
public int ClassId { get; set; }
|
||||
public Guid UserId { get; internal set; }
|
||||
|
||||
public static explicit operator User(Data.LocalData.Entity.LocalUser v)
|
||||
{
|
||||
|
@ -1,16 +1,82 @@
|
||||
using Demo.Data.Repository;
|
||||
using Demo.Domain.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Demo.Domain.UseCases
|
||||
{
|
||||
public class GroupUseCase
|
||||
{
|
||||
private GroupRepositoryImpl _groupRepository;
|
||||
private readonly IPresenceRepository _presenceRepository;
|
||||
private readonly GroupRepositoryImpl _groupRepository; // Измените на GroupRepositoryImpl
|
||||
|
||||
public GroupUseCase(GroupRepositoryImpl groupRepository) // Конструктор
|
||||
public GroupUseCase(GroupRepositoryImpl groupRepository, IPresenceRepository presenceRepository) // Конструктор
|
||||
{
|
||||
_groupRepository = groupRepository;
|
||||
_presenceRepository = presenceRepository;
|
||||
}
|
||||
|
||||
// Другие методы
|
||||
// Метод для генерации посещаемости на текущий день
|
||||
public List<LessonPresence> GeneratePresence(int firstLessonNumber, int lastLessonNumber, int groupId, DateTime currentDate)
|
||||
{
|
||||
var users = _groupRepository.GetUsersByGroup(groupId); // Получаем пользователей группы
|
||||
List<LessonPresence> presenceList = new List<LessonPresence>();
|
||||
|
||||
foreach (var user in users)
|
||||
{
|
||||
var lessons = new List<bool>(new bool[lastLessonNumber - firstLessonNumber + 1]); // По умолчанию все посещены
|
||||
var presence = new LessonPresence(user.Id, currentDate, groupId, lessons); // Измените на LessonPresence
|
||||
presenceList.Add(presence);
|
||||
}
|
||||
|
||||
return presenceList;
|
||||
}
|
||||
|
||||
// Метод для генерации посещаемости на неделю
|
||||
public Dictionary<DateTime, List<LessonPresence>> GenerateWeeklyPresence(int firstLessonNumber, int lastLessonNumber, int groupId, DateTime startDate)
|
||||
{
|
||||
var weeklyPresence = new Dictionary<DateTime, List<LessonPresence>>();
|
||||
|
||||
for (int i = 0; i < 7; i++)
|
||||
{
|
||||
var currentDate = startDate.AddDays(i);
|
||||
var dailyPresence = GeneratePresence(firstLessonNumber, lastLessonNumber, groupId, currentDate);
|
||||
weeklyPresence[currentDate] = dailyPresence;
|
||||
}
|
||||
|
||||
return weeklyPresence;
|
||||
}
|
||||
|
||||
// Метод для вывода посещаемости по группе
|
||||
public List<LessonPresence> GetPresenceByGroup(int groupId)
|
||||
{
|
||||
return _presenceRepository.GetPresenceByGroup(groupId);
|
||||
}
|
||||
|
||||
// Метод для вывода посещаемости по группе по дате
|
||||
public List<LessonPresence> GetPresenceByGroupAndDate(int groupId, DateTime date)
|
||||
{
|
||||
return _presenceRepository.GetPresenceByGroupAndDate(groupId, date);
|
||||
}
|
||||
|
||||
// Метод для отметки пользователя как отсутствующего
|
||||
public void MarkUserAbsent(Guid userId, int groupId, DateTime date, List<int> lessonNumbers)
|
||||
{
|
||||
var presenceRecords = _presenceRepository.GetPresenceByGroupAndDate(groupId, date);
|
||||
|
||||
var presenceRecord = presenceRecords.FirstOrDefault(p => p.UserId == userId);
|
||||
if (presenceRecord != null)
|
||||
{
|
||||
foreach (var lessonNumber in lessonNumbers)
|
||||
{
|
||||
if (lessonNumber >= 0 && lessonNumber < presenceRecord.Lessons.Count)
|
||||
{
|
||||
presenceRecord.Lessons[lessonNumber] = false; // Отмечаем как отсутствующего
|
||||
}
|
||||
}
|
||||
_presenceRepository.UpdatePresence(presenceRecord); // Обновляем запись в репозитории
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
47
Demo1/Domain/UseCase/PresenceUseCase.cs
Normal file
47
Demo1/Domain/UseCase/PresenceUseCase.cs
Normal file
@ -0,0 +1,47 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Demo.Data.Repository;
|
||||
using Demo.Domain.Models;
|
||||
|
||||
namespace Demo.Domain.UseCases
|
||||
{
|
||||
public class PresenceUseCase
|
||||
{
|
||||
private readonly IPresenceRepository _presenceRepository;
|
||||
|
||||
public PresenceUseCase(IPresenceRepository presenceRepository) // Конструктор
|
||||
{
|
||||
_presenceRepository = presenceRepository;
|
||||
}
|
||||
|
||||
public void GeneratePresence(int groupNumber, DateTime date)
|
||||
{
|
||||
var users = _presenceRepository.GetUsersByGroup(groupNumber);
|
||||
var presenceList = new List<LessonPresence>();
|
||||
|
||||
foreach (var user in users)
|
||||
{
|
||||
// Создаем список посещаемости, по умолчанию все отмечены как присутствующие
|
||||
var lessons = new List<bool> { true, true, true }; // Пример, 3 занятия
|
||||
presenceList.Add(new LessonPresence(user.UserId, date, groupNumber, lessons));
|
||||
}
|
||||
|
||||
_presenceRepository.SavePresence(presenceList);
|
||||
}
|
||||
|
||||
public List<LessonPresence> GetPresenceByGroup(int groupNumber)
|
||||
{
|
||||
return _presenceRepository.GetPresenceByGroup(groupNumber);
|
||||
}
|
||||
|
||||
public List<LessonPresence> GetPresenceByGroupAndDate(int groupNumber, DateTime date)
|
||||
{
|
||||
return _presenceRepository.GetPresenceByGroupAndDate(groupNumber, date);
|
||||
}
|
||||
|
||||
public void MarkUserAbsent(Guid userId, int groupNumber, int lessonId, DateTime date)
|
||||
{
|
||||
_presenceRepository.MarkUserAbsent(userId, groupNumber, lessonId, date);
|
||||
}
|
||||
}
|
||||
}
|
30
Demo1/Domain/UseCase/UseCasePresence.cs
Normal file
30
Demo1/Domain/UseCase/UseCasePresence.cs
Normal file
@ -0,0 +1,30 @@
|
||||
using Demo.Data.LocalData.Entity;
|
||||
using Demo.Domain.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Demo.Domain.UseCase
|
||||
{
|
||||
public class UseCasePresence
|
||||
{
|
||||
private List<StudentAttendance> _studentAttendances = new(); // Хранилище для посещаемости студентов
|
||||
|
||||
// Метод для добавления посещаемости по занятию
|
||||
public void AddLessonAttendance(LocalUser student, DateTime attendanceDate, int lessonId, bool isPresent)
|
||||
{
|
||||
var studentAttendance = new StudentAttendance(student.Id, 1) // Замените на 1, так как это один урок
|
||||
{
|
||||
AttendanceDate = attendanceDate,
|
||||
LessonId = lessonId,
|
||||
IsPresent = isPresent
|
||||
};
|
||||
_studentAttendances.Add(studentAttendance);
|
||||
}
|
||||
|
||||
// Метод для получения посещаемости по занятию
|
||||
public List<StudentAttendance> GetLessonAttendance(int lessonId)
|
||||
{
|
||||
return _studentAttendances.FindAll(sa => sa.LessonId == lessonId);
|
||||
}
|
||||
}
|
||||
}
|
190
Demo1/Program.cs
190
Demo1/Program.cs
@ -24,6 +24,10 @@ namespace Demo
|
||||
Console.WriteLine("7. Обновить группу");
|
||||
Console.WriteLine("8. Удалить группу по ID");
|
||||
Console.WriteLine("9. Найти группу по ID");
|
||||
Console.WriteLine("10. Генерация посещаемости на текущий день");
|
||||
Console.WriteLine("11. Генерация посещаемости на неделю");
|
||||
Console.WriteLine("12. Показать посещаемость по группе и дате");
|
||||
Console.WriteLine("13. Отметить пользователя как отсутствующего");
|
||||
Console.WriteLine("0. Выход");
|
||||
Console.Write("Выберите опцию: ");
|
||||
|
||||
@ -31,36 +35,20 @@ namespace Demo
|
||||
|
||||
switch (choice)
|
||||
{
|
||||
case "1":
|
||||
ShowUsers();
|
||||
break;
|
||||
case "2":
|
||||
DeleteUserByGuid();
|
||||
break;
|
||||
case "3":
|
||||
UpdateUser();
|
||||
break;
|
||||
case "4":
|
||||
FindUserByGuid();
|
||||
break;
|
||||
case "5":
|
||||
ShowGroups();
|
||||
break;
|
||||
case "6":
|
||||
AddGroup();
|
||||
break;
|
||||
case "7":
|
||||
UpdateGroup();
|
||||
break;
|
||||
case "8":
|
||||
DeleteGroupById();
|
||||
break;
|
||||
case "9":
|
||||
FindGroupById();
|
||||
break;
|
||||
case "0":
|
||||
exit = true;
|
||||
break;
|
||||
case "1": ShowUsers(); break;
|
||||
case "2": DeleteUserByGuid(); break;
|
||||
case "3": UpdateUser(); break;
|
||||
case "4": FindUserByGuid(); break;
|
||||
case "5": ShowGroups(); break;
|
||||
case "6": AddGroup(); break;
|
||||
case "7": UpdateGroup(); break;
|
||||
case "8": DeleteGroupById(); break;
|
||||
case "9": FindGroupById(); break;
|
||||
case "10": GeneratePresenceForToday(); break;
|
||||
case "11": GeneratePresenceForWeek(); break;
|
||||
case "12": ShowPresenceByGroupAndDate(); break;
|
||||
case "13": MarkUserAsAbsent(); break;
|
||||
case "0": exit = true; break;
|
||||
default:
|
||||
Console.WriteLine("Неверный выбор. Нажмите любую клавишу для продолжения.");
|
||||
Console.ReadKey();
|
||||
@ -237,5 +225,147 @@ namespace Demo
|
||||
Console.WriteLine("Нажмите любую клавишу для продолжения.");
|
||||
Console.ReadKey();
|
||||
}
|
||||
|
||||
static void GeneratePresenceForToday()
|
||||
{
|
||||
Console.Clear();
|
||||
Console.Write("Введите номер группы: ");
|
||||
var groupIdInput = Console.ReadLine();
|
||||
Console.Write("Введите номер первого занятия: ");
|
||||
var firstLesson = int.Parse(Console.ReadLine());
|
||||
Console.Write("Введите номер последнего занятия: ");
|
||||
var lastLesson = int.Parse(Console.ReadLine());
|
||||
|
||||
var currentDate = DateTime.Now.Date;
|
||||
|
||||
// Преобразуйте groupIdInput в int для сравнения
|
||||
if (int.TryParse(groupIdInput, out int groupId))
|
||||
{
|
||||
// Получите идентификатор пользователя
|
||||
var user = LocalStaticData.Users.FirstOrDefault(u => u.GroupID == groupId);
|
||||
var userId = user != null ? user.Id : Guid.NewGuid(); // Если пользователь не найден, создайте новый идентификатор
|
||||
|
||||
// Создание посещаемости с параметрами
|
||||
var presence = new Presence(userId, currentDate, groupId, Enumerable.Range(firstLesson, lastLesson - firstLesson + 1).Select(lesson => true).ToList());
|
||||
|
||||
LocalStaticData.Presences.Add(presence);
|
||||
Console.WriteLine("Посещаемость сгенерирована для сегодняшнего дня.");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Некорректный ввод номера группы.");
|
||||
}
|
||||
Console.ReadKey();
|
||||
}
|
||||
|
||||
static void GeneratePresenceForWeek()
|
||||
{
|
||||
Console.Clear();
|
||||
Console.Write("Введите номер группы: ");
|
||||
var groupIdInput = Console.ReadLine();
|
||||
Console.Write("Введите номер первого занятия: ");
|
||||
var firstLesson = int.Parse(Console.ReadLine());
|
||||
Console.Write("Введите номер последнего занятия: ");
|
||||
var lastLesson = int.Parse(Console.ReadLine());
|
||||
|
||||
var startDate = DateTime.Now.Date;
|
||||
|
||||
// Преобразуйте groupIdInput в int для сравнения
|
||||
if (int.TryParse(groupIdInput, out int groupId))
|
||||
{
|
||||
// Получите идентификатор пользователя
|
||||
var user = LocalStaticData.Users.FirstOrDefault(u => u.GroupID == groupId);
|
||||
var userId = user != null ? user.Id : Guid.NewGuid(); // Если пользователь не найден, создайте новый идентификатор
|
||||
|
||||
for (int i = 0; i < 7; i++)
|
||||
{
|
||||
var currentDate = startDate.AddDays(i);
|
||||
// Создание посещаемости с параметрами
|
||||
var presence = new Presence(userId, currentDate, groupId, Enumerable.Range(firstLesson, lastLesson - firstLesson + 1).Select(lesson => true).ToList());
|
||||
LocalStaticData.Presences.Add(presence);
|
||||
}
|
||||
|
||||
Console.WriteLine("Посещаемость сгенерирована на текущую неделю.");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Некорректный ввод номера группы.");
|
||||
}
|
||||
Console.ReadKey();
|
||||
}
|
||||
|
||||
static void ShowPresenceByGroupAndDate()
|
||||
{
|
||||
Console.Clear();
|
||||
Console.Write("Введите номер группы: ");
|
||||
var groupId = Console.ReadLine();
|
||||
Console.Write("Введите дату (yyyy-MM-dd): ");
|
||||
if (DateTime.TryParse(Console.ReadLine(), out DateTime date))
|
||||
{
|
||||
var presence = LocalStaticData.Presences.FirstOrDefault(p => p.GroupID == int.Parse(groupId) && p.Date.Date == date);
|
||||
if (presence != null)
|
||||
{
|
||||
Console.WriteLine($"Посещаемость для группы {groupId} на {date.ToShortDateString()}:");
|
||||
for (int i = 0; i < presence.Lessons.Count; i++)
|
||||
{
|
||||
Console.WriteLine($"Занятие {i + 1}: {(presence.Lessons[i] ? "Присутствует" : "Отсутствует")}");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Посещаемость не найдена.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Неверный формат даты.");
|
||||
}
|
||||
Console.WriteLine("Нажмите любую клавишу для продолжения.");
|
||||
Console.ReadKey();
|
||||
}
|
||||
|
||||
static void MarkUserAsAbsent()
|
||||
{
|
||||
Console.Clear();
|
||||
Console.Write("Введите номер группы: ");
|
||||
var groupId = Console.ReadLine();
|
||||
Console.Write("Введите дату (yyyy-MM-dd): ");
|
||||
if (DateTime.TryParse(Console.ReadLine(), out DateTime date))
|
||||
{
|
||||
Console.Write("Введите GUID пользователя для отметки отсутствия: ");
|
||||
if (Guid.TryParse(Console.ReadLine(), out Guid userId))
|
||||
{
|
||||
var presence = LocalStaticData.Presences.FirstOrDefault(p => p.GroupID == int.Parse(groupId) && p.Date.Date == date);
|
||||
if (presence != null)
|
||||
{
|
||||
// Поиск занятия пользователя
|
||||
var userIndex = LocalStaticData.Users.FindIndex(u => u.Id == userId && u.GroupID.ToString() == groupId);
|
||||
if (userIndex >= 0)
|
||||
{
|
||||
presence.Lessons[userIndex] = false;
|
||||
Console.WriteLine("Пользователь отмечен как отсутствующий.");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Пользователь не найден в этой группе.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Посещаемость не найдена.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Неверный формат GUID.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Неверный формат даты.");
|
||||
}
|
||||
Console.WriteLine("Нажмите любую клавишу для продолжения.");
|
||||
Console.ReadKey();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -14,7 +14,7 @@ using System.Reflection;
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Demo1")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+df8314a5edf631ad091dc7bfca86e0f6f5c724cb")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("Demo1")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("Demo1")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
@ -1 +1 @@
|
||||
5fbaf1fba7321e7781b2aa403ef801043346e052a9547caf8ba08c3ad840adff
|
||||
221e0c768b0d742a8ba97ec496228ed7816062bae551ae6dca0fa140cf72a07e
|
||||
|
@ -8,6 +8,6 @@ build_property.PlatformNeutralAssembly =
|
||||
build_property.EnforceExtendedAnalyzerRules =
|
||||
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||
build_property.RootNamespace = Demo1
|
||||
build_property.ProjectDir = C:\Users\Наиль\source\repos\Demo1\Demo1\
|
||||
build_property.ProjectDir = C:\Users\class_Student\Source\Repos\slarny4\Demo1\
|
||||
build_property.EnableComHosting =
|
||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||
|
Binary file not shown.
@ -1 +1 @@
|
||||
7e72cf7cbdf57e2c918583bbca5eac209a31da85ce462b230f074698e104f9b7
|
||||
1d50d3593a629a5dd88b49d245e89f299208f24874e2084a9b532f66739617bd
|
||||
|
@ -12,3 +12,17 @@ C:\Users\Наиль\source\repos\Demo1\Demo1\obj\Debug\net8.0\refint\Demo1.dll
|
||||
C:\Users\Наиль\source\repos\Demo1\Demo1\obj\Debug\net8.0\Demo1.pdb
|
||||
C:\Users\Наиль\source\repos\Demo1\Demo1\obj\Debug\net8.0\Demo1.genruntimeconfig.cache
|
||||
C:\Users\Наиль\source\repos\Demo1\Demo1\obj\Debug\net8.0\ref\Demo1.dll
|
||||
C:\Users\class_Student\Source\Repos\slarny4\Demo1\obj\Debug\net8.0\Demo1.GeneratedMSBuildEditorConfig.editorconfig
|
||||
C:\Users\class_Student\Source\Repos\slarny4\Demo1\obj\Debug\net8.0\Demo1.AssemblyInfoInputs.cache
|
||||
C:\Users\class_Student\Source\Repos\slarny4\Demo1\obj\Debug\net8.0\Demo1.AssemblyInfo.cs
|
||||
C:\Users\class_Student\Source\Repos\slarny4\Demo1\obj\Debug\net8.0\Demo1.csproj.CoreCompileInputs.cache
|
||||
C:\Users\class_Student\Source\Repos\slarny4\Demo1\obj\Debug\net8.0\Demo1.dll
|
||||
C:\Users\class_Student\Source\Repos\slarny4\Demo1\obj\Debug\net8.0\refint\Demo1.dll
|
||||
C:\Users\class_Student\Source\Repos\slarny4\Demo1\obj\Debug\net8.0\Demo1.pdb
|
||||
C:\Users\class_Student\Source\Repos\slarny4\Demo1\bin\Debug\net8.0\Demo1.exe
|
||||
C:\Users\class_Student\Source\Repos\slarny4\Demo1\bin\Debug\net8.0\Demo1.deps.json
|
||||
C:\Users\class_Student\Source\Repos\slarny4\Demo1\bin\Debug\net8.0\Demo1.runtimeconfig.json
|
||||
C:\Users\class_Student\Source\Repos\slarny4\Demo1\bin\Debug\net8.0\Demo1.dll
|
||||
C:\Users\class_Student\Source\Repos\slarny4\Demo1\bin\Debug\net8.0\Demo1.pdb
|
||||
C:\Users\class_Student\Source\Repos\slarny4\Demo1\obj\Debug\net8.0\Demo1.genruntimeconfig.cache
|
||||
C:\Users\class_Student\Source\Repos\slarny4\Demo1\obj\Debug\net8.0\ref\Demo1.dll
|
||||
|
Binary file not shown.
@ -1 +1 @@
|
||||
c64df823fc400ff5eb349579152f2d629fb693f3d8cd5be1e9a479774d096f64
|
||||
efacd2456a8517402d3b53b9ec65ae943b078068dce16d9c1e2c139cbb2efa47
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,23 +1,23 @@
|
||||
{
|
||||
"format": 1,
|
||||
"restore": {
|
||||
"C:\\Users\\Наиль\\source\\repos\\Demo1\\Demo1\\Demo1.csproj": {}
|
||||
"C:\\Users\\class_Student\\Source\\Repos\\slarny4\\Demo1\\Demo1.csproj": {}
|
||||
},
|
||||
"projects": {
|
||||
"C:\\Users\\Наиль\\source\\repos\\Demo1\\Demo1\\Demo1.csproj": {
|
||||
"C:\\Users\\class_Student\\Source\\Repos\\slarny4\\Demo1\\Demo1.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "C:\\Users\\Наиль\\source\\repos\\Demo1\\Demo1\\Demo1.csproj",
|
||||
"projectUniqueName": "C:\\Users\\class_Student\\Source\\Repos\\slarny4\\Demo1\\Demo1.csproj",
|
||||
"projectName": "Demo1",
|
||||
"projectPath": "C:\\Users\\Наиль\\source\\repos\\Demo1\\Demo1\\Demo1.csproj",
|
||||
"packagesPath": "C:\\Users\\Наиль\\.nuget\\packages\\",
|
||||
"outputPath": "C:\\Users\\Наиль\\source\\repos\\Demo1\\Demo1\\obj\\",
|
||||
"projectPath": "C:\\Users\\class_Student\\Source\\Repos\\slarny4\\Demo1\\Demo1.csproj",
|
||||
"packagesPath": "C:\\Users\\class_Student\\.nuget\\packages\\",
|
||||
"outputPath": "C:\\Users\\class_Student\\Source\\Repos\\slarny4\\Demo1\\obj\\",
|
||||
"projectStyle": "PackageReference",
|
||||
"fallbackFolders": [
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
||||
],
|
||||
"configFilePaths": [
|
||||
"C:\\Users\\Наиль\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||
"C:\\Users\\class_Student\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
||||
],
|
||||
@ -26,6 +26,7 @@
|
||||
],
|
||||
"sources": {
|
||||
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
|
||||
"C:\\Program Files\\dotnet\\library-packs": {},
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
@ -64,7 +65,7 @@
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.403/PortableRuntimeIdentifierGraph.json"
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.204/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,12 +5,12 @@
|
||||
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\Наиль\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\class_Student\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
|
||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.11.1</NuGetToolVersion>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.9.2</NuGetToolVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<SourceRoot Include="C:\Users\Наиль\.nuget\packages\" />
|
||||
<SourceRoot Include="C:\Users\class_Student\.nuget\packages\" />
|
||||
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -8,23 +8,23 @@
|
||||
"net8.0": []
|
||||
},
|
||||
"packageFolders": {
|
||||
"C:\\Users\\Наиль\\.nuget\\packages\\": {},
|
||||
"C:\\Users\\class_Student\\.nuget\\packages\\": {},
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
|
||||
},
|
||||
"project": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "C:\\Users\\Наиль\\source\\repos\\Demo1\\Demo1\\Demo1.csproj",
|
||||
"projectUniqueName": "C:\\Users\\class_Student\\Source\\Repos\\slarny4\\Demo1\\Demo1.csproj",
|
||||
"projectName": "Demo1",
|
||||
"projectPath": "C:\\Users\\Наиль\\source\\repos\\Demo1\\Demo1\\Demo1.csproj",
|
||||
"packagesPath": "C:\\Users\\Наиль\\.nuget\\packages\\",
|
||||
"outputPath": "C:\\Users\\Наиль\\source\\repos\\Demo1\\Demo1\\obj\\",
|
||||
"projectPath": "C:\\Users\\class_Student\\Source\\Repos\\slarny4\\Demo1\\Demo1.csproj",
|
||||
"packagesPath": "C:\\Users\\class_Student\\.nuget\\packages\\",
|
||||
"outputPath": "C:\\Users\\class_Student\\Source\\Repos\\slarny4\\Demo1\\obj\\",
|
||||
"projectStyle": "PackageReference",
|
||||
"fallbackFolders": [
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
||||
],
|
||||
"configFilePaths": [
|
||||
"C:\\Users\\Наиль\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||
"C:\\Users\\class_Student\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
||||
],
|
||||
@ -33,6 +33,7 @@
|
||||
],
|
||||
"sources": {
|
||||
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
|
||||
"C:\\Program Files\\dotnet\\library-packs": {},
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
@ -71,7 +72,7 @@
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.403/PortableRuntimeIdentifierGraph.json"
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.204/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "3rJkBUv8GeU=",
|
||||
"dgSpecHash": "w2AQ9bufhayfzTHCnl2ow9D2CtoWJ4HAqBkDoNcbSKD2lmZQ/k0JRgy5fID2BknPulzXAnFoyjXkQhKMewdlLQ==",
|
||||
"success": true,
|
||||
"projectFilePath": "C:\\Users\\Наиль\\source\\repos\\Demo1\\Demo1\\Demo1.csproj",
|
||||
"projectFilePath": "C:\\Users\\class_Student\\Source\\Repos\\slarny4\\Demo1\\Demo1.csproj",
|
||||
"expectedPackageFiles": [],
|
||||
"logs": []
|
||||
}
|
Loading…
Reference in New Issue
Block a user