public void Setup() { _dto = new CursoAbertoParaCadastroViewModel { Preco = "10", Codigo = "XPTO", IdCurso = 10, PeriodoFinalParaMatricula = DateTime.Now.AddDays(-1), PeriodoInicialParaMatricula = DateTime.Now.AddDays(-10), InicioDoCurso = DateTime.Now, FimDoCurso = DateTime.Now.AddDays(10), TipoDeCursoAberto = "Publico" }; _cursoRepositorio = new Mock <IRepositorio <Curso> >(); _cursoRepositorio.Setup(repositorio => repositorio.ObterPorId(_dto.IdCurso)) .Returns(FluentBuilder <Curso> .New().Build); _cursoAbertoRepositorio = new Mock <ICursoAbertoRepositorio>(); _instrutorRepositorio = new Mock <IPessoaRepositorio>(); _instrutor = FluentBuilder <Pessoa> .New().With(i => i.Id, InstrutorId).Build(); _instrutorRepositorio.Setup(r => r.ObterPorId(InstrutorId)).Returns(_instrutor); _armazenador = new ArmazenadorDeCursoAberto( _cursoRepositorio.Object, _cursoAbertoRepositorio.Object, _instrutorRepositorio.Object); }
private void AdicionarOuRemoverInstrutor(CursoAbertoParaCadastroViewModel model, CursoAberto cursoAberto) { foreach (var instrutorDaTurmaViewModel in model.Instrutores) { var instrutor = _pessoaRepositorio.ObterPorId(instrutorDaTurmaViewModel.Id); Enum.TryParse <CargoNaTurma>(instrutorDaTurmaViewModel.Cargo, out var cargo); cursoAberto.AdicionarInstrutor(instrutor, cargo); } if (cursoAberto.Instrutores == null) { return; } var instrutoresDaTurmaParaRemover = new List <InstrutorDaTurma>(); foreach (var instrutorDaTurma in cursoAberto.Instrutores) { if (!model.Instrutores.Exists(i => i.Id == instrutorDaTurma.Instrutor.Id && i.Cargo == instrutorDaTurma.Cargo.ToString())) { instrutoresDaTurmaParaRemover.Add(new InstrutorDaTurma(instrutorDaTurma.Instrutor, instrutorDaTurma.Cargo)); } } foreach (var instrutorDaTurma in instrutoresDaTurmaParaRemover) { cursoAberto.RemoverInstrutor(instrutorDaTurma.Instrutor, instrutorDaTurma.Cargo); } }
public IActionResult Salvar(CursoAbertoParaCadastroViewModel model) { model.RemoverInstrutoresEmBranco(); _armazenadorDeCursoAberto.Armazenar(model); return(RedirectToAction("Index", new { idCurso = model.IdCurso })); }
public void Armazenar(CursoAbertoParaCadastroViewModel model) { var curso = _cursoRepositorio.ObterPorId(model.IdCurso); ExcecaoDeDominio.Quando(!decimal.TryParse(model.Preco, out decimal preco), "Preço inválido"); ExcecaoDeDominio.Quando(!Enum.TryParse(model.TipoDeCursoAberto, out TipoDeCursoAberto tipo), "Tipo de curso inválido"); var cursoAberto = new CursoAberto( model.Codigo, curso, preco, tipo, model.Empresa, model.PeriodoInicialParaMatricula, model.PeriodoFinalParaMatricula, model.InicioDoCurso, model.FimDoCurso); if (model.Id > 0) { cursoAberto = _cursoAbertoRepositorio.ObterPorId(model.Id); cursoAberto.Editar( model.Codigo, curso, preco, tipo, model.Empresa, model.PeriodoInicialParaMatricula, model.PeriodoFinalParaMatricula, model.InicioDoCurso, model.FimDoCurso); } AdicionarOuRemoverInstrutor(model, cursoAberto); if (model.Id == 0) { _cursoAbertoRepositorio.Adicionar(cursoAberto); } }