diff --git a/AsbCloudApp/Repositories/IDailyReportRepository.cs b/AsbCloudApp/Repositories/IDailyReportRepository.cs
new file mode 100644
index 00000000..e9a20d2c
--- /dev/null
+++ b/AsbCloudApp/Repositories/IDailyReportRepository.cs
@@ -0,0 +1,42 @@
+using System;
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+using AsbCloudApp.Data.DailyReport;
+using AsbCloudApp.Requests;
+using AsbCloudApp.Services;
+
+namespace AsbCloudApp.Repositories;
+
+///
+/// Суточные отчёты
+///
+public interface IDailyReportRepository : ICrudRepository
+{
+ ///
+ /// Получить список суточный отчёт по скважине
+ ///
+ ///
+ ///
+ ///
+ ///
+ Task> GetAsync(int idWell, FileReportRequest request, CancellationToken cancellationToken);
+
+ ///
+ /// Получить суточный отчёт
+ ///
+ ///
+ ///
+ ///
+ ///
+ Task GetOrDefaultAsync(int idWell, DateTime dateStart, CancellationToken cancellationToken);
+
+ ///
+ /// Проверка существование суточного отчёта
+ ///
+ ///
+ ///
+ ///
+ ///
+ Task AnyAsync(int idWell, DateTime dateStart, CancellationToken cancellationToken);
+}
\ No newline at end of file
diff --git a/AsbCloudInfrastructure/Repository/DailyReportRepository.cs b/AsbCloudInfrastructure/Repository/DailyReportRepository.cs
new file mode 100644
index 00000000..d67dd302
--- /dev/null
+++ b/AsbCloudInfrastructure/Repository/DailyReportRepository.cs
@@ -0,0 +1,103 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text.Json;
+using System.Threading;
+using System.Threading.Tasks;
+using AsbCloudApp.Data.DailyReport;
+using AsbCloudApp.Data.DailyReport.Blocks.Sign;
+using AsbCloudApp.Data.DailyReport.Blocks.Subsystems;
+using AsbCloudApp.Data.DailyReport.Blocks.TimeBalance;
+using AsbCloudApp.Repositories;
+using AsbCloudApp.Requests;
+using AsbCloudDb;
+using AsbCloudDb.Model;
+using Microsoft.EntityFrameworkCore;
+
+namespace AsbCloudInfrastructure.Repository;
+
+public class DailyReportRepository : CrudRepositoryBase,
+ IDailyReportRepository
+{
+ private class Blocks
+ {
+ public SubsystemBlockDto? Subsystem { get; set; }
+
+ public TimeBalanceBlockDto? TimeBalance { get; set; }
+
+ public SignBlockDto? Sign { get; set; }
+ }
+
+ public DailyReportRepository(IAsbCloudDbContext dbContext)
+ : base(dbContext)
+ {
+ }
+
+ public async Task> GetAsync(int idWell, FileReportRequest request, CancellationToken cancellationToken)
+ {
+ var skip = request.Skip ?? 0;
+ var take = request.Take ?? 10;
+
+ var query = GetQuery().Where(d => d.IdWell == idWell);
+
+ if (request.GeDate.HasValue)
+ query = query.Where(d => d.DateStart <= request.GeDate.Value.ToDateTime(TimeOnly.MinValue, DateTimeKind.Utc));
+
+ if (request.LeDate.HasValue)
+ query = query.Where(d => d.DateStart >= request.LeDate.Value.ToDateTime(TimeOnly.MinValue, DateTimeKind.Utc));
+
+ if (request.SortFields?.Any() == true)
+ {
+ query = query.SortBy(request.SortFields);
+ }
+
+ var entities = await query
+ .AsNoTracking()
+ .ToArrayAsync(cancellationToken);
+
+ return entities.Skip(skip).Take(take).Select(Convert);
+ }
+
+ public async Task GetOrDefaultAsync(int idWell, DateTime dateStart, CancellationToken cancellationToken)
+ {
+ var entity = await GetQuery()
+ .Include(d => d.Well)
+ .SingleOrDefaultAsync(d => d.IdWell == idWell &&
+ d.DateStart == dateStart, cancellationToken);
+
+ return entity is null ? null : Convert(entity);
+ }
+
+ public Task AnyAsync(int idWell, DateTime dateStart, CancellationToken cancellationToken) =>
+ GetQuery().AnyAsync(d => d.IdWell == idWell && d.DateStart == dateStart, cancellationToken);
+
+ protected override DailyReport Convert(DailyReportDto src)
+ {
+ var entity = base.Convert(src);
+
+ entity.Blocks = JsonSerializer.Serialize(new Blocks
+ {
+ Subsystem = src.SubsystemBlock,
+ TimeBalance = src.TimeBalanceBlock,
+ Sign = src.SignBlock,
+ });
+
+ return entity;
+ }
+
+ protected override DailyReportDto Convert(DailyReport src)
+ {
+ var dto = base.Convert(src);
+
+ if (string.IsNullOrWhiteSpace(src.Blocks))
+ return dto;
+
+ var blocks = JsonSerializer.Deserialize(src.Blocks);
+
+ dto.SubsystemBlock = blocks?.Subsystem;
+ dto.TimeBalanceBlock = blocks?.TimeBalance;
+ dto.SignBlock = blocks?.Sign;
+
+ return dto;
+ }
+}
\ No newline at end of file