/// <summary>
        /// Crea y obtiene el Mantenimiento Unidad Idealease completo.
        /// </summary>
        /// <param name="mantenimiento">El filtro para obtener el Mantenimiento Unidad Idealease.</param>
        /// <returns>Objeto de tipo MantenimientoUnidadBO</returns>
        private MantenimientoUnidadBO getMantenimientoCompleto(MantenimientoUnidadBO mantenimiento)
        {
            MantenimientoUnidadBO mantenimientoCompleto = ctrlMantenimiento.Consultar(dataContext, new MantenimientoUnidadBO()
            {
                MantenimientoUnidadId = mantenimiento.MantenimientoUnidadId
            }).FirstOrDefault();

            mantenimientoCompleto.IngresoUnidad.Unidad = new BPMO.SDNI.Equipos.BR.UnidadBR().ConsultarCompleto(dataContext, mantenimientoCompleto.IngresoUnidad.Unidad).FirstOrDefault();
            if (mantenimientoCompleto.FechaSalida == null)
            {
                mantenimiento.FechaSalida = DateTime.Now;
            }
            else
            {
                mantenimiento.FechaSalida = mantenimientoCompleto.FechaSalida;
            }
            mantenimientoCompleto.MantenimientoEquiposAliados = ctrlMantenimiento.ConsultarMantenimientosEquiposAliados(dataContext, new MantenimientoUnidadBO()
            {
                MantenimientoUnidadId = mantenimiento.MantenimientoUnidadId
            }).MantenimientoEquiposAliados;
            foreach (MantenimientoEquipoAliadoBO equipoAliado in mantenimientoCompleto.MantenimientoEquiposAliados)
            {
                if (equipoAliado.TipoServicio.Nombre == null)
                {
                    equipoAliado.TipoServicio.Nombre = "N/A";
                }
            }
            return(mantenimientoCompleto);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Realiza la búsqueda del Mantenimiento Unidad Idealease por la Orden de Servicio E-Lider. Obtiene los Mantenimientos Equipos Aliados Idealease
        /// del Mantenimiento Unidad Idealease.
        /// </summary>
        /// <param name="ordenServicioElider">La Orden de Servicio E-Lider</param>
        /// <returns>Retorna True si encontró resultados, en caso contrario retorna False.</returns>
        private bool BuscarUnidadPorOrdenElider(OrdenServicioBO ordenServicioElider)
        {
            Boolean encontrado = false;

            MantenimientoUnidadBO filtroMantenimientoUnidadIdealease = new MantenimientoUnidadBO()
            {
                OrdenServicio = ordenServicioElider
            };

            MantenimientoUnidadBO mantenimientoUnidadIdealease = ctrlMantenimientoUnidadIdealease.Consultar(dataContext, filtroMantenimientoUnidadIdealease).FirstOrDefault();

            if (mantenimientoUnidadIdealease != null && mantenimientoUnidadIdealease.MantenimientoUnidadId != null)
            {
                BPMO.SDNI.Equipos.BO.UnidadBO filtroUnidadIdealease = new BPMO.SDNI.Equipos.BO.UnidadBO()
                {
                    UnidadID = mantenimientoUnidadIdealease.IngresoUnidad.Unidad.UnidadID
                };

                BPMO.SDNI.Equipos.BR.UnidadBR ctrlUnidadIdealease = new BPMO.SDNI.Equipos.BR.UnidadBR();
                BPMO.SDNI.Equipos.BO.UnidadBO unidadIdealease     = ctrlUnidadIdealease.Consultar(dataContext, filtroUnidadIdealease).FirstOrDefault();

                if (unidadIdealease != null && unidadIdealease.UnidadID != null)
                {
                    if (unidadIdealease.Modelo == null || unidadIdealease.Modelo.Id == null)
                    {
                        BPMO.SDNI.Equipos.BO.UnidadBO unidadCompleta = new BPMO.SDNI.Equipos.BO.UnidadBO(unidadIdealease.ActaNacimiento);
                        unidadIdealease.Modelo = unidadCompleta.Modelo;
                    }

                    mantenimientoUnidadIdealease.IngresoUnidad.Unidad = unidadIdealease;
                    mantenimientoUnidadIdealease.OrdenServicio        = ordenServicioElider;
                    vista.MantenimientosUnidad = new List <MantenimientoUnidadBO>();
                    vista.MantenimientosUnidad.Add(mantenimientoUnidadIdealease);

                    encontrado = true;
                }
            }

            return(encontrado);
        }
 /// <summary>
 /// Obtiene el maantenimiento que se va a auditar
 /// </summary>
 public void Consultar()
 {
     try
     {
         AuditoriaMantenimientoBO bo = new AuditoriaMantenimientoBO {
             OrdenServicio = this.vista.MantenimientoRecibido
         };
         MantenimientoUnidadBO mantenimientoUnidad = new MantenimientoUnidadBO()
         {
             OrdenServicio = bo.OrdenServicio
         };
         MantenimientoEquipoAliadoBO mantenimientoAliado = new MantenimientoEquipoAliadoBO()
         {
             OrdenServicio = bo.OrdenServicio
         };
         List <MantenimientoUnidadBO> listMantenimientosUnidad = ctrMantenimientoUnidad.Consultar(dataContext, mantenimientoUnidad);
         if (listMantenimientosUnidad == null || listMantenimientosUnidad.Count == 0)
         {
             List <MantenimientoEquipoAliadoBO> listMantenimientoAliado = ctrMantenimientoEquipoAliado.Consultar(dataContext, mantenimientoAliado);
             if (listMantenimientoAliado != null && listMantenimientoAliado.Count > 0)
             {
                 bo.TipoMantenimiento = (ETipoMantenimiento)listMantenimientoAliado.FirstOrDefault().TipoMantenimiento;
             }
             else
             {
                 this.vista.MostrarMensaje("La búsqueda no produjo resultados", ETipoMensajeIU.INFORMACION,
                                           "No se encontraron coincidencias con los criterios ingresados. Verifique sus datos");
             }
         }
         else
         {
             bo.TipoMantenimiento = (ETipoMantenimiento)listMantenimientosUnidad.FirstOrDefault().TipoMantenimiento;
         }
         bo = this.ComplementarDatos(bo);
         this.vista.Resultado = bo;
         this.DesplegarResultado(bo);
     }
     catch (Exception ex)
     {
         throw new Exception(this.nombreClase + ".Consultar:" + ex.Message);
     }
 }
        /// <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");
            }
        }