using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using AsbCloudDb.Model.DailyReports.Blocks.Sign;
using AsbCloudDb.Model.DailyReports.Blocks.Subsystem;
using AsbCloudDb.Model.DailyReports.Blocks.TimeBalance;
using Microsoft.EntityFrameworkCore;

namespace AsbCloudDb.Model.DailyReports;

[Table("t_daily_report"), Comment("Ежедневные отчёты")]
public class DailyReport : IId
{
	[Key]
	public int Id { get; set; }
	
	[Column("id_well"), Comment("ID скважины")]
	public int IdWell { get; set; }

	[Column("date_last_update", TypeName = "timestamp with time zone"), Comment("Дата последнего обновления")]
	public DateTime? DateLastUpdate { get; set; }

	[Column("date", TypeName = "date"), Comment("Дата формирования отчёта")]
	public DateOnly Date { get; set; }
	
	[Column("sign_block", TypeName = "jsonb"), Comment("Подпись")]
	public SignBlock? SignBlock { get; set; }
	
	[Column("time_balance_block", TypeName = "jsonb"), Comment("Баланс времени")]
	public TimeBalanceBlock? TimeBalanceBlock { get; set; }
	
	[Column("subsystem_block", TypeName = "jsonb"), Comment("Наработкой подсистем")]
	public SubsystemBlock? SubsystemBlock { get; set; }

	[ForeignKey(nameof(IdWell))] 
	public virtual Well Well { get; set; } = null!;
}