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 DateTimeOffset? 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!;
}