예제 #1
0
        public ICollection <Linea> ListarLinea()
        {
            try
            {
                using (uruguay_busEntities db = new uruguay_busEntities())
                {
                    ICollection <linea> lst = (ICollection <linea>)db.linea.ToList();
                    ICollection <Linea> ret = new List <Linea>();

                    foreach (var item in lst)
                    {
                        Linea l = LineaConverter.convert(item);

                        foreach (var t in item.tramo)
                        {
                            Tramo nuevo = TramoConverter.convert(t);
                            nuevo.parada = ParadaConverter.convert(t.parada);
                            l.tramos.Add(nuevo);
                        }
                        ret.Add(l);
                    }

                    return(ret);
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        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 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;
                }
            }
        }