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);
        }