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

                    foreach (var item in lst)
                    {
                        Usuario u = UsuarioConverter.convert(item);
                        u.persona            = PersonaConverter.convert(item.persona);
                        u.persona.admin      = item.persona.admin == null ? null : AdminConverter.convert(item.persona.admin);
                        u.persona.superadmin = item.persona.superadmin == null ? null : SuperAdminConverter.convert(item.persona.superadmin);
                        u.persona.conductor  = item.persona.conductor == null ? null : ConductorConverter.convert(item.persona.conductor);

                        ret.Add(u);
                    }

                    return(ret);
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        public Horario RegistrarHorario(Horario h)
        {
            using (uruguay_busEntities db = new uruguay_busEntities())
            {
                try
                {
                    horario hor = HorarioConverter.convert(h);
                    hor.conductor = db.conductor.Find(h.conductor.id);
                    hor.linea     = db.linea.Find(h.linea.id);
                    hor.vehiculo  = db.vehiculo.Find(h.vehiculo.id);

                    if (hor.conductor == null)
                    {
                        throw new Exception("No se encontro ningun conductor con ese ID");
                    }
                    if (hor.linea == null)
                    {
                        throw new Exception("No se encontro ninguna linea con ese ID");
                    }
                    if (hor.vehiculo == null)
                    {
                        throw new Exception("No se encontro ningun vehiculo con ese ID");
                    }

                    db.horario.Add(hor);
                    db.SaveChanges();

                    return(HorarioConverter.convert(hor));
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
예제 #3
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;
            }
        }
예제 #4
0
        public Usuario ObtenerUsuario(string correo)
        {
            using (uruguay_busEntities db = new uruguay_busEntities())
            {
                try
                {
                    usuario u = db.usuario.Where(x => x.persona.correo.Equals(correo)).FirstOrDefault();
                    if (u == null)
                    {
                        return(null);
                    }

                    Usuario ret = UsuarioConverter.convert(u);
                    ret.persona            = PersonaConverter.convert(u.persona);
                    ret.persona.conductor  = ConductorConverter.convert(u.persona.conductor);
                    ret.persona.admin      = AdminConverter.convert(u.persona.admin);
                    ret.persona.superadmin = SuperAdminConverter.convert(u.persona.superadmin);

                    return(ret);
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
        public Usuario RegistrarUsuario(Usuario u)
        {
            using (uruguay_busEntities db = new uruguay_busEntities())
            {
                try
                {
                    if (db.persona.Where(x => x.correo == u.persona.correo).Count() != 0)
                    {
                        throw new Exception("Ya existe un usuario con ese correo");
                    }

                    usuario usu = UsuarioConverter.convert(u);
                    persona per = PersonaConverter.convert(u.persona);

                    per.contrasenia = DAL_Usuario.GetHash(per.contrasenia);

                    usu.persona = per;
                    per.usuario = usu;

                    db.persona.Add(per);
                    db.SaveChanges();

                    Usuario usuarioRet = UsuarioConverter.convert(usu);
                    Persona personaRet = PersonaConverter.convert(per);

                    usuarioRet.persona = personaRet;

                    return(usuarioRet);
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
        public ICollection <Horario> ListarHorarios()
        {
            using (uruguay_busEntities db = new uruguay_busEntities())
            {
                try
                {
                    ICollection <Horario> ret      = new List <Horario>();
                    ICollection <horario> horarios = (ICollection <horario>)db.horario.ToList();

                    foreach (var item in horarios)
                    {
                        Horario h = HorarioConverter.convert(item);
                        h.vehiculo  = VehiculoConverter.convert(item.vehiculo);
                        h.conductor = ConductorConverter.convert(item.conductor);
                        h.linea     = LineaConverter.convert(item.linea);
                        ret.Add(h);
                    }

                    return(ret);
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
 public ICollection <Viaje> ListarViajes()
 {
     try
     {
         using (uruguay_busEntities db = new uruguay_busEntities())
         {
             ICollection <Viaje> ret    = new List <Viaje>();
             ICollection <viaje> viajes = (ICollection <viaje>)db.viaje.ToList();
             foreach (var item in viajes)
             {
                 Viaje v = ViajeConverter.convert(item);
                 v.horario           = HorarioConverter.convert(item.horario);
                 v.horario.vehiculo  = VehiculoConverter.convert(item.horario.vehiculo);
                 v.horario.conductor = ConductorConverter.convert(item.horario.conductor);
                 v.horario.linea     = LineaConverter.convert(item.horario.linea);
                 ret.Add(v);
             }
             return(ret);
         }
     }
     catch (Exception e)
     {
         throw e;
     }
 }
        public List <VehiculoCercanoDTO> ListarVehiculosCercanos(int idParada, int?idUsuario = null)
        {
            using (uruguay_busEntities db = new uruguay_busEntities())
            {
                try
                {
                    var parada = db.parada.FirstOrDefault(x => x.id == idParada);
                    if (parada == null)
                    {
                        throw new Exception("No se encontro ninguna parada con ese ID");
                    }

                    var Res = db.viaje
                              .Where(x => x.finalizado == false).ToList()?
                              .Where(x => x.horario.linea.tramo.Any(y => y.parada_id == idParada) &&
                                     !x.paso_por_parada.Any(y => y.parada_id == idParada) &&
                                     x.paso_por_parada.Any(y => y.parada_id == GetParadaAnterior(x.horario.linea.id, idParada))
                                     ).ToList()
                              .Select(x =>
                                      new VehiculoCercanoDTO()
                    {
                        vehiculo_id      = x.horario.vehiculo.id,
                        pasaje_reservado = idUsuario == null ? false : x.pasaje.Any(y => y.usuario.id == idUsuario)
                    }
                                      ).ToList();
                    return(Res);
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
예제 #9
0
        public ICollection <Parada> obtenerParadasDeLinea(int idLinea)
        {
            using (uruguay_busEntities db = new uruguay_busEntities())
            {
                try
                {
                    ICollection <parada>      ret       = new List <parada>();
                    IDictionary <int, parada> dicParada = new SortedDictionary <int, parada>();

                    linea l = db.linea.Where(x => x.id == idLinea).FirstOrDefault();

                    if (l == null)
                    {
                        throw new Exception("No se encontró ninguna linea con ese ID");
                    }

                    foreach (var item in l.tramo)
                    {
                        dicParada.Add(item.numero, item.parada);
                    }

                    ret = dicParada.Values;

                    return(ParadaConverter.convert(ret));
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
예제 #10
0
        public Vehiculo ModificarVehiculo(Vehiculo v)
        {
            using (uruguay_busEntities db = new uruguay_busEntities())
            {
                try
                {
                    if (v == null || db.vehiculo.Find(v.id) == null)
                    {
                        throw new Exception("No se encontro ningun vehiculo con ese ID");
                    }

                    vehiculo veh = db.vehiculo.Find(v.id);

                    veh.cant_asientos = v.cant_asientos;
                    veh.marca         = v.marca;
                    veh.modelo        = v.modelo;
                    veh.matricula     = v.matricula;

                    db.SaveChanges();
                    return(VehiculoConverter.convert(veh));
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
예제 #11
0
        public Linea ModificarLinea(Linea l)
        {
            using (uruguay_busEntities db = new uruguay_busEntities())
            {
                try
                {
                    if (l == null)
                    {
                        throw new Exception("Se deve enviar el objeto que deceas modificar");
                    }

                    if (l.nombre == null)
                    {
                        throw new Exception("El nombre que se desa modificar no puede estar vacio");
                    }

                    linea LinMod = db.linea.Find(l.id);

                    if (LinMod == null)
                    {
                        throw new Exception("La linea que se desa modificar no existe");
                    }

                    LinMod.nombre = l.nombre;

                    db.SaveChanges();

                    return(LineaConverter.convert(LinMod));
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
        public Pasaje CancelarPasaje(int idPasaje)
        {
            using (uruguay_busEntities db = new uruguay_busEntities())
            {
                try
                {
                    pasaje pasaje = db.pasaje.FirstOrDefault(x => x.id == idPasaje);

                    if (pasaje == null)
                    {
                        return(null);
                    }

                    Pasaje ret = PasajeConverter.convert(pasaje);

                    db.pasaje.Remove(pasaje);
                    db.SaveChanges();

                    return(ret);
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
예제 #13
0
        public Conductor ModificarConductor(Conductor c)
        {
            using (uruguay_busEntities db = new uruguay_busEntities())
            {
                try
                {
                    if (c == null)
                    {
                        throw new Exception("No se encontro ningun conductor con ese ID");
                    }

                    conductor con = db.conductor.Find(c.id);
                    if (con == null)
                    {
                        throw new Exception("No se encontro ningun conductor con ese ID");
                    }

                    con.vencimiento_libreta = c.vencimiento_libreta;
                    db.SaveChanges();

                    c         = ConductorConverter.convert(con);
                    c.persona = PersonaConverter.convert(con.persona);

                    return(c);
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
        public Usuario IniciarSesion(string correo, string contrasenia)
        {
            using (uruguay_busEntities db = new uruguay_busEntities())
            {
                try
                {
                    persona per = db.persona.Where(x => x.correo == correo).FirstOrDefault();

                    if (per == null)
                    {
                        return(null);
                    }

                    if (!DAL_Usuario.CompareHash(contrasenia, per.contrasenia))
                    {
                        return(null);
                    }

                    //Persona personaRet = PersonaConverter.convert(per);
                    Usuario usuarioRet = UsuarioConverter.convert(per.usuario);
                    usuarioRet.persona = PersonaConverter.convert(per);

                    usuarioRet.persona.conductor  = ConductorConverter.convert(per.conductor);
                    usuarioRet.persona.admin      = AdminConverter.convert(per.admin);
                    usuarioRet.persona.superadmin = SuperAdminConverter.convert(per.superadmin);

                    return(usuarioRet);
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
        private decimal PrecioRecorrido(int idlinea, int idParadaOrigen, int idParadaDestino, DateTime fecha)
        {
            DAL_Global DAL_G            = new DAL_Global();
            var        paradas          = DAL_G.obtenerParadasDeLinea(idlinea).Select(x => ParadaConverter.convert(x)).ToList();
            decimal    precio           = 0;
            bool       EstoyEnRecorrido = false;

            using (uruguay_busEntities db = new uruguay_busEntities())
            {
                foreach (var parada in paradas)
                {
                    if (EstoyEnRecorrido)
                    {
                        var valor = db.parada.FirstOrDefault(x => x.id == parada.id)?.tramo
                                    .FirstOrDefault(x => x.linea.id == idlinea)?.precio
                                    .OrderByDescending(x => x.fecha_validez)
                                    .FirstOrDefault(x => x.fecha_validez.Date <= fecha.Date)?.valor ?? 0;

                        precio += valor;
                        if (parada.id == idParadaDestino)
                        {
                            return(precio);
                        }
                    }
                    else if (parada.id == idParadaOrigen)
                    {
                        EstoyEnRecorrido = true;
                    }
                }
            }
            return(precio);
        }
        public void IniciarViaje(int idViaje)
        {
            using (uruguay_busEntities db = new uruguay_busEntities())
            {
                try
                {
                    viaje v = db.viaje.Find(idViaje);

                    if (v == null)
                    {
                        throw new Exception("No se encontro ningun viaje con ese ID");
                    }

                    if (v.finalizado == true)
                    {
                        throw new Exception("No se pudo marcar el viaje como iniciado porque ya está marcado como finalizado.");
                    }

                    v.finalizado = false;
                    db.SaveChanges();
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
예제 #17
0
        public ICollection <Conductor> ListarConductores()
        {
            try
            {
                using (uruguay_busEntities db = new uruguay_busEntities())
                {
                    ICollection <Conductor> ret         = new List <Conductor>();
                    ICollection <conductor> conductores = (ICollection <conductor>)db.conductor.ToList();
                    foreach (var item in conductores)
                    {
                        Conductor c = ConductorConverter.convert(item);
                        c.persona = PersonaConverter.convert(item.persona);

                        c.persona.usuario    = UsuarioConverter.convert(item.persona.usuario);
                        c.persona.admin      = AdminConverter.convert(item.persona.admin);
                        c.persona.superadmin = SuperAdminConverter.convert(item.persona.superadmin);


                        ret.Add(c);
                    }
                    return(ret);
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        public Pasaje ReservarPasaje(int idViaje, int idParadaOrigen, int idParadaDestino, int idUsuario, int?asiento = null)
        {
            using (uruguay_busEntities db = new uruguay_busEntities())
            {
                try
                {
                    var viaje = db.viaje.FirstOrDefault(x => x.id == idViaje);

                    if (viaje == null)
                    {
                        throw new Exception("No se encontro ningun viaje con ese ID");
                    }

                    if (viaje.horario.linea.tramo.Any(t => t.parada.id == idParadaOrigen) && viaje.horario.linea.tramo.Any(t => t.parada.id == idParadaDestino))
                    {
                        int no = viaje.horario.linea.tramo.Where(t => t.parada.id == idParadaOrigen).First().numero;
                        int nd = viaje.horario.linea.tramo.Where(t => t.parada.id == idParadaDestino).First().numero;
                        if (no >= nd)
                        {
                            throw new Exception("La parada de origen es posterior a la de destino");
                        }
                    }
                    else
                    {
                        throw new Exception("Una o ambas paradas no pertenecen a la linea");
                    }

                    var paradaOri  = db.parada.FirstOrDefault(x => x.id == idParadaOrigen);
                    var paradaDest = db.parada.FirstOrDefault(x => x.id == idParadaDestino);
                    var usuario    = db.usuario.FirstOrDefault(x => x.id == idUsuario);

                    if (usuario == null)
                    {
                        throw new Exception("No se encontro ningun usuario con ese ID");
                    }

                    var pasaje = new pasaje()
                    {
                        //parada_id_destino = idParadaDestino,
                        parada_destino = paradaDest,
                        //parada_id_origen = idParadaOrigen,
                        parada_origen = paradaOri,
                        //viaje_id = idViaje,
                        viaje      = viaje,
                        usuario_id = idUsuario,
                        usuario    = usuario,
                        asiento    = asiento,
                    };
                    db.pasaje.Add(pasaje);
                    db.SaveChanges();
                    return(PasajeConverter.convert(pasaje));
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
예제 #19
0
        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 void AsignarRol(int idUsuario, Rol rol, DateTime?fechaVencLibreta)
        {
            using (uruguay_busEntities db = new uruguay_busEntities())
            {
                try
                {
                    persona per = db.usuario.Find(idUsuario).persona;

                    if (per == null)
                    {
                        throw new Exception("El ID del usuario es incorecto.");
                    }

                    if (rol.Equals(Rol.CONDUCTOR))
                    {
                        if (fechaVencLibreta == null)
                        {
                            throw new Exception("Se deve ingresar la fecha de vencimiento de la libreta.");
                        }

                        if (!db.conductor.Any(x => x.id == per.id))
                        {
                            conductor con = new conductor();
                            con.persona             = per;
                            con.vencimiento_libreta = (DateTime)fechaVencLibreta;
                            db.conductor.Add(con);
                        }
                    }
                    else if (rol.Equals(Rol.ADMIN))
                    {
                        if (!db.admin.Any(x => x.id == per.id))
                        {
                            admin adm = new admin();
                            adm.persona = per;
                            db.admin.Add(adm);
                        }
                    }
                    else if (rol.Equals(Rol.SUPERADMIN))
                    {
                        if (!db.superadmin.Any(x => x.id == per.id))
                        {
                            superadmin spm = new superadmin();
                            spm.persona = per;
                            db.superadmin.Add(spm);
                        }
                    }

                    db.SaveChanges();
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
예제 #21
0
 public ICollection <Vehiculo> ListarVehiculos()
 {
     using (uruguay_busEntities db = new uruguay_busEntities())
     {
         try
         {
             return(VehiculoConverter.convert(db.vehiculo.ToList()));
         }
         catch (Exception e)
         {
             throw e;
         }
     }
 }
 public bool CorreoExiste(string correo)
 {
     using (uruguay_busEntities db = new uruguay_busEntities())
     {
         try
         {
             return(db.usuario.Any(x => x.persona.correo == correo));
         }
         catch (Exception e)
         {
             throw e;
         }
     }
 }
예제 #23
0
        public Horario ModificarHorario(Horario h)
        {
            using (uruguay_busEntities db = new uruguay_busEntities())
            {
                try
                {
                    horario horarioModificado = db.horario.Find(h.id);

                    if (h.hora != null)
                    {
                        horarioModificado.hora = h.hora;
                    }

                    if (h.conductor != null)
                    {
                        conductor conductor = db.conductor.Find(h.conductor.id);

                        if (conductor.Equals(null))
                        {
                            throw new Exception("El conductor que se desa asociar al horario no existe");
                        }

                        horarioModificado.conductor = conductor;
                    }

                    if (h.vehiculo != null)
                    {
                        vehiculo vehiculo = db.vehiculo.Find(h.vehiculo.id);

                        if (vehiculo.Equals(null))
                        {
                            throw new Exception("El vehiculo que se desa asociar al horario no existe");
                        }

                        horarioModificado.vehiculo = vehiculo;
                    }


                    db.Entry(horarioModificado).State = EntityState.Modified;
                    db.SaveChanges();
                    return(HorarioConverter.convert(horarioModificado));
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
예제 #24
0
        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;
                }
            }
        }
예제 #25
0
 public ICollection <Parada> ListarParadas()
 {
     try
     {
         using (uruguay_busEntities db = new uruguay_busEntities())
         {
             ICollection <parada> lstParadas = (ICollection <parada>)db.parada.ToList();
             Console.WriteLine(lstParadas.Count());
             return(ParadaConverter.convert(lstParadas));
         }
     }
     catch (Exception e)
     {
         throw e;
     }
 }
        public Viaje ObtenerViajeActual(int idConductor)
        {
            using (uruguay_busEntities db = new uruguay_busEntities())
            {
                try
                {
                    viaje v = db.viaje.Where(x => x.finalizado == false && x.horario.conductor_id == idConductor).First();

                    return(ViajeConverter.convert(v));
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
예제 #27
0
        public ICollection <Viaje> RegistrarViajes(ICollection <Viaje> vs, int idHorario)
        {
            using (uruguay_busEntities db = new uruguay_busEntities())
            {
                try
                {
                    horario hor = db.horario.Find(idHorario);
                    if (hor == null)
                    {
                        throw new Exception("No se encontro ningun horario con ese ID");
                    }

                    ICollection <viaje> viajes          = ViajeConverter.convert(vs);
                    ICollection <viaje> viajesGuardados = new List <viaje>();

                    foreach (var via in viajes)
                    {
                        via.horario = hor;
                        db.viaje.Add(via);
                        viajesGuardados.Add(via);
                    }
                    db.SaveChanges();

                    //-------- para retornar
                    ICollection <Viaje> viajesRet = new List <Viaje>();

                    foreach (var item in viajesGuardados)
                    {
                        Viaje v = ViajeConverter.convert(item);
                        v.horario           = HorarioConverter.convert(item.horario);
                        v.horario.vehiculo  = VehiculoConverter.convert(item.horario.vehiculo);
                        v.horario.conductor = ConductorConverter.convert(item.horario.conductor);
                        v.horario.linea     = LineaConverter.convert(item.horario.linea);
                        viajesRet.Add(v);
                    }

                    return(viajesRet);
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
예제 #28
0
        public Parada RegistrarParada(Parada p)
        {
            using (uruguay_busEntities db = new uruguay_busEntities())
            {
                try
                {
                    parada par = ParadaConverter.convert(p);

                    db.parada.Add(par);
                    db.SaveChanges();

                    return(ParadaConverter.convert(par));
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
        private List <int> GetCantAsientosDisponiblies(viaje Viaje, int idParadaOrigen, int idParadaDestino)
        {
            DAL_Global DAL_G    = new DAL_Global();
            var        paradas  = DAL_G.obtenerParadasDeLinea(Viaje.horario.linea.id).Select(x => ParadaConverter.convert(x)).ToList();
            var        res      = new List <int>();
            List <int> ParadasI = ParadasIntermedias(Viaje.horario.linea.id, idParadaOrigen, idParadaDestino);

            using (uruguay_busEntities db = new uruguay_busEntities())
            {
                for (int i = 1; i < Viaje.horario.vehiculo.cant_asientos; i++)
                {
                    var pasajesParaElAsiento = Viaje.pasaje.Where(x => x.asiento == i).ToList();
                    if (pasajesParaElAsiento.Count() == 0)
                    {
                        res.Add(i);
                    }
                    else
                    {
                        var asientoDisponible = true;
                        foreach (var pasaje in pasajesParaElAsiento)
                        {
                            if (ParadasI.Intersect(ParadasIntermedias(Viaje.horario.linea.id, pasaje.parada_id_origen, pasaje.parada_id_destino)).Count() == 0)
                            {
                                continue;
                            }
                            asientoDisponible = pasaje.parada_id_destino == idParadaOrigen ||
                                                pasaje.parada_id_origen == idParadaDestino;
                            if (!asientoDisponible)
                            {
                                break;
                            }
                        }
                        if (asientoDisponible)
                        {
                            res.Add(i);
                        }
                    }
                }
            }
            return(res);
        }
예제 #30
0
        public Vehiculo RegistrarVehiculo(Vehiculo v)
        {
            using (uruguay_busEntities db = new uruguay_busEntities())
            {
                try
                {
                    vehiculo veh = VehiculoConverter.convert(v);
                    veh.latitud  = (decimal) - 34.34;
                    veh.longitud = (decimal) - 56.71;

                    db.vehiculo.Add(veh);
                    db.SaveChanges();

                    return(VehiculoConverter.convert(veh));
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }