
using data.RemoteData.RemoteDatabase.DAO;
using data.RemoteData.RemoteDataBase.DAO;

namespace data.Repository
{
    public interface IPresenceRepository
    {
        List<PresenceDao> GetPresenceByDateAndGroup(DateTime date, int groupId);
        void SavePresence(List<PresenceDao> presences);
        List<PresenceDao> GetPresenceByGroup(int groupId);
        DateOnly? GetLastDateByGroupId(int groupId);
        List<PresenceDao> GetPresenceForAbsent(DateTime date, int GroupId);
        GroupAttendanceStatistics GetGeneralPresenceForGroup(int groupId);
        void UpdateAtt(int userId, int groupId, int firstLesson, int lastLesson, DateOnly date, bool isAttendance);
        List<PresenceDao> GetAttendanceByGroup(int groupId);
        public List<AllPresence> AllPresence(int GroupId, DateOnly? dateStart, DateOnly? dateEnd, int? UserId);
        public void UpdateAttendance(List<AttendanceInputModel> attendanceList);
        public void DeletePresenceByUser(int groupId, int userId);
        public void DeletePresenceByDateRange(int groupId, DateOnly startDate, DateOnly endDate);
        public void DeletePresenceByGroup(int groupId);
        void DeletePresences(List<PresenceDao> presences);
        List<PresenceDao> GetPresenceByUserAndGroup(int userId, int groupId);
        List<PresenceDao> GetPresenceByDateRange(int groupId, DateOnly startDate, DateOnly endDate);
        void UpdateAttendance(int userId, int groupId, DateOnly date, int lessonNumber, bool isAttendance);
    }
}

