public async Task <Unit> Handle(Ejecuta request, CancellationToken cancellationToken) { Guid _proyectoId = Guid.NewGuid(); var proyecto = new Proyecto { ProyectoId = _proyectoId, NombreProyecto = request.NombreProyecto, ClienteId = request.ClienteId, FechaCreacion = DateTime.UtcNow }; _context.Proyecto.Add(proyecto); //Recorrer arreglo de etapas, y aser un save por cada etapa. if (request.ListaEtapas != null) { foreach (var id in request.ListaEtapas) { var proyectoEtapa = new ProyectoEtapa { ProyectoId = _proyectoId, EtapaId = id }; _context.ProyectoEtapa.Add(proyectoEtapa); } } var valor = await _context.SaveChangesAsync(); if (valor > 0) { return(Unit.Value); } throw new Exception("No se pudo insertar el proyecto"); }
public async Task <Unit> Handle(Ejecuta request, CancellationToken cancellationToken) { var proyecto = await _context.Proyecto.FindAsync(request.ProyectoId); if (proyecto == null) { //throw new Exception("No se puede eliminar el curso"); throw new ManejadorExcepcion(HttpStatusCode.NotFound, new{ mensaje = "No se encontró el proyecto" }); } proyecto.NombreProyecto = request.NombreProyecto ?? proyecto.NombreProyecto; proyecto.ClienteId = request.ClienteId ?? proyecto.ClienteId; proyecto.FechaCreacion = DateTime.UtcNow; if (request.ListaEtapa != null) { if (request.ListaEtapa.Count > 0) { //Eliminar las etapas actuales var etapasBD = _context.ProyectoEtapa.Where(x => x.ProyectoId == request.ProyectoId).ToList(); foreach (var etapaEliminar in etapasBD) { _context.ProyectoEtapa.Remove(etapaEliminar); } //Fin Eliminar //Procedimiento para agregar nuevas etapas foreach (var id in request.ListaEtapa) { var nuevaEtapa = new ProyectoEtapa { ProyectoId = request.ProyectoId, EtapaId = id }; _context.ProyectoEtapa.Add(nuevaEtapa); } //Fin procedimiento } } //if(request.ClienteId < 0){ // proyecto.ClienteId = proyecto.ClienteId; //} var resultado = await _context.SaveChangesAsync(); if (resultado > 0) { return(Unit.Value); } throw new Exception("No se guardaron los cambios en el proyecto"); }