/// <summary>
        /// Obtiene el tiempo que tomara realizar el trabajo de la unidad y de sus equipos aliados
        /// </summary>
        /// <param name="mantenimientoUnidad">Mantenimiento programado de unidad</param>
        /// <param name="manttoEquiposAliados">Manteniminetos programados para los equipos aliados</param>
        /// <returns>Tiempo total de mantenimiento</returns>
        private decimal?ObtenerTiempoMantenimiento(MantenimientoProgramadoUnidadBO mantenimientoUnidad, List <MantenimientoProgramadoEquipoAliadoBO> manttoEquiposAliados)
        {
            decimal?tiempo = 0;
            var     configuracionPosicionTrabajo = new ConfiguracionPosicionTrabajoBO()
            {
                ConfiguracionModeloMotorizacion = new ConfiguracionModeloMotorizacionBO()
                {
                    Modelo = mantenimientoUnidad.Unidad.Modelo
                },
                DescriptorTrabajo = new DescriptorTrabajoBO
                {
                    Nombre = mantenimientoUnidad.TipoMantenimiento.ToString()
                }
            };

            var configPosicion = FacadeBR.ConsultarConfiguracionPosicionTrabajoDetalle(dctx, configuracionPosicionTrabajo);

            configPosicion.ForEach(x => { tiempo = tiempo + x.TiempoSRT; });

            manttoEquiposAliados.Where(x => x.EquipoAliado.Modelo != null && x.EquipoAliado.Modelo.Id != null).ToList().ForEach(mantto =>
            {
                configuracionPosicionTrabajo.ConfiguracionModeloMotorizacion.Modelo = mantto.EquipoAliado.Modelo;
                configuracionPosicionTrabajo.DescriptorTrabajo.Nombre = mantto.TipoMantenimiento.ToString();

                var configEAliado = FacadeBR.ConsultarConfiguracionPosicionTrabajoDetalle(dctx, configuracionPosicionTrabajo);
                configEAliado.ForEach(x => { tiempo = tiempo + x.TiempoSRT; });
            });


            return(Math.Round(tiempo.Value, 2));
        }
        public void consultarActividadesPM()
        {
            if (this.ucvista.Modelo != null && this.ucvista.ModeloID != null)
            {
                var configuracionPosicionTrabajo = new ConfiguracionPosicionTrabajoBO()
                {
                    ConfiguracionModeloMotorizacion = new ConfiguracionModeloMotorizacionBO()
                    {
                        Modelo = new ModeloBO {
                            Id = this.ucvista.ModeloID
                        }
                    },
                    DescriptorTrabajo = new DescriptorTrabajoBO
                    {
                        Nombre = this.vista.TipoMantenimiento.ToString().Trim()
                    }
                };

                var configPosicion = FacadeBR.ConsultarConfiguracionPosicionTrabajoDetalle(dataContext, configuracionPosicionTrabajo);

                if (configPosicion != null && configPosicion.Count > 0)
                {
                    var posicion             = FacadeBR.ConsultarConfiguracionPosicionTrabajoDetallePaquete(dataContext, configPosicion.FirstOrDefault(), null);
                    var detalleConfiguracion = new List <DetalleConfiguracionAuditoriaMantenimientoBO>();
                    foreach (var item in posicion.ConfiguracionPosicionTrabajoPaquete)
                    {
                        var detalle = new DetalleConfiguracionAuditoriaMantenimientoBO()
                        {
                            ConfiguracionPosicionTrabajo = item.ConfiguracionPosicionTrabajo,
                            Obligatorio = false
                        };

                        detalleConfiguracion.Add(detalle);
                    }

                    this.vista.ActividadesAuditoria = detalleConfiguracion;
                    this.vista.GridActividadesAuditoria.PageIndex  = 0;
                    this.vista.GridActividadesAuditoria.DataSource = this.vista.ActividadesAuditoria;
                    this.vista.GridActividadesAuditoria.DataBind();
                    if (ucvista.TallerID != null)
                    {
                        this.ucvista.HabilitarSucursal(false);
                        this.ucvista.HabilitarTaller(false);
                    }
                    if (ucvista.ModeloID != null)
                    {
                        this.ucvista.HabilitarModelo(false);
                    }
                }
                else
                {
                    this.vista.MostrarMensaje("ESTE MODELO NO TIENE CONFIGURADO EN E-SERVICE UN PAQUETE DE ACTIVIDADES " + this.vista.TipoMantenimiento.ToString(), ETipoMensajeIU.INFORMACION);
                }
            }
            else
            {
                this.vista.MostrarMensaje("DEBE SELECCIONAR UN MODELO", ETipoMensajeIU.ADVERTENCIA);
            }
        }
