public Linea RegistrarLinea(Linea l)
        {
            using (uruguay_busEntities db = new uruguay_busEntities())
            {
                try
                {
                    // convertir linea
                    // convertir tramos y asociarlos a la linea
                    // para cada tramo obtener la parada desde la DB y asociarlo
                    // para cada tramo convertir y asociar el precio
                    linea lin = LineaConverter.convert(l);
                    foreach (var t in l.tramos)
                    {
                        tramo tra = TramoConverter.convert(t);
                        lin.tramo.Add(tra);

                        parada par = db.parada.Find(t.parada.id);
                        if (par == null)
                        {
                            throw new Exception("No se encontro ninguna parada con ese ID");
                        }
                        tra.parada = par;

                        tra.precio.Add(PrecioConverter.convert(t.precio.First()));
                    }

                    // guardo la linea, sus tramos y sus precios (las paradas no, esas ya estaban en a DB)
                    db.linea.Add(lin);
                    //foreach (var tra in lin.tramo)
                    //{
                    //    db.tramo.Add(tra);
                    //    db.precio.Add(tra.precio.First());
                    //}
                    db.SaveChanges();

                    // Hago las conversiones inversas y las asociaciones
                    l = LineaConverter.convert(lin);
                    foreach (var tra in lin.tramo)
                    {
                        Tramo t = TramoConverter.convert(tra);
                        l.tramos.Add(t);

                        t.parada = ParadaConverter.convert(tra.parada);

                        precio pre = db.precio.FirstOrDefault(x => x.linea_id == l.id && x.parada_id == t.parada.id);
                        Precio p   = PrecioConverter.convert(pre);
                        t.precio.Add(p);
                    }

                    return(l);
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
 public static void asociarPrecios(tramo t, ICollection <precio> p)
 {
     foreach (var item in p)
     {
         item.tramo     = t;
         item.linea_id  = t.linea_id;
         item.parada_id = t.parada_id;
         t.precio.Add(item);
     }
 }
        public static tramo convert(Tramo t)
        {
            if (t == null)
            {
                return(null);
            }

            tramo ret = new tramo()
            {
                numero = t.numero,
                tiempo = t.tiempo,
            };

            return(ret);
        }
        public Tramo ModificarTramo(Precio p)
        {
            using (uruguay_busEntities db = new uruguay_busEntities())
            {
                try
                {
                    if (p == null)
                    {
                        throw new Exception("Se deve enviar el objeto que deceas modificar");
                    }

                    if (p.tramo == null)
                    {
                        throw new Exception("Se deve enviar el objeto que deceas modificar");
                    }

                    tramo TramMod = db.tramo.Where(x => x.parada_id == p.tramo.parada.id && x.linea_id == p.tramo.linea.id).FirstOrDefault();

                    if (TramMod == null)
                    {
                        throw new Exception("Se deve enviar el objeto que deceas modificar");
                    }

                    TramMod.tiempo = p.tramo.tiempo;

                    if (p.valor >= 0)
                    {
                        precio pre = new precio()
                        {
                            fecha_validez = p.fecha_validez,
                            valor         = p.valor,
                            tramo         = TramMod,
                            linea_id      = TramMod.linea_id,
                            parada_id     = TramMod.parada_id
                        };
                        db.precio.Add(pre);
                        TramMod.precio.Add(pre);
                    }
                    db.SaveChanges();

                    return(TramoConverter.convert(TramMod));
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }