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)); } }
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)); } }