private TiendaCalibracion GetTiendaRandom(ref List <TiendaCalibracion> tiendasCalibracion) { Random random = new Random(); int indiceTiendaElegida = random.Next(0, tiendasCalibracion.Count()); TiendaCalibracion tiendaElegida = tiendasCalibracion.ElementAt(indiceTiendaElegida); tiendasCalibracion.RemoveAt(indiceTiendaElegida); return(tiendaElegida); }
private int generarMuestrasPorMes(DateTime fechaM, int[] cantidadMuestrasPorZona, int anio, int subzonaId, Programacion prog, int agregado) { var diasEnMes = DateTime.DaysInMonth(anio, fechaM.Month); var faltante = 0; string cadenaDiasMes = ""; if (diasEnMes < 10) { cadenaDiasMes = "0" + diasEnMes.ToString(); } else { cadenaDiasMes = diasEnMes.ToString(); } string data = "idSubZona=" + subzonaId.ToString() + "&fechaInicio=" + fechaM.ToString("MM") + "/01/" + fechaM.ToString("yyyy") + "&fechaFin=" + fechaM.ToString("MM") + "/" + cadenaDiasMes + "/" + fechaM.ToString("yyyy"); var responseTiendaCalibracion = Metodos.PeticionICA("calibracionDeEquipos", data); var tiendasCalibracion = Metodos.convertirStringACalibracionTiendas(responseTiendaCalibracion); var responseTiendas = Metodos.PeticionICA("tienda", null); var tiendasList = Metodos.convertirStringATiendas(responseTiendas); var tiendasAgregadas = 0; var nombreZona = Helpers.ValorDescripcion("ZONA", subzonaId.ToString()); for (int j = 0; j < cantidadMuestrasPorZona[subzonaId] + agregado && tiendasCalibracion.Count() > 0; j++) { bool tiendaValida = false; TiendaCalibracion tiendaElegida = null; while (tiendaValida == false && tiendasCalibracion.Count() > 0) { tiendaElegida = GetTiendaRandom(ref tiendasCalibracion); var existe = db.Evaluacion.Where(e => e.PROId == prog.PROId && e.ClaveTienda == tiendaElegida.ClaveTienda.ToString()).Count(); if (existe > 0) { tiendaValida = false; } else { tiendaValida = true; } } if (tiendaValida == true) { var tienda = tiendasList.Find(t => t.ClaveTienda == tiendaElegida.ClaveTienda); GuardarEvaluacion(tienda, prog); tiendasAgregadas++; } } faltante = (cantidadMuestrasPorZona[subzonaId] + agregado) - tiendasAgregadas; return(faltante); }