Example #1
0
        protected void lvTramites_ItemDataBound(object sender, ListViewItemEventArgs e)
        {
            try
            {
                if (e.Item.ItemType == ListViewItemType.DataItem)
                {
                    TramiteBO tramite = e.Item.DataItem != null ? (TramiteBO)e.Item.DataItem : new TramiteProxyBO();

                    if (tramite.Activo != null && tramite.Activo == true)
                    {
                        ((Image)e.Item.FindControl("imgEstatus")).ImageUrl = this.ResolveUrl("~/Contenido/Imagenes/exito.png");
                    }
                    else
                    {
                        ((Image)e.Item.FindControl("imgEstatus")).ImageUrl = this.ResolveUrl("~/Contenido/Imagenes/error.png");
                    }


                    ConfigurarTramites(e);
                }
            }
            catch (Exception ex)
            {
                this.MostrarMensaje("Inconsistencia al mostrar los trámites", ETipoMensajeIU.ERROR, this.nombreClase + ".lvTramites_ItemDataBound:" + ex.Message);
            }
        }
        /// <summary>
        /// Despliega los datos de la unidad a la interfaz
        /// </summary>
        /// <param name="unidad"></param>
        private void DatosAInterfazUsuario(UnidadBO unidad)
        {
            UnidadBO consultada = ObtenerUnidad(unidad);

            #region Se obtiene la información completa de la unidad y sus trámites
            List <TramiteBO> lstTramites = new List <TramiteBO>();

            if (consultada != null && (consultada.UnidadID != null || consultada.EquipoID != null))
            {
                lstTramites = new TramiteBR().ConsultarCompleto(dataContext, new TramiteProxyBO()
                {
                    Activo = true, Tramitable = consultada
                }, false);
            }
            #endregion
            if (consultada == null)
            {
                consultada = new Equipos.BO.UnidadBO();
            }
            if (consultada.Modelo == null)
            {
                consultada.Modelo = new ModeloBO();
            }
            if (consultada.Modelo.Marca == null)
            {
                consultada.Modelo.Marca = new MarcaBO();
            }
            if (consultada.Sucursal == null)
            {
                consultada.Sucursal = new SucursalBO();
            }
            if (consultada.CaracteristicasUnidad == null)
            {
                consultada.CaracteristicasUnidad = new CaracteristicasUnidadBO();
            }
            if (consultada == null)
            {
                throw new Exception("No se ha proporcionado una unidad a agregar");
            }

            vista.UnidadID                   = consultada.UnidadID;
            vista.EquipoID                   = consultada.EquipoID;
            vista.VIN                        = !string.IsNullOrEmpty(consultada.NumeroSerie) ? consultada.NumeroSerie : string.Empty;
            vista.NumeroEconocimico          = !string.IsNullOrEmpty(consultada.NumeroEconomico) ? consultada.NumeroEconomico : string.Empty;
            vista.SucursalID                 = consultada.Sucursal.Id;
            vista.Sucursal                   = !string.IsNullOrEmpty(consultada.Sucursal.Nombre) ? consultada.Sucursal.Nombre : string.Empty;
            vista.ModeloID                   = consultada.Modelo.Id;
            vista.Modelo                     = consultada.Modelo.Nombre;
            vista.Marca                      = consultada.Modelo.Marca.Nombre;
            this.vista.UnidadCapacidadTanque = consultada.CombustibleConsumidoTotal;
            vista.Anio                       = consultada.Anio;

            //Información de los Trámites de la Unidad y Deducible
            TramiteBO tramite = null;
            #region Placa Estatal
            tramite = lstTramites.Find(p => p.Tipo != null && p.Tipo == ETipoTramite.PLACA_ESTATAL && p.Activo != null && p.Activo == true);
            if (tramite != null && tramite.Resultado != null && tramite.Resultado.Trim().CompareTo("") != 0)
            {
                this.vista.UnidadPlacaEstatal = tramite.Resultado;
            }
            else
            {
                this.vista.UnidadPlacaEstatal = null;
            }
            #endregion

            this.vista.EArea = consultada.Area;

            //Información de los Equipos Aliados de la Unidad
            DataTable dt = new DataTable();
            dt.Columns.Add(new DataColumn("NumeroSerie"));
            dt.Columns.Add(new DataColumn("Anio"));
            dt.Columns.Add(new DataColumn("Dimensiones"));
            dt.Columns.Add(new DataColumn("PBV"));
            dt.Columns.Add(new DataColumn("PBC"));
            dt.Columns.Add(new DataColumn("Modelo"));
            if (consultada.EquiposAliados != null)
            {
                foreach (EquipoAliadoBO ea in consultada.EquiposAliados)
                {
                    DataRow dr = dt.NewRow();
                    dr["NumeroSerie"] = ea.NumeroSerie;
                    dr["Anio"]        = ea.Anio;
                    dr["Dimensiones"] = ea.Dimension;
                    dr["PBV"]         = ea.PBV;
                    dr["PBC"]         = ea.PBC;

                    if (ea.Modelo != null)
                    {
                        dr["Modelo"] = ea.Modelo.Nombre;
                    }

                    dt.Rows.Add(dr);
                }
            }
            dt.AcceptChanges();
            this.vista.EstablecerEquiposAliadoUnidad(dt);
        }
