- Introduced a new JavaScript file `gpu-photo-upload.js` for handling batch uploads of GPU photos with progress tracking and cancellation support.
- Updated the `GpuPhotosService` to include a method for deleting pending photos.
- Enhanced localization files for GPU photo suggestions in German, English, Spanish, French, and Italian, adding new strings for photo upload prompts and actions.
- Modified the `_Host.cshtml` to include the new JavaScript file for GPU photo uploads.
- Added a new dialog for suggesting changes to software credits, allowing users to edit and submit credit information.
- Updated the Software service to include methods for retrieving existing credit roles and searching for people.
- Enhanced the Software view to display credits with an option to suggest changes, including a tooltip for authorized users.
- Implemented localization for new strings related to credits in multiple languages (English, German, Spanish, French, Italian).
- Updated metadata to include credits as a new junction group for suggestions.
- Implemented IssueView component to display detailed information about a magazine issue, including cover image, summary, associated machines, and software.
- Created IssuesByYear component to list magazine issues by year, with navigation options for issues without a publication date.
- Enhanced MagazinesService to fetch consolidated data for magazine issues and distinct publication years.
- Added localization support for new strings related to issues and years in multiple languages.
- Updated Magazine view to include navigation chips for issues by year.
- Created a new migration to add the MagazinesBySoftware table with appropriate foreign keys to MagazineIssues and Softwares.
- Updated MarechaiContext to include DbSet for MagazinesBySoftware.
- Implemented MagazinesBySoftware model with relationships to MagazineIssue and Software.
- Developed MagazinesBySoftwareController to handle CRUD operations and retrieval of software associated with magazine issues.
- Enhanced MagazineIssue model to include a collection of MagazinesBySoftware.
- Updated Software model to include a collection of MagazinesBySoftware.
- Added service methods for managing software associations with magazine issues.
- Implemented UI components in MagazineIssueDialog for adding and removing software associations.
- Added localization strings for software-related UI elements in multiple languages.
- Introduced CoverGuid and OriginalCoverExtension fields in MagazineIssues table.
- Implemented migration to add new columns for magazine issue covers.
- Updated MagazineIssue model to include cover properties.
- Enhanced MagazineIssuesController with endpoints for uploading and deleting cover images.
- Added file upload validation for cover images in the controller.
- Implemented cover file management, including deletion of old covers.
- Updated MagazineIssueDialog to handle cover image upload and deletion in the UI.
- Added localization for cover-related messages in multiple languages.
- Implemented GetIssuesByMagazineAsync method in MagazinesController to retrieve issues for a specific magazine.
- Updated NewsController to route new and updated magazine issue notifications to the magazines controller.
- Created MagazineIssueDialog component for adding and editing magazine issues.
- Added MagazineIssueDialogResult class to encapsulate dialog results.
- Developed MagazineIssues page for displaying and managing magazine issues, including add, edit, and delete functionalities.
- Enhanced Magazines page to include a button for navigating to the issues of each magazine.
- Updated localization resources for magazine issue management in multiple languages.
- Added service methods for creating, updating, retrieving, and deleting magazine issues in MagazinesService.
- Deleted `BaseScan`, `BookScan`, `DocumentScan`, and `MagazineScan` models.
- Removed references to scans in `ApplicationUser`, `Book`, `Document`, and `MagazineIssue` models.
- Updated `MarechaiContext` to remove DbSet properties for scans.
- Removed `BookScansController`, `DocumentScansController`, and `MagazineScansController`.
- Adjusted `UserAccountDeletionService` to exclude scan models from user deletion logic.
- Updated `WithCItemRequestBuilder` and `WithYearItemRequestBuilder` to include query parameters for pagination (skip, take).
- Introduced `CountRequestBuilder` for counting magazines by year and letter.
- Modified `MagazinesController` to handle pagination in `GetMagazinesByLetterAsync` and `GetMagazinesByYearAsync` methods.
- Enhanced `MagazinesService` to support pagination in API calls.
- Updated Razor components for magazines to reflect pagination and loading states.
- Adjusted UI elements to improve user experience during data retrieval.
- Updated Index.razor files to link to new Companies pages for Books and Documents.
- Created Companies.razor and Companies.razor.cs for Documents and Magazines, implementing company listing and filtering.
- Added new methods in BooksService, DocumentsService, and MagazinesService to fetch companies by letter and all companies.
- Enhanced localization resources for new Companies features in English, German, Spanish, French, and Italian.
- Added RolesDialog component for managing user roles.
- Created UserDialog component for adding and editing user details.
- Introduced UserDialogResult class to handle user dialog results.
- Developed Users page for displaying and managing users.
- Implemented UsersService for user-related API interactions.
- Added AuthService for authentication management.
- Created HttpAuthHandler for handling HTTP requests with authentication.
- Introduced JwtAuthenticationStateProvider for managing authentication state.
- Updated Register class to include new services.
- Added TokenProvider for managing JWT tokens.
- Enhanced LoginDisplay component for user authentication UI.
- Updated NavMenu to include user management links for authorized users.
- Created RedirectToLogin component for redirecting unauthenticated users.
- Updated Startup class to configure authentication and authorization services.
- Modified _Imports.razor to include necessary namespaces for authentication.