예제 #1
0
        public static Response <PlanoEntity> ConsultarPrecioRuta(PrecioRutaRequest request)
        {
            try
            {
                // Obtiene 'PrecioAsiento'
                var obtenerPrecioAsiento = PlanoRepository.ObtenerPrecioAsiento(request.CodiOrigen, request.CodiDestino, request.HoraViaje, request.FechaViaje, request.CodiServicio, request.CodiEmpresa, request.Nivel);

                // En caso de no encontrar resultado
                if (obtenerPrecioAsiento.PrecioNormal == 0 && obtenerPrecioAsiento.PrecioMinimo == 0 && obtenerPrecioAsiento.PrecioMaximo == 0)
                {
                    obtenerPrecioAsiento = PlanoRepository.ObtenerPrecioAsiento(request.CodiOrigen, request.CodiDestino, string.Empty, request.FechaViaje, request.CodiServicio, request.CodiEmpresa, request.Nivel);
                }

                return(new Response <PlanoEntity>(true, obtenerPrecioAsiento, string.Empty, true));;
            }
            catch (Exception ex)
            {
                Log.Instance(typeof(BaseLogic)).Error(System.Reflection.MethodBase.GetCurrentMethod().Name, ex);
                return(new Response <PlanoEntity>(false, null, Message.MsgExcConsultaPrecioRuta, false));
            }
        }