Example #3
0
        private List <ConfiguracionAuditoriaMantenimientoBO> CompletarDatos(List <ConfiguracionAuditoriaMantenimientoBO> configuraciones)
        {
            foreach (var item in configuraciones)
            {
                var configuracionPosicionTrabajo = new ConfiguracionPosicionTrabajoBO()
                {
                    ConfiguracionModeloMotorizacion = new ConfiguracionModeloMotorizacionBO()
                    {
                        Modelo = item.Modelo
                    },
                    DescriptorTrabajo = new DescriptorTrabajoBO
                    {
                        Nombre = item.TipoMantenimiento.ToString()
                    }
                };

                var configPosicion = FacadeBR.ConsultarConfiguracionPosicionTrabajoDetalle(dataContext, configuracionPosicionTrabajo);

                if (configPosicion != null && configPosicion.Count > 0)
                {
                    var posicion = FacadeBR.ConsultarConfiguracionPosicionTrabajoDetallePaquete(dataContext, configPosicion.FirstOrDefault(), null);
                    foreach (var itemPaquete in posicion.ConfiguracionPosicionTrabajoPaquete)
                    {
                        var pmEncontrado = item.DetalleConfiguracion.Find(x => x.ConfiguracionPosicionTrabajo.Id == itemPaquete.ConfiguracionPosicionTrabajo.Id);
                        if (pmEncontrado != null)
                        {
                            pmEncontrado.ConfiguracionPosicionTrabajo = itemPaquete.ConfiguracionPosicionTrabajo;
                        }
                        else if (pmEncontrado == null)
                        {
                            var ActividadNueva = new DetalleConfiguracionAuditoriaMantenimientoBO
                            {
                                ConfiguracionPosicionTrabajo = itemPaquete.ConfiguracionPosicionTrabajo,
                                Obligatorio = false
                            };

                            item.DetalleConfiguracion.Add(ActividadNueva);
                        }
                    }
                    List <DetalleConfiguracionAuditoriaMantenimientoBO> listBorrar = new List <DetalleConfiguracionAuditoriaMantenimientoBO>();
                    foreach (var itemActividades in item.DetalleConfiguracion)
                    {
                        if (itemActividades.ConfiguracionPosicionTrabajo.DescriptorTrabajo == null)
                        {
                            var boBorrar = item.DetalleConfiguracion.Find(x => x.Equals(itemActividades));
                            listBorrar.Add(boBorrar);
                        }
                    }

                    foreach (var itemBorrar in listBorrar)
                    {
                        item.DetalleConfiguracion.Remove(itemBorrar);
                    }
                }
            }

            return(configuraciones);
        }
        /// <summary>
        /// Complementa los datos de las actividades
        /// </summary>
        /// <param name="configuraciones"></param>
        /// <returns></returns>
        private List <ConfiguracionAuditoriaMantenimientoBO> CompletarDatos(List <ConfiguracionAuditoriaMantenimientoBO> configuraciones)
        {
            foreach (var item in configuraciones)
            {
                var configuracionPosicionTrabajo = new ConfiguracionPosicionTrabajoBO()
                {
                    ConfiguracionModeloMotorizacion = new ConfiguracionModeloMotorizacionBO()
                    {
                        Modelo = item.Modelo
                    },
                    DescriptorTrabajo = new DescriptorTrabajoBO
                    {
                        Nombre = item.TipoMantenimiento.ToString()
                    }
                };

                var configPosicion = FacadeBR.ConsultarConfiguracionPosicionTrabajoDetalle(dataContext, configuracionPosicionTrabajo);

                if (configPosicion != null && configPosicion.Count > 0)
                {
                    var posicion = FacadeBR.ConsultarConfiguracionPosicionTrabajoDetallePaquete(dataContext, configPosicion.FirstOrDefault(), null);
                    foreach (var itemPaquete in posicion.ConfiguracionPosicionTrabajoPaquete)
                    {
                        var pmEncontrado = item.DetalleConfiguracion.Find(x => x.ConfiguracionPosicionTrabajo.Id == itemPaquete.ConfiguracionPosicionTrabajo.Id);
                        if (pmEncontrado != null)
                        {
                            pmEncontrado.ConfiguracionPosicionTrabajo = itemPaquete.ConfiguracionPosicionTrabajo;
                        }
                        else if (pmEncontrado == null)
                        {
                            var ActividadNueva = new DetalleConfiguracionAuditoriaMantenimientoBO
                            {
                                ConfiguracionPosicionTrabajo = itemPaquete.ConfiguracionPosicionTrabajo
                            };

                            item.DetalleConfiguracion.Add(ActividadNueva);
                        }
                    }
                    foreach (var itemActividades in item.DetalleConfiguracion)
                    {
                        if (itemActividades.ConfiguracionPosicionTrabajo.DescriptorTrabajo == null)
                        {
                            itemActividades.ConfiguracionPosicionTrabajo.DescriptorTrabajo = new DescriptorTrabajoBO {
                                Nombre = "ACTIVIDAD ELIMINADA EN SERVICIO"
                            }
                        }
                        ;
                    }
                }
                else
                {
                    configuraciones = null;
                }
            }

            return(configuraciones);
        }
        /// <summary>
        /// Determina de acuerdo a la capacidad del taller si el limite ya se ha superado
        /// </summary>
        /// <param name="fecha"></param>
        /// <returns></returns>
        public bool LimiteTallerSuperado(DateTime?fecha)
        {
            var tipoMantto   = (ETipoMantenimiento)Enum.Parse(typeof(ETipoMantenimiento), this.vista.TipoMantenimiento);
            var fechaInicial = new DateTime(fecha.Value.Year, fecha.Value.Month, fecha.Value.Day);
            var fechaFinal   = new DateTime(fecha.Value.Year, fecha.Value.Month, fecha.Value.Day, 23, 59, 59);

            do
            {
                if (fechaInicial.DayOfWeek != DayOfWeek.Monday)
                {
                    fechaInicial = fechaInicial.AddDays(-1);
                }
            } while (fechaInicial.DayOfWeek != DayOfWeek.Monday);
            do
            {
                if (fechaFinal.DayOfWeek != DayOfWeek.Sunday)
                {
                    fechaFinal = fechaFinal.AddDays(1);
                }
            } while (fechaFinal.DayOfWeek != DayOfWeek.Sunday);

            decimal tiempoPorDia = FacadeBR.ConsultarTiempoDisponibleTaller(dctx, this.vista.TallerID, this.vista.SucursalID, this.vista.UnidadOperativaID, fechaInicial, fechaFinal, fecha.Value.DayOfWeek == DayOfWeek.Saturday);

            CitaMantenimientoBR citaMantenimientoBR = new CitaMantenimientoBR();
            var citas = new List <CitaMantenimientoBO>();

            citas.AddRange(citaMantenimientoBR.ConsultarPorRangoFechas(dctx, new CitaMantenimientoBOF()
            {
                FechaInicio = new DateTime(fecha.Value.Year, fecha.Value.Month, fecha.Value.Day),
                FechaFin    = new DateTime(fecha.Value.Year, fecha.Value.Month, fecha.Value.Day, 23, 59, 59),
                Estatus     = EEstatusCita.CALENDARIZADA
            }));
            citas.AddRange(citaMantenimientoBR.ConsultarPorRangoFechas(dctx, new CitaMantenimientoBOF()
            {
                FechaInicio = new DateTime(fecha.Value.Year, fecha.Value.Month, fecha.Value.Day),
                FechaFin    = new DateTime(fecha.Value.Year, fecha.Value.Month, fecha.Value.Day, 23, 59, 59),
                Estatus     = EEstatusCita.RECALENDARIZADA
            }));
            citas.AddRange(citaMantenimientoBR.ConsultarPorRangoFechas(dctx, new CitaMantenimientoBOF()
            {
                FechaInicio = new DateTime(fecha.Value.Year, fecha.Value.Month, fecha.Value.Day),
                FechaFin    = new DateTime(fecha.Value.Year, fecha.Value.Month, fecha.Value.Day, 23, 59, 59),
                Estatus     = EEstatusCita.INICIADA
            }));

            UnidadBR unidadBR = new UnidadBR();
            ConsultarMantenimientoProgramadoBR mantenimientoProgramadoBR = new ConsultarMantenimientoProgramadoBR();

            decimal tiempoConsumido = 0;

            foreach (var cita in citas.Where(x => (x.MantenimientoProgramado as MantenimientoProgramadoUnidadBO).Unidad.UnidadID != this.vista.UnidadID).ToList())
            {
                var manttoProgramado = mantenimientoProgramadoBR.Consultar(dctx, new MantenimientoProgramadoUnidadBO()
                {
                    MantenimientoProgramadoID = cita.MantenimientoProgramado.MantenimientoProgramadoID
                }).FirstOrDefault();
                (manttoProgramado as MantenimientoProgramadoUnidadBO).Unidad = unidadBR.Consultar(dctx, new Equipos.BO.UnidadBO()
                {
                    EquipoID = (manttoProgramado as MantenimientoProgramadoUnidadBO).EquipoID
                }).FirstOrDefault();
                var equiposAliados = unidadBR.ConsultarEquipoAliado(dctx, (manttoProgramado as MantenimientoProgramadoUnidadBO).Unidad, false);
                List <MantenimientoProgramadoEquipoAliadoBO> manttoEquiposAliados = new List <MantenimientoProgramadoEquipoAliadoBO>();
                foreach (var equipoAliado in equiposAliados)
                {
                    var manttoEA = mantenimientoProgramadoBR.Consultar(dctx, new MantenimientoProgramadoEquipoAliadoBO()
                    {
                        EquipoID = equipoAliado.EquipoID, Activo = true, EstatusMantenimientoProgramado = EEstatusMantenimientoProgramado.PROGRAMADO
                    }).FirstOrDefault();
                    if (manttoEA != null)
                    {
                        manttoEquiposAliados.Add(manttoEA as MantenimientoProgramadoEquipoAliadoBO);
                    }
                }

                var tiempoMantto = this.ObtenerTiempoMantenimiento(manttoProgramado as MantenimientoProgramadoUnidadBO, manttoEquiposAliados);

                tiempoConsumido = tiempoConsumido + tiempoMantto != null ? tiempoMantto.Value : 0;
            }

            BPMO.SDNI.Equipos.BO.UnidadBO unidad;

            if (citas.Any(x => (x.MantenimientoProgramado as MantenimientoProgramadoUnidadBO).Unidad.UnidadID == this.vista.UnidadID))
            {
                var cita = citas.FirstOrDefault(x => (x.MantenimientoProgramado as MantenimientoProgramadoUnidadBO).Unidad.UnidadID == this.vista.UnidadID);
                unidad = (cita.MantenimientoProgramado as MantenimientoProgramadoUnidadBO).Unidad;
            }
            else
            {
                unidad = unidadBR.Consultar(dctx, new BPMO.SDNI.Equipos.BO.UnidadBO()
                {
                    UnidadID = this.vista.UnidadID
                }).FirstOrDefault();
            }

            decimal?tiempo = 0;
            var     configuracionPosicionTrabajo = new ConfiguracionPosicionTrabajoBO()
            {
                ConfiguracionModeloMotorizacion = new ConfiguracionModeloMotorizacionBO()
                {
                    Modelo = unidad.Modelo
                },
                DescriptorTrabajo = new DescriptorTrabajoBO
                {
                    Nombre = tipoMantto.ToString()
                }
            };

            var configPosicion = FacadeBR.ConsultarConfiguracionPosicionTrabajoDetalle(dctx, configuracionPosicionTrabajo);

            configPosicion.ForEach(x => { tiempo = tiempo + x.TiempoSRT; });

            return(tiempo + tiempoConsumido > tiempoPorDia);
        }