public ProgramarMantenimientosPRE(IProgramarMantenimientosVIS vista) { try { this.vista = vista; this.controlador = new CitaMantenimientoBR(); dctx = FacadeBR.ObtenerConexion(); } catch (Exception ex) { throw new Exception(nombreClase + ".ProgramarMantenimientosPRE: " + ex.Message); } }
/// <summary> /// Constructor de la clase en uco /// </summary> /// <param name="vistaCita">Crea una instancia para la Interfaz IReprogramarCitaMantenimientoVIS</param> /// <param name="vistaUCDatosCita">Crea una instancia para la Interfaz IucDatosCitaMantenimientoVIS</param> public ReprogramarCitaMantenimientoPRE(IReprogramarCitaMantenimientoVIS vistaCita, IucDatosCitaMantenimientoVIS vistaUCDatosCita) { try { this.vistaCita = vistaCita; this.vistaUCDatosCita = vistaUCDatosCita; this.presentadorDatos = new ucDatosCitaMantenimientoPRE(vistaUCDatosCita); controlador = new CitaMantenimientoBR(); dctx = FacadeBR.ObtenerConexion(); } catch (Exception ex) { throw new Exception(nombreClase + "ReprogramarCitaMantenimientoPRE: " + ex.Message); } }
/// <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); }