public IActionResult Add()
        {
            var viewModel  = new AddActaEUViewModel();
            var categorias = _categorias.GetAllWithSubCategorias();

            viewModel.CarrerasExistentes = _carreras.GetAll().Select(x => new DropDownViewModel <int>()
            {
                Text  = $"{x.Abreviatura} - {x.Nombre}",
                Value = x.Id
            }).ToList();
            foreach (var categoria in categorias)
            {
                var categoriaTemp = AutoMapper.Mapper.Map <AddActaEUCategoriaViewModel>(categoria);

                foreach (var subCategoria in categoria.SubCategorias.Where(x => x.Active))
                {
                    var detalle = AutoMapper.Mapper.Map <AddActaEUDetalleViewModel>(subCategoria);
                    categoriaTemp.Detalle.Add(detalle);
                }
                //si la categoria no tiene subcategorias se le agrega esa categoria como subcategoria para mostrar en la vista
                if (categoria.SubCategorias.Count == 0)
                {
                    var subCat = new AddActaEUDetalleViewModel()
                    {
                        Nombre   = categoria.Nombre,
                        Caracter = categoria.Caracter,
                    };
                    categoriaTemp.Detalle.Add(subCat);
                }
                viewModel.Categorias.Add(categoriaTemp);
            }
            return(View(viewModel));
        }
        public SystemValidationModel Save(AddActaEUViewModel viewModel)
        {
            var estudiante = _estudiantes.GetByCedulaIdentidad(viewModel.CedulaIdentidad);

            if (estudiante == null)
            {
                return new SystemValidationModel()
                       {
                           Message = "No existe un estudiante registrado con la cedula de identidad", Success = false
                       }
            }
            ;
            var acta = new ActaEU()
            {
                EstudianteId = estudiante.Id,
                CarreraId    = viewModel.CarreraSeleccionadaId,
            };

            foreach (var categoria in viewModel.Categorias)
            {
                foreach (var subcategoria in categoria.Detalle)
                {
                    if (subcategoria.HorasExtensionRealizadas != 0 && subcategoria.HorasRelojRealizadas != 0)
                    {
                        var detalleActa = Mapper.Map <ActaEUDetalle>(subcategoria);

                        if (subcategoria.SubCategoriaId == 0)
                        {   //significa que la categoria no tiene subcategoria
                            detalleActa.CategoriaId    = categoria.CategoriaId;
                            detalleActa.SubCategoriaId = null;
                        }
                        else
                        {
                            detalleActa.SubCategoriaId = subcategoria.SubCategoriaId;
                        }
                        _context.Entry(detalleActa).State = EntityState.Added;
                        acta.ActaEUDetalle.Add(detalleActa);
                    }
                }
            }
            _context.Entry(acta).State = EntityState.Added;
            var actaId     = _context.SaveChanges();
            var validation = new SystemValidationModel()
            {
                Id      = actaId,
                Success = actaId > 0
            };

            return(validation);
        }