コード例 #1
0
        public IActionResult Get([FromQuery] UserDTOFilter filter)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                var result = _userService.Get(filter);
                var msg    = result != null && result.Count > 0 ? "Success." : "No Found";

                return(Ok(new JsonResult(new
                {
                    users = result,
                    message = msg,
                    page = filter.PageNumber,
                    totalRegisters = result.Count
                })));
            }
            catch (ArgumentException ex)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError, ex.Message));
            }
        }
コード例 #2
0
        public List <UserDto> Get(UserDTOFilter filter)
        {
            string        assemblyFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            List <string> orderByList    = new List <string>();

            //Read files
            var dbFile             = System.IO.File.ReadLines(Path.Combine(assemblyFolder, "Data/users.csv")).Select(x => x.Split(','));
            var filePriorityFirst  = System.IO.File.ReadLines(Path.Combine(assemblyFolder, "Data/lista_relevancia_1.txt")).ToList();
            var filePrioritySecond = System.IO.File.ReadLines(Path.Combine(assemblyFolder, "Data/lista_relevancia_2.txt")).ToList();

            orderByList.AddRange(filePriorityFirst);
            orderByList.AddRange(filePrioritySecond);

            int i          = 0;
            var filterList = dbFile.AsParallel()
                             .Where(x => (string.IsNullOrEmpty(filter.Keyword) || (x[1].ToLower().Contains(filter.Keyword.ToLower()) || x[2].ToLower().Contains(filter.Keyword.ToLower()))))
                             .OrderBy(x => (i = orderByList.IndexOf(x[0])) < 0 ? int.MaxValue : i)
                             .Skip((filter.PageNumber - 1) * filter.PageSize)
                             .Take(filter.PageSize);

            var userList = new List <UserDto>();

            foreach (var user in filterList)
            {
                userList.Add(new UserDto(user[0], user[1], user[2]));
            }

            return(userList);
        }