예제 #2
0
        public static Response <List <PlanoEntity> > MuestraPlano(PlanoRequest request)
        {
            try
            {
                string auxTipoLI = string.Empty;

                // Busca PlanoBus
                var buscarPlanoBus = PlanoRepository.BuscarPlanoBus(request.PlanoBus, request.CodiBus);
                if (buscarPlanoBus.Count == 0)
                {
                    return(new Response <List <PlanoEntity> >(false, buscarPlanoBus, Message.MsgValidaMuestraPlano, true));
                }

                // Lista 'AsientosVendidos'
                var listarAsientosVendidos = PlanoRepository.ListarAsientosVendidos(request.NroViaje, request.CodiProgramacion, request.FechaProgramacion);

                // Lista 'AsientosBloqueados'
                var listarAsientosBloqueados = PlanoRepository.ListarAsientosBloqueados(request.NroViaje, request.CodiProgramacion, request.FechaProgramacion);

                // Obtiene 'OrdenOrigenPasajero'
                var ordenOrigenPasajero = PlanoRepository.ObtenerOrdenOficinaRuta(request.NroViaje, request.CodiOrigen);

                // Obtiene 'OrdenDestinoPasajero'
                var ordenDestinoPasajero = PlanoRepository.ObtenerOrdenOficinaRuta(request.NroViaje, request.CodiDestino);

                // Recorre cada registro
                for (int i = 0; i < buscarPlanoBus.Count; i++)
                {
                    bool auxBool = int.TryParse(buscarPlanoBus[i].Tipo, out int auxValue);
                    if (auxBool)
                    {
                        // Obtiene 'PrecioAsiento'
                        var obtenerPrecioAsiento = PlanoRepository.ObtenerPrecioAsiento(request.CodiOrigen, request.CodiDestino, request.HoraViaje, request.FechaViaje, request.CodiServicio, request.CodiEmpresa, buscarPlanoBus[i].Nivel.ToString());

                        // En caso de no encontrar resultado
                        if (obtenerPrecioAsiento.PrecioNormal == 0 && obtenerPrecioAsiento.PrecioMinimo == 0 && obtenerPrecioAsiento.PrecioMaximo == 0)
                        {
                            obtenerPrecioAsiento           = PlanoRepository.ObtenerPrecioAsiento(request.CodiOrigen, request.CodiDestino, string.Empty, request.FechaViaje, request.CodiServicio, request.CodiEmpresa, buscarPlanoBus[i].Nivel.ToString());
                            buscarPlanoBus[i].PrecioNormal = obtenerPrecioAsiento.PrecioNormal;
                            buscarPlanoBus[i].PrecioMinimo = obtenerPrecioAsiento.PrecioMinimo;
                            buscarPlanoBus[i].PrecioMaximo = obtenerPrecioAsiento.PrecioMaximo;
                        }
                        else
                        {
                            buscarPlanoBus[i].PrecioNormal = obtenerPrecioAsiento.PrecioNormal;
                            buscarPlanoBus[i].PrecioMinimo = obtenerPrecioAsiento.PrecioMinimo;
                            buscarPlanoBus[i].PrecioMaximo = obtenerPrecioAsiento.PrecioMaximo;
                        }

                        foreach (PlanoEntity item in listarAsientosVendidos)
                        {
                            if (auxValue == item.NumeAsiento)
                            {
                                item.OrdenOrigen = PlanoRepository.ObtenerOrdenOficinaRuta(request.NroViaje, item.CodiOrigen);
                                var ordenDestino = PlanoRepository.ObtenerOrdenOficinaRuta(request.NroViaje, item.CodiDestino);

                                // Valida 'OrdenOrigen' y 'ordenDestino'
                                if (string.IsNullOrEmpty(item.OrdenOrigen) || string.IsNullOrEmpty(ordenDestino))
                                {
                                    continue;
                                }

                                if (short.Parse(ordenDestino) > short.Parse(ordenOrigenPasajero))
                                {
                                    if (short.Parse(item.OrdenOrigen) > short.Parse(ordenOrigenPasajero))
                                    {
                                        if ((short.Parse(item.OrdenOrigen)) > short.Parse(ordenDestinoPasajero))
                                        {
                                        }
                                        else if (short.Parse(item.OrdenOrigen) == short.Parse(ordenDestinoPasajero))
                                        {
                                        }
                                        else
                                        {
                                            if (buscarPlanoBus[i].NumeAsiento == 0)
                                            {
                                                if (item.FlagVenta == "X" || item.FlagVenta == "AB")
                                                {
                                                    item.Color = PlanoRepository.ObtenerColorDestino(request.CodiServicio, item.CodiDestino);
                                                }

                                                item.FlagVenta = "VI";
                                                MatchPlano(buscarPlanoBus[i], item, request);
                                            }
                                            else
                                            {
                                                if (short.Parse(buscarPlanoBus[i].OrdenOrigen) > short.Parse(item.OrdenOrigen))
                                                {
                                                    item.FlagVenta = "VI";
                                                    MatchPlano(buscarPlanoBus[i], item, request);
                                                }
                                            }
                                        }
                                    }
                                    else if (short.Parse(item.OrdenOrigen) == short.Parse(ordenOrigenPasajero))
                                    {
                                        MatchPlano(buscarPlanoBus[i], item, request);
                                    }
                                    else
                                    {
                                        MatchPlano(buscarPlanoBus[i], item, request);
                                    }
                                }
                                else if (short.Parse(ordenDestino) == short.Parse(ordenOrigenPasajero))
                                {
                                    if (short.Parse(item.OrdenOrigen) > short.Parse(ordenOrigenPasajero))
                                    {
                                    }
                                    else if (short.Parse(item.OrdenOrigen) == short.Parse(ordenOrigenPasajero))
                                    {
                                    }
                                    else
                                    {
                                        buscarPlanoBus[i].Color = ColorVentaPuntosIntermedios;
                                    }
                                }
                                else
                                {
                                    if (short.Parse(item.OrdenOrigen) > short.Parse(ordenOrigenPasajero))
                                    {
                                    }
                                    else if (short.Parse(item.OrdenOrigen) == short.Parse(ordenOrigenPasajero))
                                    {
                                    }
                                    else
                                    {
                                    }
                                }
                            }
                        }

                        foreach (PlanoEntity item in listarAsientosBloqueados)
                        {
                            if (auxValue == item.NumeAsiento)
                            {
                                if (buscarPlanoBus[i].NumeAsiento == 0)
                                {
                                    buscarPlanoBus[i].NumeAsiento = item.NumeAsiento;
                                }
                            }
                        }
                    }
                    else
                    {
                        if (buscarPlanoBus[i].Tipo == "LI")
                        {
                            auxTipoLI = buscarPlanoBus[i].Tipo;
                        }
                        else
                        {
                            // Caso: "LI LI 'VA' LI LI"
                            if (buscarPlanoBus[i].Tipo == "VA" &&
                                (i - 1) >= 0 && (i + 1) <= buscarPlanoBus.Count &&
                                buscarPlanoBus[i - 1].Tipo == "LI" && buscarPlanoBus[i + 1].Tipo == "LI")
                            {
                                buscarPlanoBus[i].Tipo = "LI";
                            }
                            else
                            {
                                if (string.IsNullOrEmpty(auxTipoLI))
                                {
                                    buscarPlanoBus[i].Nivel = 1;
                                }
                                else
                                {
                                    buscarPlanoBus[i].Nivel = 2;
                                }
                            }
                        }
                    }
                }

                return(new Response <List <PlanoEntity> >(true, buscarPlanoBus, Message.MsgCorrectoMuestraPlano, true));
            }
            catch (Exception ex)
            {
                Log.Instance(typeof(PlanoLogic)).Error(System.Reflection.MethodBase.GetCurrentMethod().Name, ex);
                return(new Response <List <PlanoEntity> >(false, null, Message.MsgExcMuestraPlano, false));
            }
        }