Esempio n. 1
0
        /// <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
        }