Пример #1
0
 public async Task <List <TareasModel> > Consultar([FromQuery] CriteriosTareas input)
 {
     return(await _tareasNegocio.Consultar(input));
 }
Пример #2
0
        public async Task <List <TareasModel> > Consultar(CriteriosTareas input)
        {
            try
            {
                var config = new MapperConfiguration(cfg => {
                    cfg.CreateMap <List <Tareas>, List <TareasModel> >();
                });

                IMapper iMapper = config.CreateMapper();
                //Se parametrizan los predicados
                var inner = PredicateBuilder.False <Tareas>(); //OR
                var outer = PredicateBuilder.True <Tareas>();  //AND

                if (input.ConsultarSoloMisTareas)
                {
                    ClaimsIdentity claimsIdentity = new ClaimsIdentity("UserData");
                    var            jsonUserInfo   = claimsIdentity.Claims.FirstOrDefault().Value;

                    var usuarioActual = JsonConvert.DeserializeObject <UsuarioModel>(jsonUserInfo);
                    //Suponiendo que el usuario es unico
                    var usuarioInfo = (from usuario in await _usuariosRepositorio.GetAllAsync()
                                       where usuario.Usuario == usuarioActual.Usuario
                                       select usuario).FirstOrDefault();

                    /*
                     * var listaTareasInfo = (from tarea in await _tareasRepositorio.GetAllAsync()
                     *                where tarea.UsuarioRefId == usuarioInfo.Id
                     *                select tarea).ToList(); */

                    outer = outer.And(t => t.UsuarioRefId == usuarioInfo.Id);

                    //return iMapper.Map<List<TareasModel>>(listaTareasInfo);
                }

                if (input.ConsultarTareasPendientes)
                {/*
                  * var listaTareasInfo = (from tarea in await _tareasRepositorio.GetAllAsync()
                  *                        where tarea.EstadoTarea == "Pendiente"
                  *                        select tarea).ToList(); */
                    inner = inner.Or(t => t.EstadoTarea == "Pendiente");
                    //return iMapper.Map<List<TareasModel>>(listaTareasInfo);
                }

                if (input.ConsultarTareasFinalizadas)
                {/*
                  * var listaTareasInfo = (from tarea in await _tareasRepositorio.GetAllAsync()
                  *                        where tarea.EstadoTarea == "Finalizado"
                  *                        select tarea).ToList();*/
                    inner = inner.Or(t => t.EstadoTarea == "Finalizado");
                    //return iMapper.Map<List<TareasModel>>(listaTareasInfo);
                }
                outer = outer.And(inner);
                if (input.OrdenarConsultaPorFechaVencimiento)
                {
                    /*
                     * var listaTareasInfo = (from tarea in await _tareasRepositorio.GetAllAsync()
                     *                     orderby tarea.FechaVencimiento
                     *                     select tarea).ToList();*/
                    var listaTareasOrdenadas = (await _tareasRepositorio.GetAllAsync()).Where(outer).OrderBy(s => s.FechaVencimiento);

                    return(iMapper.Map <List <TareasModel> >(listaTareasOrdenadas));

                    //return iMapper.Map<List<TareasModel>>(listaTareasInfo);
                }


                var listaTareas = (await _tareasRepositorio.GetAllAsync()).Where(outer).ToList();

                return(iMapper.Map <List <TareasModel> >(listaTareas));
            }
            catch (Exception)
            {
                throw new Exception("Error en consulta");
            }
        }