public static Result <ConfiguracaoInscricao> Criar(int limiteIdade, int quantidadeMinimaAlunos, int quantidadeMaximaAlunos) { var limiteResultado = Quantidade.Criar(limiteIdade); var intervaloResultado = IntervaloQuantidade.Criar(quantidadeMinimaAlunos, quantidadeMaximaAlunos); if (Result.Combine(limiteResultado, intervaloResultado) is var resultado && resultado.IsFailure) { return(Result.Failure <ConfiguracaoInscricao>(resultado.Error)); } return(Result.Ok(new ConfiguracaoInscricao(limiteResultado.Value, intervaloResultado.Value))); }
public void Configure(EntityTypeBuilder <TurmaBase> builder) { builder.ToTable("Turmas", EscolaContextoEF.DEFAULT_SCHEMA); builder.HasKey(p => p.Id); builder.Property(p => p.Id) .UseHiLo("turmaseq", EscolaContextoEF.DEFAULT_SCHEMA); builder .HasDiscriminator <string>("Especializacao") .HasValue <TurmaComDuracao>(nameof(TurmaComDuracao)) .HasValue <TurmaComDuracaoIlimitada>(nameof(TurmaComDuracaoIlimitada)); builder.Property(p => p.Descricao) .HasColumnType("varchar(100)") .HasConversion <string>(p => p, p => Descricao.Criar(p).Value); builder.OwnsOne(p => p.Configuracao, configuracao => { configuracao.Property(n => n.LimiteIdade) .HasColumnName("LimiteIdade") .HasColumnType("int") .HasConversion <int>(p => p, p => Quantidade.Criar(p).Value); configuracao.OwnsOne(p => p.QuantidadeAlunos, quantidade => { quantidade.Property(c => c.Minimo) .HasColumnName("QuantidadeMinimaAlunos") .HasColumnType("int") .HasConversion <int>(p => p, p => Quantidade.Criar(p).Value); quantidade.Property(c => c.Maximo) .HasColumnName("QuantidadeMaximaAlunos") .HasColumnType("int") .HasConversion <int>(p => p, p => Quantidade.Criar(p).Value); quantidade.Property <byte[]>("RowVersion").HasColumnName("RowVersion").IsRowVersion(); }); configuracao.Property <byte[]>("RowVersion").HasColumnName("RowVersion").IsRowVersion(); }); builder.Property(c => c.TotalInscritos) .HasColumnType("int") .HasConversion <int>(p => p, p => Quantidade.Criar(p).Value); //.IsConcurrencyToken(); builder.Property(c => c.Excluido); builder.HasQueryFilter(c => !c.Excluido); builder.Property <byte[]>("RowVersion").HasColumnName("RowVersion").IsRowVersion(); builder.Property <DateTime>("DataUltimaAlteracao").HasColumnType("datetime2"); builder.Property <DateTime>("DataCadastro").HasColumnType("datetime2"); }
public void Configure(EntityTypeBuilder <TurmaComDuracao> builder) { builder.HasBaseType <TurmaBase>(); builder.OwnsOne(p => p.Duracao, duracao => { duracao.Property(n => n.Tipo) .HasColumnName("DuracaoTipo") .HasColumnType("varchar(20)") .HasConversion(new EnumToStringConverter <EDuracaoEm>()); duracao.Property(n => n.Quantidade) .HasColumnName("DuracaoQuantidade") .HasColumnType("int") .HasConversion <int>(p => p, p => Quantidade.Criar(p).Value); duracao.Property <byte[]>("RowVersion").HasColumnName("RowVersion").IsRowVersion(); }); }