//get filtered data list
        public IList <SHARED.ViewModals.Task> getFilteredTasks(string filter)
        {
            IList <TodoModel> filteredDataList;

            switch (filter)
            {
            case "IsCompleted":
                filteredDataList = _context.TodoModels.Where(s => s.IsCompleted == 1)
                                   .ToList();
                break;

            case "IsExpired":
                filteredDataList = _context.TodoModels.Where(q => q.IsExpired == 1).ToList();
                break;

            case "IsDeleted":
                filteredDataList = _context.TodoModels.Where(q => q.IsDeleted == 1).ToList();
                break;

            case "IsOnGoing":
                filteredDataList = _context.TodoModels.Where(q => q.IsExpired == 0 && q.IsDeleted == 0 && q.IsCompleted == 0).ToList();
                break;

            default:
                filteredDataList = _context.TodoModels.ToList();
                break;
            }

            return(EntityDTOConversion.EntityToDTO(filteredDataList));
        }
        //to add a task
        public SHARED.ViewModals.Task PostTasks(SHARED.ViewModals.Task item)
        {
            TodoModel postedTask = EntityDTOConversion.DTOToEntity(item);

            _context.TodoModels.Add(postedTask);
            _context.SaveChangesAsync();
            return(item);
        }
        //get pagination TaskList
        public IEnumerable <SHARED.ViewModals.Task> getPagination(int?pageNumber, int?pageSize)
        {
            IEnumerable <SHARED.ViewModals.Task> Tasks = EntityDTOConversion.EntityToDTO(_context.TodoModels.ToList());
            var currentPageNumber = pageNumber ?? 1;
            var currentPageSize   = pageSize ?? 5;

            return(Tasks.Skip((currentPageNumber - 1) * currentPageSize).Take(currentPageSize));
        }
        //get sorted data list
        public IList <SHARED.ViewModals.Task> getSortedTasks(string sort)
        {
            IList <TodoModel> sortedTaskList;

            switch (sort)
            {
            case "desc":
                sortedTaskList = _context.TodoModels.OrderByDescending(q => q.Title).ToList();
                break;

            case "asc":
                sortedTaskList = _context.TodoModels.OrderBy(q => q.Title).ToList();
                break;

            default:
                sortedTaskList = _context.TodoModels.ToList();
                break;
            }
            return(EntityDTOConversion.EntityToDTO(sortedTaskList));
        }
        //to edit a task
        public SHARED.ViewModals.Task EditTasks(int id, SHARED.ViewModals.Task item)
        {
            if (id != item.TaskId)
            {
                return(null);
            }
            TodoModel editedData = EntityDTOConversion.DTOToEntity(item);

            _context.Entry(editedData).State = EntityState.Modified;

            try
            {
                _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                throw;
            }
            return(item);
        }
        //returns list of all tasks
        public IList <SHARED.ViewModals.Task> getTasks()
        {
            IList <TodoModel> tasks = _context.TodoModels.ToList();

            return(EntityDTOConversion.EntityToDTO(tasks));
        }
        //get Search Result
        public IEnumerable <SHARED.ViewModals.Task> getSearchResult(string searchString)
        {
            IEnumerable <SHARED.ViewModals.Task> searchList = EntityDTOConversion.EntityToDTO(_context.TodoModels.Where(q => q.Title.Contains(searchString)).ToList());

            return(searchList);
        }