Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        public IActionResult Salvar(CursoAbertoParaCadastroViewModel model)
        {
            model.RemoverInstrutoresEmBranco();

            _armazenadorDeCursoAberto.Armazenar(model);

            return(RedirectToAction("Index", new { idCurso = model.IdCurso }));
        }
Ejemplo n.º 4
0
        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);
            }
        }