public ActionResult Get(int id) { try { var file = _context.File.Include(f => f.IdClienteNavigation).Include(f => f.IdBibliaNavigation).Include(x => x.Servicio).Where(x => x.IdFile == id).FirstOrDefault(); if (file == null) { return(Json(new Respuesta("File " + id + " no encontrado"), StatusCodes.Status503ServiceUnavailable)); } else { return(Json(FileDto.GenerarDto(file))); } } catch (Exception ex) { return(Json(new Respuesta("", ex), StatusCodes.Status500InternalServerError)); } }
public ActionResult PutFileAndServices(int id, [FromBody] FileDto dto) { using (var transaction = _context.Database.BeginTransaction()) { try { var encontrado = _context.File.Include(f => f.IdClienteNavigation).Include(f => f.IdBibliaNavigation).Include(x => x.Servicio).Where(x => x.IdFile == id).FirstOrDefault(); if (encontrado == null) { transaction.Rollback(); return(Json(new Respuesta("El file a actualizar no existe"), StatusCodes.Status500InternalServerError)); } else { var obj = FileDto.GenerarDbo(dto); encontrado.Codigo = obj.Codigo; encontrado.IdBiblia = obj.IdBiblia; encontrado.Descripcion = obj.Descripcion; encontrado.IdCliente = obj.IdCliente; //encontrado.Servicio = obj.Servicio; List <int> sobrantes = new List <int>(); foreach (var s in encontrado.Servicio) { sobrantes.Add(s.IdServicio); } foreach (var s in obj.Servicio) { var servEncontrado = _context.Servicio.Where(x => x.IdServicio == s.IdServicio).FirstOrDefault(); if (servEncontrado == null) { s.IdFile = id; _context.Servicio.Add(s); } else { sobrantes.Remove(servEncontrado.IdServicio); servEncontrado.Nombre = s.Nombre; servEncontrado.HoraRecojo = s.HoraRecojo; servEncontrado.HoraSalida = s.HoraSalida; servEncontrado.Vuelo = s.Vuelo; servEncontrado.Pasajeros = s.Pasajeros; servEncontrado.Vr = s.Vr; servEncontrado.Tc = s.Tc; servEncontrado.Hotel = s.Hotel; servEncontrado.IdProveedor = s.IdProveedor; servEncontrado.Observaciones = s.Observaciones; servEncontrado.Ciudad = s.Ciudad; servEncontrado.NombrePasajero = s.NombrePasajero; servEncontrado.Tren = s.Tren; servEncontrado.Alm = s.Alm; servEncontrado.Transporte = s.Transporte; servEncontrado.Hotel = s.Hotel; _context.Servicio.Update(servEncontrado); } } //borrando sobrantes foreach (var a in sobrantes) { var ssobrante = _context.Servicio.Where(x => x.IdServicio == a).FirstOrDefault(); _context.Servicio.Remove(ssobrante); } _context.SaveChanges(); var devolucion = FileDto.GenerarDto(encontrado); transaction.Commit(); return(Json(devolucion)); } } catch (Exception ex) { transaction.Rollback(); return(Json(new Respuesta("", ex), StatusCodes.Status500InternalServerError)); } } }