public Envelope <ProjectDto> GetAllProjects(int pageSize, int pageNumber, bool inWorkingState, bool recordingFinished, bool readyForPublish, bool published, string query)
        {
            if (pageSize < 25 || pageSize > 100)
            {
                throw new ArgumentException("Invalid argument");
            }

            var status = CreateStatusList(inWorkingState, recordingFinished, readyForPublish, published);

            var projects = _projectMasterRepository.GetMany(
                pm =>
                status.Contains(pm.statuscode) &&
                !pm.removed &&
                (pm.mainartist.StartsWith(query) || pm.projectname.StartsWith(query) ||
                 pm.createdby.StartsWith(query))).Select(p => new ProjectDto(p)).OrderByDescending(p => p.Id);

            var totalNumber = projects.Count();

            return(EnvelopeCreator.CreateEnvelope(projects.Skip((pageNumber - 1) * pageSize).Take(pageSize), pageSize, pageNumber, totalNumber));
        }