/// <summary> /// Busca una cotizacion, identificando el criterio de busqueda /// </summary> /// <param name="criterioDeBusqueda"></param> /// <returns>Lista de cotizaciones que cumplan con el criterio de busqueda</returns> public IList <Cotizacion> BuscarCotizacion(String criterioDeBusqueda) { //metodo local para buscar por coincidencias de texto dentro de las cotizaciones IList <Cotizacion> BuscarPorTexto(String _criterioDeBusqueda) { IList <Cotizacion> cotizaciones = _repositoryCotizacion.GetAll(); HashSet <Cotizacion> cotizacionesElegidas = new HashSet <Cotizacion>(); //no queremos repeticiones, en caso de haberlas foreach (Cotizacion cotizacion in cotizaciones) { foreach (Item items in cotizacion.Items) { if (items.descripcion.Contains(_criterioDeBusqueda)) { cotizacionesElegidas.Add(cotizacion); } } } return(cotizacionesElegidas.ToList()); } try { TipoBusqueda(criterioDeBusqueda); //asegurandonos que el criterio de busqueda no sea null o este vacio } catch (ArgumentException e) { Console.WriteLine("El criterio de busqueda no puede estar vacio"); throw e; } String tipoBusqueda = TipoBusqueda(criterioDeBusqueda); switch (tipoBusqueda) { case "Rut": IList <Cotizacion> cot = _repositoryCotizacion.GetAll(c => c.RutCliente.Equals(criterioDeBusqueda) || c.RutUsuarioCreador.Equals(criterioDeBusqueda)); return(cot); case "Texto": return(BuscarPorTexto(criterioDeBusqueda)); case "Fecha": return(_repositoryCotizacion.GetAll( c => c.FechaCreacion.Equals(DateTime.ParseExact(criterioDeBusqueda, "dd/mm/yyyy", null)))); } return(null); //nunca se deberia llegar aqui /s }