public PackageData(IEnumerable <IFileData> filesData)
 {
     Id             = Guid.Empty;
     FilesQueueInfo = new FilesQueueInfo();
     SetStatusProcessingProject(StatusProcessingProject.NeedToLoadFiles);
     _filesData = filesData.ToList();
 }
        public void ChangeAllFilesStatusAndSetError(IErrorCommon errorStatus)
        {
            FilesQueueInfo = new FilesQueueInfo();
            var fileData    = _filesData.Select(file => new FileStatus(file.FilePath, StatusProcessing.End, errorStatus));
            var filesStatus = new PackageStatus(fileData, StatusProcessingProject.End);

            ChangeFilesStatus(filesStatus);
        }
        /// <summary>
        /// Изменить статус файла и присвоить при необходимости ошибку
        /// </summary>
        public void ChangeFilesStatus(PackageStatus packageStatus)
        {
            if (packageStatus?.IsValid != true)
            {
                return;
            }

            bool isStatusProcessingProjectChanged = SetStatusProcessingProject(packageStatus.StatusProcessingProject);

            FilesQueueInfo = FilesQueueInfo.GetQueueInfoByStatus(packageStatus.QueueStatus, StatusProcessingProject);

            var filesDataChanged = packageStatus.FileStatus.
                                   Select(fileStatus => _filesData.FirstOrDefault(file => file.FilePath == fileStatus.FilePath)?.
                                          ChangeByFileStatus(fileStatus)).
                                   Where(fileData => fileData != null);

            var fileChange = new FilesChange(_filesData, filesDataChanged, ActionType.StatusChange, isStatusProcessingProjectChanged);

            UpdateFileData(fileChange);
        }