public CursoAberto( string codigo, Curso curso, decimal preco, TipoDeCursoAberto tipoDeCursoAberto, string empresa, DateTime?periodoInicialParaMatricula, DateTime?periodoFinalParaMatricula, DateTime inicioDoCurso, DateTime fimDoCurso) { Validar(curso, preco, tipoDeCursoAberto, empresa, periodoInicialParaMatricula, periodoFinalParaMatricula, inicioDoCurso, fimDoCurso); Atribuir(codigo, curso, preco, tipoDeCursoAberto, empresa, periodoInicialParaMatricula, periodoFinalParaMatricula, inicioDoCurso, fimDoCurso); }
public void Setup() { _codigo = "XPTO"; _preco = 1000m; _empresa = "Empresa"; _tipoDeCursoAberto = TipoDeCursoAberto.Publico; _curso = FluentBuilder <Curso> .New().Build(); _periodoInicialParaMatricula = DateTime.Now.AddDays(-1); _periodoFinalParaMatricula = DateTime.Now; _dataDeInicioDoCurso = DateTime.Now.AddDays(+1); _dataDeFimDoCurso = DateTime.Now.AddDays(+10); _cursoAberto = FluentBuilder <CursoAberto> .New().Build(); }
private void Atribuir( string codigo, Curso curso, decimal preco, TipoDeCursoAberto tipoDeCursoAberto, string empresa, DateTime?periodoInicialParaMatricula, DateTime?periodoFinalParaMatricula, DateTime inicioDoCurso, DateTime fimDoCurso) { Codigo = codigo; Curso = curso; Preco = preco; Tipo = tipoDeCursoAberto; Empresa = empresa; PeriodoInicialParaMatricula = periodoInicialParaMatricula; PeriodoFinalParaMatricula = periodoFinalParaMatricula; InicioDoCurso = inicioDoCurso; FimDoCurso = fimDoCurso; }
private static void Validar(Curso curso, decimal preco, TipoDeCursoAberto tipoDeCursoAberto, string empresa, DateTime?periodoInicialParaMatricula, DateTime?periodoFinalParaMatricula, DateTime inicioDoCurso, DateTime fimDoCurso) { ExcecaoDeDominio.Quando(curso == null, "Curso é obrigatório"); ExcecaoDeDominio.Quando(preco <= 0, "Preço do curso inválido"); ExcecaoDeDominio.Quando(tipoDeCursoAberto == TipoDeCursoAberto.Nenhum, "Tipo de curso aberto é obrigatório"); ExcecaoDeDominio.Quando(tipoDeCursoAberto == TipoDeCursoAberto.Publico && !periodoInicialParaMatricula.HasValue, "Período inicial para matricula é obrigatório"); ExcecaoDeDominio.Quando(tipoDeCursoAberto == TipoDeCursoAberto.Publico && !periodoFinalParaMatricula.HasValue, "Período final para matricula é obrigatório"); ExcecaoDeDominio.Quando(tipoDeCursoAberto == TipoDeCursoAberto.Fechado && string.IsNullOrEmpty(empresa), "Empresa é obrigatório quando tipo é fechado"); ExcecaoDeDominio.Quando(periodoInicialParaMatricula > periodoFinalParaMatricula, "Período inicial é maior que período final para matricula"); ExcecaoDeDominio.Quando(inicioDoCurso <= DateTime.MinValue, "Data de inicio do curso é obrigatório"); ExcecaoDeDominio.Quando(inicioDoCurso < periodoFinalParaMatricula, "Data de inicio do curso menor que período final para matricula"); ExcecaoDeDominio.Quando(fimDoCurso <= DateTime.MinValue, "Data de fim do curso é obrigatório"); ExcecaoDeDominio.Quando(inicioDoCurso > fimDoCurso, "Data de inicio do curso maior que data de fim do curso"); }