public static ItinerarioEntity BuscarTurno(TurnoRequest request) { var entidad = new ItinerarioEntity() { RazonSocial = string.Empty, NomSucursal = string.Empty, NomRuta = string.Empty, NomServicio = string.Empty, NomPuntoVenta = string.Empty, HoraProgramacion = string.Empty, StOpcional = string.Empty, NomOrigen = string.Empty, NomDestino = string.Empty, HoraPartida = string.Empty, DescServicio = string.Empty }; using (IDatabase db = DatabaseHelper.GetDatabase()) { db.ProcedureName = "scwsp_BuscarTurno"; db.AddParameter("@Codi_Empresa", DbType.Byte, ParameterDirection.Input, request.CodiEmpresa); db.AddParameter("@Codi_PuntoVenta", DbType.Int16, ParameterDirection.Input, request.CodiPuntoVenta); db.AddParameter("@Codi_Origen", DbType.Int16, ParameterDirection.Input, request.CodiOrigen); db.AddParameter("@Codi_Destino", DbType.Int16, ParameterDirection.Input, request.CodiDestino); db.AddParameter("@Codi_Sucursal", DbType.Int16, ParameterDirection.Input, request.CodiSucursal); db.AddParameter("@Codi_Ruta", DbType.Int16, ParameterDirection.Input, request.CodiRuta); db.AddParameter("@Codi_Servicio", DbType.Byte, ParameterDirection.Input, request.CodiServicio); db.AddParameter("@Hora", DbType.String, ParameterDirection.Input, request.HoraViaje); db.AddParameter("@FechaViaje", DbType.String, ParameterDirection.Input, request.FechaViaje); using (IDataReader drlector = db.GetDataReader()) { while (drlector.Read()) { entidad.NroViaje = Reader.GetIntValue(drlector, "NRO_VIAJE"); entidad.CodiEmpresa = Reader.GetByteValue(drlector, "CODI_EMPRESA"); entidad.RazonSocial = Reader.GetStringValue(drlector, "Razon_Social"); entidad.NroRuta = Reader.GetIntValue(drlector, "NRO_RUTA"); entidad.CodiSucursal = Reader.GetSmallIntValue(drlector, "CODI_SUCURSAL"); entidad.NomSucursal = Reader.GetStringValue(drlector, "Nom_Sucursal"); entidad.CodiRuta = Reader.GetSmallIntValue(drlector, "Codi_Ruta"); entidad.NomRuta = Reader.GetStringValue(drlector, "Nom_Ruta"); entidad.CodiServicio = Reader.GetByteValue(drlector, "CODI_SERVICIO"); entidad.NomServicio = Reader.GetStringValue(drlector, "Nom_Servicio"); entidad.CodiPuntoVenta = Reader.GetSmallIntValue(drlector, "Codi_PuntoVenta"); entidad.NomPuntoVenta = Reader.GetStringValue(drlector, "Nom_PuntoVenta"); entidad.HoraProgramacion = Reader.GetStringValue(drlector, "Hora_Programacion"); entidad.StOpcional = Reader.GetStringValue(drlector, "st_opcional"); entidad.CodiOrigen = Reader.GetSmallIntValue(drlector, "Codi_Origen"); entidad.NomOrigen = Reader.GetStringValue(drlector, "Nom_Origen"); entidad.CodiDestino = Reader.GetSmallIntValue(drlector, "Codi_Destino"); entidad.NomDestino = Reader.GetStringValue(drlector, "Nom_Destino"); entidad.HoraPartida = Reader.GetStringValue(drlector, "Hora_Partida"); entidad.NroRutaInt = Reader.GetIntValue(drlector, "NRO_RUTA_INT"); entidad.Dias = Reader.GetSmallIntValue(drlector, "DIAS"); entidad.DescServicio = Reader.GetStringValue(drlector, "DESC_SERVICIO"); break; } } } return(entidad); }
public static Response <ItinerarioEntity> MuestraTurno(TurnoRequest request) { try { var obtenerBus = new BusEntity(); // Busca Turno var buscarTurno = TurnoRepository.BuscarTurno(request); // Calcula 'FechaProgramacion' var doubleDias = double.Parse(buscarTurno.Dias.ToString()); if (buscarTurno.Dias > 0) { buscarTurno.FechaProgramacion = DateTime.Parse(request.FechaViaje).AddDays(-doubleDias).ToString("dd/MM/yyyy", CultureInfo.InvariantCulture); } else { buscarTurno.FechaProgramacion = DateTime.Parse(request.FechaViaje).ToString("dd/MM/yyyy", CultureInfo.InvariantCulture); } // Busca 'ProgramacionViaje' var buscarProgramacionViaje = ItinerarioRepository.BuscarProgramacionViaje(buscarTurno.NroViaje, buscarTurno.FechaProgramacion); if (buscarProgramacionViaje > 0) { buscarTurno.CodiProgramacion = buscarProgramacionViaje; // Obtiene 'BusProgramacion' obtenerBus = ItinerarioRepository.ObtenerBusProgramacion(buscarTurno.CodiProgramacion); buscarTurno.CodiBus = string.IsNullOrEmpty(obtenerBus.CodiBus) ? "0000" : obtenerBus.CodiBus; buscarTurno.PlanoBus = string.IsNullOrEmpty(obtenerBus.PlanBus) ? "000" : obtenerBus.PlanBus; buscarTurno.CapacidadBus = string.IsNullOrEmpty(obtenerBus.NumePasajeros) ? "0" : obtenerBus.NumePasajeros; buscarTurno.PlacaBus = string.IsNullOrEmpty(obtenerBus.PlacBus) ? "00-0000" : obtenerBus.PlacBus; buscarTurno.CodiChofer = string.IsNullOrEmpty(obtenerBus.CodiChofer) ? "00000" : obtenerBus.CodiChofer; buscarTurno.NombreChofer = string.IsNullOrEmpty(obtenerBus.NombreChofer) ? "NINGUNO" : obtenerBus.NombreChofer; buscarTurno.CodiCopiloto = string.IsNullOrEmpty(obtenerBus.CodiCopiloto) ? "00000" : obtenerBus.CodiCopiloto; buscarTurno.NombreCopiloto = string.IsNullOrEmpty(obtenerBus.NombreCopiloto) ? "NINGUNO" : obtenerBus.NombreCopiloto; buscarTurno.Activo = string.IsNullOrEmpty(obtenerBus.Activo) ? string.Empty : obtenerBus.Activo; } else { // Obtiene 'BusEstandar' obtenerBus = ItinerarioRepository.ObtenerBusEstandar(buscarTurno.CodiEmpresa, buscarTurno.CodiSucursal, buscarTurno.CodiRuta, buscarTurno.CodiServicio, buscarTurno.HoraPartida); if (!string.IsNullOrEmpty(obtenerBus.CodiBus)) { buscarTurno.CodiBus = string.IsNullOrEmpty(obtenerBus.CodiBus) ? "0000" : obtenerBus.CodiBus; buscarTurno.PlanoBus = string.IsNullOrEmpty(obtenerBus.PlanBus) ? "000" : obtenerBus.PlanBus; buscarTurno.CapacidadBus = string.IsNullOrEmpty(obtenerBus.NumePasajeros) ? "0" : obtenerBus.NumePasajeros; buscarTurno.PlacaBus = string.IsNullOrEmpty(obtenerBus.PlacBus) ? "00-0000" : obtenerBus.PlacBus; buscarTurno.CodiChofer = string.IsNullOrEmpty(obtenerBus.CodiChofer) ? "00000" : obtenerBus.CodiChofer; buscarTurno.NombreChofer = string.IsNullOrEmpty(obtenerBus.NombreChofer) ? "NINGUNO" : obtenerBus.NombreChofer; buscarTurno.CodiCopiloto = string.IsNullOrEmpty(obtenerBus.CodiCopiloto) ? "00000" : obtenerBus.CodiCopiloto; buscarTurno.NombreCopiloto = string.IsNullOrEmpty(obtenerBus.NombreCopiloto) ? "NINGUNO" : obtenerBus.NombreCopiloto; } else { // En caso de no encontrar resultado. obtenerBus = ItinerarioRepository.ObtenerBusEstandar(buscarTurno.CodiEmpresa, buscarTurno.CodiSucursal, buscarTurno.CodiRuta, buscarTurno.CodiServicio, string.Empty); if (!string.IsNullOrEmpty(obtenerBus.CodiBus)) { buscarTurno.CodiBus = string.IsNullOrEmpty(obtenerBus.CodiBus) ? "0000" : obtenerBus.CodiBus; buscarTurno.PlanoBus = string.IsNullOrEmpty(obtenerBus.PlanBus) ? "000" : obtenerBus.PlanBus; buscarTurno.CapacidadBus = string.IsNullOrEmpty(obtenerBus.NumePasajeros) ? "0" : obtenerBus.NumePasajeros; buscarTurno.PlacaBus = string.IsNullOrEmpty(obtenerBus.PlacBus) ? "00-0000" : obtenerBus.PlacBus; buscarTurno.CodiChofer = string.IsNullOrEmpty(obtenerBus.CodiChofer) ? "00000" : obtenerBus.CodiChofer; buscarTurno.NombreChofer = string.IsNullOrEmpty(obtenerBus.NombreChofer) ? "NINGUNO" : obtenerBus.NombreChofer; buscarTurno.CodiCopiloto = string.IsNullOrEmpty(obtenerBus.CodiCopiloto) ? "00000" : obtenerBus.CodiCopiloto; buscarTurno.NombreCopiloto = string.IsNullOrEmpty(obtenerBus.NombreCopiloto) ? "NINGUNO" : obtenerBus.NombreCopiloto; } else { // En caso de no encontrar resultado obtenerBus = ItinerarioRepository.ObtenerBusEstandar(buscarTurno.CodiEmpresa, buscarTurno.CodiSucursal, 0, buscarTurno.CodiServicio, string.Empty); buscarTurno.CodiBus = string.IsNullOrEmpty(obtenerBus.CodiBus) ? "0000" : obtenerBus.CodiBus; buscarTurno.PlanoBus = string.IsNullOrEmpty(obtenerBus.PlanBus) ? "000" : obtenerBus.PlanBus; buscarTurno.CapacidadBus = string.IsNullOrEmpty(obtenerBus.NumePasajeros) ? "0" : obtenerBus.NumePasajeros; buscarTurno.PlacaBus = string.IsNullOrEmpty(obtenerBus.PlacBus) ? "00-0000" : obtenerBus.PlacBus; buscarTurno.CodiChofer = string.IsNullOrEmpty(obtenerBus.CodiChofer) ? "00000" : obtenerBus.CodiChofer; buscarTurno.NombreChofer = string.IsNullOrEmpty(obtenerBus.NombreChofer) ? "NINGUNO" : obtenerBus.NombreChofer; buscarTurno.CodiCopiloto = string.IsNullOrEmpty(obtenerBus.CodiCopiloto) ? "00000" : obtenerBus.CodiCopiloto; buscarTurno.NombreCopiloto = string.IsNullOrEmpty(obtenerBus.NombreCopiloto) ? "NINGUNO" : obtenerBus.NombreCopiloto; } } } // Verifica cambios 'ValidarTurnoAdicional' if (buscarTurno.StOpcional == "1" && DateTime.Parse(buscarTurno.FechaProgramacion).Date >= DateTime.Now.Date) { var validarTurnoAdicional = ItinerarioRepository.ValidarTurnoAdicional(buscarTurno.NroViaje, buscarTurno.FechaProgramacion); if (validarTurnoAdicional != 1) { return(new Response <ItinerarioEntity>(false, buscarTurno, Message.MsgErrorValidarTurnoAdicional, true)); } } // Valida 'ProgramacionCerrada' buscarTurno.ProgramacionCerrada = ItinerarioRepository.ValidarProgramacionCerrada(buscarTurno.NroViaje, buscarTurno.FechaProgramacion); if (buscarTurno.ProgramacionCerrada != "0") { var auxMsgErrorValidarProgramacionCerrada = string.Empty; switch (buscarTurno.ProgramacionCerrada) { case "1": auxMsgErrorValidarProgramacionCerrada = Message.MsgErrorValidarProgramacionCerrada_1; break; case "2": auxMsgErrorValidarProgramacionCerrada = Message.MsgErrorValidarProgramacionCerrada_2; break; } ; return(new Response <ItinerarioEntity>(false, buscarTurno, auxMsgErrorValidarProgramacionCerrada, true)); } // Obtiene 'TotalVentas' if (buscarTurno.CodiProgramacion > 0) { buscarTurno.AsientosVendidos = ItinerarioRepository.ObtenerTotalVentas(buscarTurno.CodiProgramacion, buscarTurno.NroViaje, buscarTurno.CodiOrigen, buscarTurno.CodiDestino); } // Seteo 'Color' buscarTurno.Color = ItinerarioLogic.GetColor(buscarTurno.ProgramacionCerrada, buscarTurno.AsientosVendidos, int.Parse(buscarTurno.CapacidadBus), buscarTurno.StOpcional); // Seteo 'SecondColor' buscarTurno.SecondColor = ItinerarioLogic.GetSecondColor(buscarTurno.AsientosVendidos, int.Parse(buscarTurno.CapacidadBus), buscarTurno.StOpcional); // Consulta 'ManifiestoProgramacion' var consultaManifiestoProgramacion = ConsultaManifiestoProgramacion(buscarTurno.CodiProgramacion, request.CodiOrigen.ToString()); if (consultaManifiestoProgramacion.Estado) { buscarTurno.X_Estado = consultaManifiestoProgramacion.Valor; } else { buscarTurno.X_Estado = string.Empty; } // Lista 'PuntosEmbarque' var listarPuntosEmbarque = TurnoRepository.ListarPuntosEmbarque(buscarTurno.CodiOrigen, buscarTurno.CodiDestino, buscarTurno.CodiServicio, buscarTurno.CodiEmpresa, buscarTurno.CodiPuntoVenta, buscarTurno.HoraPartida); if (listarPuntosEmbarque.Count == 0) { var objPuntoEntity = new PuntoEntity { CodiPuntoVenta = buscarTurno.CodiOrigen, Lugar = buscarTurno.NomOrigen, Hora = buscarTurno.HoraPartida }; listarPuntosEmbarque.Add(objPuntoEntity); } buscarTurno.ListaEmbarques = listarPuntosEmbarque; // Lista 'PuntosArribo' buscarTurno.ListaArribos = TurnoRepository.ListarPuntosArribo(buscarTurno.CodiOrigen, buscarTurno.CodiDestino, buscarTurno.CodiServicio, buscarTurno.CodiEmpresa, buscarTurno.CodiPuntoVenta, buscarTurno.HoraPartida); // Lista 'DestinosRuta' buscarTurno.ListaDestinosRuta = TurnoRepository.ListaDestinosRuta(buscarTurno.NroViaje, buscarTurno.CodiSucursal); // Lista 'ResumenProgramacion' buscarTurno.ListaResumenProgramacion = TurnoRepository.ListaResumenProgramacion(buscarTurno.CodiProgramacion, request.CodiSucursalUsuario); // 'ResumenProgramacion' Capacidad del Bus buscarTurno.ListaResumenProgramacion.CAP = buscarTurno.CapacidadBus; // 'ResumenProgramacion' Libres buscarTurno.ListaResumenProgramacion.LBR = Convert.ToString(Convert.ToDecimal(buscarTurno.ListaResumenProgramacion.CAP) - (Convert.ToDecimal(buscarTurno.ListaResumenProgramacion.VTT) + Convert.ToDecimal(buscarTurno.ListaResumenProgramacion.PAS) + Convert.ToDecimal(buscarTurno.ListaResumenProgramacion.RET) + Convert.ToDecimal(buscarTurno.ListaResumenProgramacion.RVA))); // 'ResumenProgramacion' Total buscarTurno.ListaResumenProgramacion.TOT = Convert.ToString(Convert.ToDecimal(buscarTurno.ListaResumenProgramacion.CAP) - Convert.ToDecimal(buscarTurno.ListaResumenProgramacion.LBR) - Convert.ToDecimal(buscarTurno.ListaResumenProgramacion.RVA)); // Elimina 'Reservas' por escala if (buscarTurno.CodiProgramacion > 0) { var auxHora = string.Empty; var objPuntoEmbarque = buscarTurno.ListaEmbarques.Find(x => x.CodiPuntoVenta == request.CodiPvUsuario); if (objPuntoEmbarque != null) { auxHora = objPuntoEmbarque.Hora; } else { auxHora = buscarTurno.HoraPartida; } TurnoRepository.EliminarReservas02(buscarTurno.CodiOrigen.ToString(), buscarTurno.CodiProgramacion, auxHora, buscarTurno.FechaViaje); TurnoRepository.EliminarReservas01(buscarTurno.CodiProgramacion, auxHora); } // Consulta 'BloqueoAsientoCantidad_Max' var consultaBloqueoAsientoCantidad_Max = TurnoRepository.ConsultaBloqueoAsientoCantidad_Max(request.CodiEmpresa); if (consultaBloqueoAsientoCantidad_Max == 0) { buscarTurno.CantidadMaxBloqAsi = DefaultCantMaxBloqAsi; } else { buscarTurno.CantidadMaxBloqAsi = consultaBloqueoAsientoCantidad_Max; } // Consulta tabla 'AsientosBloqueados' var consultarTablaAsientosBloqueados = BloqueoAsientoRepository.ConsultarTablaAsientosBloqueados(buscarTurno.CodiEmpresa, buscarTurno.CodiSucursal, buscarTurno.CodiRuta, buscarTurno.CodiServicio, buscarTurno.HoraPartida); buscarTurno.TablaBloqueoAsientos = new TablaBloqueoAsientosEntity() { AsientosOcupados = string.Empty, AsientosLiberados = string.Empty }; // Consulta tabla 'BloqueoAsientos' if (!string.IsNullOrEmpty(consultarTablaAsientosBloqueados.Asientos)) { var auxCodiProgramacion = buscarTurno.CodiProgramacion > 0 ? buscarTurno.CodiProgramacion : buscarTurno.NroViaje; var auxTipo = buscarTurno.CodiProgramacion > 0 ? "P" : "V"; var consultarTablaBloqueoAsientos = BloqueoAsientoRepository.ConsultarTablaBloqueoAsientos(auxCodiProgramacion, auxTipo, buscarTurno.FechaProgramacion); if (consultarTablaBloqueoAsientos == null) { if (buscarTurno.CodiProgramacion <= 0) { // Inserta tabla 'BloqueoAsientos' var requestTBA = new TablaBloqueoAsientosRequest() { CodiProgramacion = auxCodiProgramacion, CodiOrigen = request.CodiOrigen, CodiDestino = request.CodiDestino, AsientosOcupados = consultarTablaAsientosBloqueados.Asientos, AsientosLiberados = string.Empty, Tipo = auxTipo, Fecha = buscarTurno.FechaProgramacion }; BloqueoAsientoRepository.InsertarTablaBloqueoAsientos(requestTBA); } else { // Volvemos a consultar tabla 'BloqueoAsientos' consultarTablaBloqueoAsientos = BloqueoAsientoRepository.ConsultarTablaBloqueoAsientos(buscarTurno.NroViaje, "V", buscarTurno.FechaProgramacion); if (consultarTablaBloqueoAsientos == null) { // Inserta tabla 'BloqueoAsientos' var requestTBA = new TablaBloqueoAsientosRequest() { CodiProgramacion = auxCodiProgramacion, CodiOrigen = request.CodiOrigen, CodiDestino = request.CodiDestino, AsientosOcupados = consultarTablaAsientosBloqueados.Asientos, AsientosLiberados = string.Empty, Tipo = auxTipo, Fecha = buscarTurno.FechaProgramacion }; BloqueoAsientoRepository.InsertarTablaBloqueoAsientos(requestTBA); } else { // Actualiza tabla 'BloqueoAsientos' BloqueoAsientoRepository.ActualizarTablaBloqueoAsientos(buscarTurno.CodiProgramacion.ToString(), buscarTurno.NroViaje.ToString(), buscarTurno.FechaProgramacion); } } // Como fue 'null', vuelve a consultar tabla 'BloqueoAsientos' consultarTablaBloqueoAsientos = BloqueoAsientoRepository.ConsultarTablaBloqueoAsientos(auxCodiProgramacion, auxTipo, buscarTurno.FechaProgramacion); } // Seteo 'buscarTurno.TablaAsientosBloqueados' buscarTurno.TablaBloqueoAsientos.AsientosOcupados = consultarTablaBloqueoAsientos.AsientosOcupados; buscarTurno.TablaBloqueoAsientos.AsientosLiberados = consultarTablaBloqueoAsientos.AsientosLiberados; buscarTurno.TablaBloqueoAsientos.CodiOrigen = consultarTablaBloqueoAsientos.CodiOrigen; buscarTurno.TablaBloqueoAsientos.CodiDestino = consultarTablaBloqueoAsientos.CodiDestino; } // Actualiza 'TbViajeProgramacionCantidad' if (buscarTurno.CodiProgramacion > 0) { TurnoRepository.ActualizarTbViajeProgramacionCantidad(buscarTurno.CodiProgramacion); } // Lista 'PlanoBus' PlanoRequest requestPlano = new PlanoRequest { PlanoBus = buscarTurno.PlanoBus, CodiProgramacion = buscarTurno.CodiProgramacion, CodiOrigen = buscarTurno.CodiOrigen, CodiDestino = buscarTurno.CodiDestino, CodiBus = buscarTurno.CodiBus, HoraViaje = request.HoraViaje, FechaViaje = request.FechaViaje, CodiServicio = buscarTurno.CodiServicio, CodiEmpresa = buscarTurno.CodiEmpresa, FechaProgramacion = buscarTurno.FechaProgramacion, NroViaje = buscarTurno.NroViaje, CodiSucursal = buscarTurno.CodiSucursal, CodiRuta = buscarTurno.CodiRuta }; var resMuestraPlano = PlanoLogic.MuestraPlano(requestPlano); if (resMuestraPlano.Estado) { if (resMuestraPlano.EsCorrecto) { buscarTurno.ListaPlanoBus = resMuestraPlano.Valor; } else { return(new Response <ItinerarioEntity>(false, buscarTurno, resMuestraPlano.Mensaje, true)); } } else { return(new Response <ItinerarioEntity>(false, buscarTurno, resMuestraPlano.Mensaje, false)); } // Seteo de 'Cantidad' por 'DestinosRuta' foreach (var destinoRuta in buscarTurno.ListaDestinosRuta) { destinoRuta.Cantidad = resMuestraPlano.Valor.Count(x => x.CodiDestino == destinoRuta.CodiSucursal && x.CodiOrigen == request.CodiSucursalUsuario && (x.FlagVenta != "X" && x.FlagVenta != "R" && x.FlagVenta != "O")); } return(new Response <ItinerarioEntity>(true, buscarTurno, Message.MsgCorrectoMuestraTurno, true)); } catch (Exception ex) { Log.Instance(typeof(TurnoLogic)).Error(System.Reflection.MethodBase.GetCurrentMethod().Name, ex); return(new Response <ItinerarioEntity>(false, null, Message.MsgExcMuestraTurno, false)); } }