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); }