Example #3
0
        /// <summary>
        /// Despliega un objeto de negocio en la vista
        /// </summary>
        /// <param name="obj">Objeto que se desea desplegar en la vista</param>
        public void DatoAInterfazUsuario(object obj)
        {
            ElementoFlotaBO elemento = obj as ElementoFlotaBO;
            UnidadBO        unidad   = elemento.Unidad;

            if (ReferenceEquals(unidad.CaracteristicasUnidad, null))
            {
                unidad.CaracteristicasUnidad = new CaracteristicasUnidadBO();
            }
            if (ReferenceEquals(unidad.Modelo, null))
            {
                unidad.Modelo = new ModeloBO();
            }
            if (ReferenceEquals(unidad.Modelo.Marca, null))
            {
                unidad.Modelo.Marca = new MarcaBO();
            }
            if (ReferenceEquals(elemento.Tramites, null))
            {
                elemento.Tramites = new List <TramiteBO>();
            }

            this.vistaDG.Anio = unidad.Anio.HasValue ? unidad.Anio.Value.ToString().Trim().ToUpper() : string.Empty;

            this.vistaDG.CapacidadCarga = unidad.CaracteristicasUnidad.PBCMaximoRecomendado.HasValue
                ? unidad.CaracteristicasUnidad.PBCMaximoRecomendado.Value.ToString(CultureInfo.InvariantCulture).Trim().ToUpper()
                : string.Empty;
            this.vistaDG.CapacidadTanque = unidad.CaracteristicasUnidad.CapacidadTanque.HasValue
                ? unidad.CaracteristicasUnidad.CapacidadTanque.Value.ToString(CultureInfo.InvariantCulture).Trim().ToUpper()
                : string.Empty;
            this.vistaDG.EquipoID = unidad.EquipoID.HasValue ? unidad.EquipoID.Value.ToString().Trim().ToUpper() : string.Empty;
            this.vistaDG.LiderID  = unidad.IDLider.HasValue ? unidad.IDLider.Value.ToString().Trim().ToUpper() : string.Empty;
            this.vistaDG.Marca    = !string.IsNullOrEmpty(unidad.Modelo.Marca.Nombre) && !string.IsNullOrWhiteSpace(unidad.Modelo.Marca.Nombre)
                ? unidad.Modelo.Marca.Nombre.Trim().ToUpper()
                : string.Empty;
            this.vistaDG.Modelo = !string.IsNullOrEmpty(unidad.Modelo.Nombre) && !string.IsNullOrWhiteSpace(unidad.Modelo.Nombre)
                ? unidad.Modelo.Nombre.Trim().ToUpper()
                : string.Empty;
            this.vistaDG.NumeroEconomico = !string.IsNullOrEmpty(unidad.NumeroEconomico) && !string.IsNullOrWhiteSpace(unidad.NumeroEconomico)
                ? unidad.NumeroEconomico.Trim().ToUpper()
                : string.Empty;
            this.vistaDG.Numeroserie = !string.IsNullOrEmpty(unidad.NumeroSerie) && !string.IsNullOrWhiteSpace(unidad.NumeroSerie)
                ? unidad.NumeroSerie.Trim().ToUpper()
                : string.Empty;
            this.vistaDG.OracleID = !string.IsNullOrEmpty(unidad.ClaveActivoOracle) && !string.IsNullOrWhiteSpace(unidad.ClaveActivoOracle)
                ? unidad.ClaveActivoOracle.Trim().ToUpper()
                : string.Empty;
            TramiteBO placarEstatal = elemento.ObtenerTramitePorTipo(ETipoTramite.PLACA_ESTATAL);

            if (ReferenceEquals(placarEstatal, null))
            {
                this.vistaDG.PlacasEstatales = string.Empty;
            }
            else
            {
                this.vistaDG.PlacasEstatales = !string.IsNullOrEmpty(placarEstatal.Resultado) &&
                                               !string.IsNullOrWhiteSpace(placarEstatal.Resultado)
                                                   ? placarEstatal.Resultado.Trim().ToUpper()
                                                   : string.Empty;
            }
            TramiteBO placaFederal = elemento.ObtenerTramitePorTipo(ETipoTramite.PLACA_FEDERAL);

            if (ReferenceEquals(placaFederal, null))
            {
                this.vistaDG.PlacasFederales = string.Empty;
            }
            else
            {
                this.vistaDG.PlacasFederales = !string.IsNullOrEmpty(placaFederal.Resultado) &&
                                               !string.IsNullOrWhiteSpace(placaFederal.Resultado)
                                                   ? placaFederal.Resultado.Trim().ToUpper()
                                                   : string.Empty;
            }
            this.vistaDG.RendimientoTanque = unidad.CaracteristicasUnidad.RendimientoTanque.HasValue
                ? unidad.CaracteristicasUnidad.RendimientoTanque.Value.ToString().Trim().ToUpper()
                : string.Empty;
            this.vistaDG.Sucursal = !string.IsNullOrEmpty(unidad.Sucursal.Nombre) && !string.IsNullOrWhiteSpace(unidad.Sucursal.Nombre)
                ? unidad.Sucursal.Nombre.Trim().ToUpper()
                : string.Empty;
            this.vistaDG.UnidadID = unidad.UnidadID.HasValue ? unidad.UnidadID.Value.ToString().Trim().ToUpper() : string.Empty;
        }
        private void DatoAInterfazUsuario(object obj)
        {
            if (obj is Equipos.BO.UnidadBO)
            {
                #region Unidad A Interfaz de Usuario
                Equipos.BO.UnidadBO unidad = (Equipos.BO.UnidadBO)obj;

                //Información de la Unidad
                if (unidad == null)
                {
                    unidad = new Equipos.BO.UnidadBO();
                }
                if (unidad.Modelo == null)
                {
                    unidad.Modelo = new ModeloBO();
                }
                if (unidad.Modelo.Marca == null)
                {
                    unidad.Modelo.Marca = new MarcaBO();
                }
                if (unidad.Sucursal == null)
                {
                    unidad.Sucursal = new SucursalBO();
                }
                if (unidad.CaracteristicasUnidad == null)
                {
                    unidad.CaracteristicasUnidad = new CaracteristicasUnidadBO();
                }

                this.vista.UnidadID          = unidad.UnidadID;
                this.vista.EquipoID          = unidad.EquipoID;
                this.vista.CapacidadCarga    = unidad.CaracteristicasUnidad.PBCMaximoRecomendado;
                this.vista.RendimientoTanque = unidad.CaracteristicasUnidad.RendimientoTanque;
                this.vista.CapacidadTanque   = unidad.CaracteristicasUnidad.CapacidadTanque;
                this.vista.Anio = unidad.Anio;

                if (unidad.NumeroEconomico != null && unidad.NumeroEconomico.Trim().CompareTo("") != 0)
                {
                    this.vista.NumeroEconomico = unidad.NumeroEconomico;
                }
                else
                {
                    this.vista.NumeroEconomico = null;
                }

                if (unidad.NumeroSerie != null && unidad.NumeroSerie.Trim().CompareTo("") != 0)
                {
                    this.vista.VIN = unidad.NumeroSerie;
                }
                else
                {
                    this.vista.VIN = null;
                }

                if (unidad.Modelo.Nombre != null && unidad.Modelo.Nombre.Trim().CompareTo("") != 0)
                {
                    this.vista.ModeloNombre = unidad.Modelo.Nombre;
                }
                else
                {
                    this.vista.ModeloNombre = null;
                }

                if (!string.IsNullOrEmpty(unidad.Modelo.Marca.Nombre) && !string.IsNullOrWhiteSpace(unidad.Modelo.Marca.Nombre))
                {
                    this.vista.MarcaNombre = unidad.Modelo.Marca.Nombre.Trim().ToUpper();
                }
                else
                {
                    this.vista.MarcaNombre = null;
                }

                if (unidad.Sucursal.Nombre != null && unidad.Sucursal.Nombre.Trim().CompareTo("") != 0)
                {
                    this.vista.SucursalNombre = unidad.Sucursal.Nombre;
                }
                else
                {
                    this.vista.SucursalNombre = null;
                }
                #endregion
            }
            if (obj is List <TramiteBO> )
            {
                #region Trámites A Interfaz de Usuario
                List <TramiteBO> lstTramites = (List <TramiteBO>)obj;

                TramiteBO tramite = null;
                //Placa Federal
                tramite = lstTramites.Find(p => p.Tipo != null && p.Tipo == ETipoTramite.PLACA_FEDERAL && p.Activo != null && p.Activo == true);
                if (tramite != null && tramite.Resultado != null && tramite.Resultado.Trim().CompareTo("") != 0)
                {
                    this.vista.PlacaFederal = tramite.Resultado;
                }
                else
                {
                    this.vista.PlacaFederal = null;
                }

                //Placa Estatal
                tramite = lstTramites.Find(p => p.Tipo != null && p.Tipo == ETipoTramite.PLACA_ESTATAL && p.Activo != null && p.Activo == true);
                if (tramite != null && tramite.Resultado != null && tramite.Resultado.Trim().CompareTo("") != 0)
                {
                    this.vista.PlacaEstatal = tramite.Resultado;
                }
                else
                {
                    this.vista.PlacaEstatal = null;
                }
                #endregion
            }
            if (obj is LineaContratoManttoBO)
            {
                #region Línea de Contrato a Interfaz de Usuario
                LineaContratoManttoBO linea = (LineaContratoManttoBO)obj;
                if (linea.Cobrable == null)
                {
                    linea.Cobrable = new TarifaManttoBO();
                }
                if (linea.ProductoServicio == null)
                {
                    linea.ProductoServicio = new ProductoServicioBO();
                }

                this.vista.LineaContratoID        = linea.LineaContratoID;
                this.vista.KmEstimadoAnual        = linea.KmEstimadoAnual;
                this.vista.CobrableID             = linea.Cobrable.CobrableID;
                this.vista.CargoFijoMensual       = ((TarifaManttoBO)linea.Cobrable).CargoFijoMensual;
                this.vista.KilometrosLibres       = ((TarifaManttoBO)linea.Cobrable).KilometrosLibres;       //SC051
                this.vista.CostoKmRecorrido       = ((TarifaManttoBO)linea.Cobrable).CargoKmRecorrido;
                this.vista.HorasLibres            = ((TarifaManttoBO)linea.Cobrable).HorasLibres;            //SC051
                this.vista.CostoHorasRefrigeradas = ((TarifaManttoBO)linea.Cobrable).CargoHorasRefrigeradas; //SC051
                this.vista.PeriodoTarifaHRS       = ((TarifaManttoBO)linea.Cobrable).PeriodoTarifaHR.HasValue
                                                  ? (int?)((TarifaManttoBO)linea.Cobrable).PeriodoTarifaHR.Value
                                                  : null;
                this.vista.PeriodoTarifaKM = ((TarifaManttoBO)linea.Cobrable).PeriodoTarifaKM.HasValue
                                                 ? (int?)((TarifaManttoBO)linea.Cobrable).PeriodoTarifaKM.Value
                                                 : null;

                this.vista.ProductoServicioId          = linea.ProductoServicio.Id;
                this.vista.ClaveProductoServicio       = linea.ProductoServicio.NombreCorto;
                this.vista.DescripcionProductoServicio = linea.ProductoServicio.Nombre;
                this.DatoAInterfazUsuario(linea.Equipo);
                this.vista.SubLineasContrato = linea.SubLineasContrato;
                #endregion
            }
        }
        /// <summary>
        /// Presenta el detalle de una Cita de Mantenimiento Seleccionada
        /// </summary>
        /// <param name="id">Identificador de la cita o el mantenimiento programado</param>
        /// <param name="esCita">Determina si el ID es para una Cita de Mantenimiento</param>
        public void PresentarDetalles(CitaMantenimientoBO citaMantenimiento)
        {
            if (citaMantenimiento != null)
            {
                CitaMantenimientoBO cita = citaMantenimiento;

                BPMO.SDNI.Equipos.BO.UnidadBO unidad = (cita.MantenimientoProgramado as MantenimientoProgramadoUnidadBO).Unidad;
                UnidadBR unidadBR = new UnidadBR();

                TramiteProxyBO filter = new TramiteProxyBO()
                {
                    Activo = true, Tramitable = new BPMO.SDNI.Equipos.BO.UnidadBO {
                        UnidadID = unidad.UnidadID
                    }
                };
                TramiteBR        tramiteBR           = new TramiteBR();
                List <TramiteBO> lstTramites         = tramiteBR.ConsultarCompleto(dctx, filter, false);
                TramiteBO        tramitePlacaFederal = lstTramites.Find(p => p.Tipo != null && p.Tipo == ETipoTramite.PLACA_FEDERAL && p.Activo != null && p.Activo == true);
                TramiteBO        tramitePlacaEstatal = lstTramites.Find(p => p.Tipo != null && p.Tipo == ETipoTramite.PLACA_ESTATAL && p.Activo != null && p.Activo == true);
                String           placas = tramitePlacaFederal != null && !String.IsNullOrEmpty(tramitePlacaFederal.Resultado)
                                    ? tramitePlacaFederal.Resultado :
                                          (tramitePlacaEstatal != null && !String.IsNullOrEmpty(tramitePlacaEstatal.Resultado) ? tramitePlacaEstatal.Resultado : null);

                var equiposAliados = unidadBR.ConsultarEquipoAliado(dctx, unidad, true);
                List <MantenimientoProgramadoEquipoAliadoBO> mantenimientosEA = new List <MantenimientoProgramadoEquipoAliadoBO>();
                var mantenimientoProgramadoBR = new ConsultarMantenimientoProgramadoBR();

                foreach (EquipoAliadoBO equipoAliado in equiposAliados)
                {
                    var manttosEA = mantenimientoProgramadoBR.Consultar(dctx, new MantenimientoProgramadoBOF()
                    {
                        EsUnidad = false, EquipoID = equipoAliado.EquipoID, Activo = true, EstatusMantenimientoProgramado = EEstatusMantenimientoProgramado.PROGRAMADO
                    });
                    if (manttosEA != null && manttosEA.Any())
                    {
                        var manttoEA = manttosEA.FirstOrDefault() as MantenimientoProgramadoEquipoAliadoBO;
                        manttoEA.EquipoAliado = equipoAliado;

                        mantenimientosEA.Add(manttoEA);
                    }
                    else
                    {
                        mantenimientosEA.Add(new MantenimientoProgramadoEquipoAliadoBO()
                        {
                            EquipoAliado = equipoAliado
                        });
                    }
                }

                List <ContactoClienteBO> contactosCliente = new List <ContactoClienteBO>();

                if ((cita.MantenimientoProgramado as MantenimientoProgramadoUnidadBO).Unidad.Cliente != null &&
                    (cita.MantenimientoProgramado as MantenimientoProgramadoUnidadBO).Unidad.Cliente.Id != null)
                {
                    var clienteIdealeaseBR = new CuentaClienteIdealeaseBR();
                    var cliente            = clienteIdealeaseBR.Consultar(dctx, new CuentaClienteIdealeaseBO()
                    {
                        Cliente = new ClienteBO()
                        {
                            Id = (cita.MantenimientoProgramado as MantenimientoProgramadoUnidadBO).Unidad.Cliente.Id
                        },
                        UnidadOperativa = new UnidadOperativaBO()
                        {
                            Id = this.vista.UnidadOperativaID
                        }
                    }).FirstOrDefault();

                    if (cliente != null)
                    {
                        bool?activo    = cita.CitaMantenimientoID != null ? null : (bool?)true;
                        var  contactos = new ContactoClienteBR().ConsultarCompleto(dctx, new ContactoClienteBO()
                        {
                            CuentaClienteIdealease = cliente, Activo = activo, Sucursal = cita.Sucursal
                        });
                        if (contactos != null && contactos.Any())
                        {
                            contactos.ForEach(contacto =>
                            {
                                contacto.Detalles.ForEach(detail =>
                                {
                                    detail.ContactoCliente.Sucursal = new SucursalBO()
                                    {
                                        Id = contacto.Sucursal.Id, Nombre = contacto.Sucursal.Nombre
                                    };
                                    detail.ContactoCliente.Direccion = contacto.Direccion;
                                });
                            });

                            contactosCliente.AddRange(contactos);
                        }

                        (cita.MantenimientoProgramado as MantenimientoProgramadoUnidadBO).Unidad.Cliente.NombreCompleto = cliente.Cliente.NombreCompleto;
                    }
                    else
                    {
                        var clienteServicio = FacadeBR.ConsultarCliente(dctx, new ClienteBO()
                        {
                            Id = (cita.MantenimientoProgramado as MantenimientoProgramadoUnidadBO).Unidad.Cliente.Id
                        }).FirstOrDefault();
                        if (clienteServicio != null)
                        {
                            (cita.MantenimientoProgramado as MantenimientoProgramadoUnidadBO).Unidad.Cliente.NombreCompleto = clienteServicio.NombreCompleto;
                        }
                    }
                }

                this.ObjetoAInterfazUsuario(cita, mantenimientosEA, contactosCliente,
                                            tramitePlacaFederal != null && !String.IsNullOrEmpty(tramitePlacaFederal.Resultado) ? tramitePlacaFederal.Resultado : String.Empty,
                                            tramitePlacaEstatal != null && !String.IsNullOrEmpty(tramitePlacaEstatal.Resultado) ? tramitePlacaEstatal.Resultado : String.Empty);
            }
            else
            {
                throw new Exception("No hay citas de mantenimiento para presentar");
            }
        }
        /// <summary>
        /// Presenta el detalle de una Cita de Mantenimiento Seleccionada
        /// </summary>
        /// <param name="id">Identificador de la cita o el mantenimiento programado</param>
        /// <param name="esCita">Determina si el ID es para una Cita de Mantenimiento</param>
        public void PresentarDetalles(int id, bool esCita)
        {
            if (this.vista.CitasMantenimiento != null && this.vista.CitasMantenimiento.Any())
            {
                CitaMantenimientoBO cita = null;
                if (esCita)
                {
                    cita = this.vista.CitasMantenimiento.FirstOrDefault(x => x.CitaMantenimientoID == id);
                }
                else
                {
                    cita = this.vista.CitasMantenimiento.FirstOrDefault(x => x.MantenimientoProgramado.MantenimientoProgramadoID == id);
                }

                BPMO.SDNI.Equipos.BO.UnidadBO unidad = (cita.MantenimientoProgramado as MantenimientoProgramadoUnidadBO).Unidad;
                UnidadBR unidadBR = new UnidadBR();

                TramiteProxyBO filter = new TramiteProxyBO()
                {
                    Activo = true, Tramitable = new BPMO.SDNI.Equipos.BO.UnidadBO {
                        UnidadID = unidad.UnidadID
                    }
                };
                TramiteBR        tramiteBR           = new TramiteBR();
                List <TramiteBO> lstTramites         = tramiteBR.ConsultarCompleto(dctx, filter, false);
                TramiteBO        tramitePlacaFederal = lstTramites.Find(p => p.Tipo != null && p.Tipo == ETipoTramite.PLACA_FEDERAL && p.Activo != null && p.Activo == true);
                TramiteBO        tramitePlacaEstatal = lstTramites.Find(p => p.Tipo != null && p.Tipo == ETipoTramite.PLACA_ESTATAL && p.Activo != null && p.Activo == true);
                String           placas = tramitePlacaFederal != null && !String.IsNullOrEmpty(tramitePlacaFederal.Resultado)
                                    ? tramitePlacaFederal.Resultado :
                                          (tramitePlacaEstatal != null && !String.IsNullOrEmpty(tramitePlacaEstatal.Resultado) ? tramitePlacaEstatal.Resultado : null);

                var equiposAliados = unidadBR.ConsultarEquipoAliado(dctx, unidad, true);
                List <MantenimientoProgramadoEquipoAliadoBO> mantenimientosEA = new List <MantenimientoProgramadoEquipoAliadoBO>();
                var mantenimientoProgramadoBR = new ConsultarMantenimientoProgramadoBR();

                foreach (EquipoAliadoBO equipoAliado in equiposAliados)
                {
                    var manttosEA = mantenimientoProgramadoBR.Consultar(dctx, new MantenimientoProgramadoBOF()
                    {
                        EsUnidad = false, EquipoID = equipoAliado.EquipoID, Activo = true, EstatusMantenimientoProgramado = EEstatusMantenimientoProgramado.PROGRAMADO
                    });
                    if (manttosEA != null && manttosEA.Any())
                    {
                        var manttoEA = manttosEA.FirstOrDefault() as MantenimientoProgramadoEquipoAliadoBO;
                        manttoEA.EquipoAliado = equipoAliado;

                        mantenimientosEA.Add(manttoEA);
                    }
                    else
                    {
                        mantenimientosEA.Add(new MantenimientoProgramadoEquipoAliadoBO()
                        {
                            EquipoAliado = equipoAliado
                        });
                    }
                }

                var      nombreSucursal      = "";
                var      nombreTaller        = "";
                int?     kmUltimoServicio    = null;
                DateTime?fechaUltimoServicio = null;
                string   clienteNombre       = "";
                List <ContactoClienteBO> contactosCliente = new List <ContactoClienteBO>();

                if (cita.CitaMantenimientoID != null)
                {
                    var sucursal = FacadeBR.ConsultarSucursal(dctx, new SucursalBO()
                    {
                        Id = cita.Sucursal.Id
                    }).FirstOrDefault();
                    if (sucursal != null)
                    {
                        cita.Sucursal.Nombre = sucursal.Nombre;
                        nombreSucursal       = sucursal.Nombre;
                    }

                    var taller = FacadeBR.ConsultarTaller(dctx, new TallerBO()
                    {
                        Id = cita.TallerInterno.Id
                    }).FirstOrDefault();
                    if (taller != null)
                    {
                        cita.TallerInterno.Nombre      = taller.Nombre;
                        cita.TallerInterno.NombreCorto = taller.NombreCorto;
                        nombreTaller = taller.Nombre;
                    }
                }

                var unidadManttoBR = new MantenimientoUnidadBR();
                var mantemiento    = unidadManttoBR.Consultar(dctx, new MantenimientoUnidadBO()
                {
                    IngresoUnidad = new IngresoUnidadBO()
                    {
                        Unidad = (cita.MantenimientoProgramado as MantenimientoProgramadoUnidadBO).Unidad
                    },
                    TipoServicio = new TipoServicioBO()
                    {
                        Id = this.TipoMantenimiento
                    },
                    Activo = true
                }).Where(x => x.FechaSalida != null).OrderBy(x => x.FechaSalida).ToList().LastOrDefault();
                if (mantemiento != null)
                {
                    kmUltimoServicio    = mantemiento.KilometrajeEntrada;
                    fechaUltimoServicio = mantemiento.FechaSalida.Value;
                }

                if ((cita.MantenimientoProgramado as MantenimientoProgramadoUnidadBO).Unidad.Cliente != null &&
                    (cita.MantenimientoProgramado as MantenimientoProgramadoUnidadBO).Unidad.Cliente.Id != null)
                {
                    var clienteIdealeaseBR = new CuentaClienteIdealeaseBR();
                    var cliente            = clienteIdealeaseBR.Consultar(dctx, new CuentaClienteIdealeaseBO()
                    {
                        Cliente = new ClienteBO()
                        {
                            Id = (cita.MantenimientoProgramado as MantenimientoProgramadoUnidadBO).Unidad.Cliente.Id
                        },
                        UnidadOperativa = new UnidadOperativaBO()
                        {
                            Id = this.vista.UnidadOperativaID
                        }
                    }).FirstOrDefault();

                    if (cliente != null)
                    {
                        bool?activo    = cita.CitaMantenimientoID != null ? null : (bool?)true;
                        var  contactos = new ContactoClienteBR().ConsultarCompleto(dctx, new ContactoClienteBO()
                        {
                            CuentaClienteIdealease = cliente, Activo = activo, Sucursal = cita.Sucursal
                        });
                        if (contactos != null && contactos.Any())
                        {
                            contactos.ForEach(contacto => {
                                contacto.Detalles.ForEach(detail => {
                                    detail.ContactoCliente.Sucursal = new SucursalBO()
                                    {
                                        Id = contacto.Sucursal.Id, Nombre = contacto.Sucursal.Nombre
                                    };
                                    detail.ContactoCliente.Direccion = contacto.Direccion;
                                });
                            });

                            contactosCliente.AddRange(contactos);
                        }

                        clienteNombre = cliente.Cliente.NombreCompleto;
                    }
                    else
                    {
                        var clienteServicio = FacadeBR.ConsultarCliente(dctx, new ClienteBO()
                        {
                            Id = (cita.MantenimientoProgramado as MantenimientoProgramadoUnidadBO).Unidad.Cliente.Id
                        }).FirstOrDefault();
                        if (clienteServicio != null)
                        {
                            clienteNombre = clienteServicio.NombreCompleto;
                        }
                    }
                }

                var fechaInicial = new DateTime();
                if (mantemiento.FechaUltimoServicio.HasValue)
                {
                    fechaInicial = mantemiento.FechaArranque.Value > mantemiento.FechaUltimoServicio.Value &&
                                   mantemiento.FechaArranque.Value < mantemiento.FechaProximoServicio.Value ? mantemiento.FechaArranque.Value : DateTime.Today;
                }
                else
                {
                    fechaInicial = DateTime.Today;
                }

                var diasRetraso = Convert.ToInt32(Math.Round((fechaInicial - new DateTime(cita.MantenimientoProgramado.Fecha.Value.Year, cita.MantenimientoProgramado.Fecha.Value.Month, cita.MantenimientoProgramado.Fecha.Value.Day)).TotalDays, 2));
                this.vista.ClienteNombre               = clienteNombre;
                this.vista.Area                        = (cita.MantenimientoProgramado as MantenimientoProgramadoUnidadBO).Unidad.Area.ToString();
                this.vista.VINUnidad                   = (cita.MantenimientoProgramado as MantenimientoProgramadoUnidadBO).Unidad.NumeroSerie;
                this.vista.NumeroEconomico             = (cita.MantenimientoProgramado as MantenimientoProgramadoUnidadBO).Unidad.NumeroEconomico;
                this.vista.KmUltimoServicio            = kmUltimoServicio;
                this.vista.FechaUltimoServicio         = fechaUltimoServicio;
                this.vista.PlacaEstatal                = tramitePlacaEstatal != null && !String.IsNullOrEmpty(tramitePlacaEstatal.Resultado) ? tramitePlacaEstatal.Resultado : "";
                this.vista.PlacaFederal                = tramitePlacaFederal != null && !String.IsNullOrEmpty(tramitePlacaFederal.Resultado) ? tramitePlacaFederal.Resultado : "";
                this.vista.FechaSugerida               = cita.MantenimientoProgramado.Fecha;
                this.vista.TipoMantenimiento           = (cita.MantenimientoProgramado as MantenimientoProgramadoUnidadBO).TipoMantenimientoNombre;
                this.vista.NombreSucursalDetalle       = nombreSucursal;
                this.vista.NombreTallerDetalle         = nombreTaller;
                this.vista.ListadoManttoEquiposAliados = mantenimientosEA;
                this.vista.EstatusMantenimiento        = cita.CitaMantenimientoID != null?cita.EstatusCita.ToString() : EEstatusCita.PRECALENDARIZADA.ToString();

                this.vista.DiasRetraso             = diasRetraso <= 0 ? int.Parse(diasRetraso.ToString("G")) : int.Parse(diasRetraso.ToString());
                this.vista.ListadoContactosCliente = contactosCliente;

                this.vista.EstablecerEquiposAliados();
                this.vista.EstablecerContactosCliente();
            }
            else
            {
                throw new Exception("No hay citas de mantenimiento para presentar");
            }
        }