using System; using System.IO; using System.Linq; namespace gehGassi.Core.Services { /// /// Hilfsklasse für die Benennung von Dateien und Ordnern /// public class FileServiceHelper { public const string DocumentContainer = "documents"; public const string TempContainer = "temp"; /// /// Pfad zu den Mandanten-Daten /// /// Id des Mandanten /// Pfad public static string GetTenantPath(Guid tenantId) { return $"Tenants/{tenantId}/"; } /// /// Pfad zu den Dateien eines Benutzers /// /// ID des Benutzers /// Pfad public static string GetProfilePath(string id) { return $"Users/{id}/"; } /// /// Pfad zu den Temp-Bild-Dateien /// /// Id des Mandanten /// Eindeutige ID /// Pfad public static string GetImageTempPath(Guid tenantId, Guid uniqueId) { return $"Tenants/{tenantId}/{uniqueId}/images/"; } /// /// Pfad zu den Dateien eines Projektes! /// /// Id des Mandanten /// Id des Projektes /// Pfad public static string GetProjectPath(Guid tenantId, long projectId) { return $"Tenants/{tenantId}/projects/{projectId}/"; } /// /// Pfad zu den Dateien eines Issues /// /// Id des Mandanten /// Id des Projektes /// Id des Issues /// Pfad public static string GetIssuePath(Guid tenantId, long projectId, long issueId) { return $"Tenants/{tenantId}/projects/{projectId}/issues/{issueId}/"; } /// /// Pfad zu den Bild-Dateien eines Issues /// /// Id des Mandanten /// Id des Projektes /// Id des Issues /// Pfad public static string GetIssueImagePath(Guid tenantId, long projectId, long issueId) { return $"Tenants/{tenantId}/projects/{projectId}/issues/{issueId}/images/"; } /// /// Pfad zu den Bild-Dateien eines Projektes /// /// Id des Mandanten /// Id des Projektes /// Pfad public static string GetProjectImagePath(Guid tenantId, long projectId) { return $"Tenants/{tenantId}/projects/{projectId}/images/"; } /// /// Pfad zu den Bild-Dateien eines Sprints /// /// Id des Mandanten /// Id des Projektes /// Id des Sprints /// Pfad public static string GetSprintImagePath(Guid tenantId, long projectId, long sprintId) { return $"Tenants/{tenantId}/projects/{projectId}/sprints/{sprintId}/images/"; } /// /// Pfad zu den Beleg-Daten /// /// Id des Mandanten /// Pfad public static string GetReceiptPath(Guid tenantId) { return $"Tenants/{tenantId}/receipts/"; } /// /// Pfad zu den Badge-Daten /// /// Pfad public static string GetBadgePath() { return $"Badges/"; } /// /// Pfad zu den Badge-Daten /// /// Id des Mandanten /// Pfad public static string GetBadgePath(Guid tenantId) { return $"Tenants/{tenantId}/badges/"; } /// /// Pfad zu den Kunden-Daten für Temp /// /// Pfad public static string GetCustomerPath() { return $"customers/"; } /// /// Pfad zu den Kunden-Daten /// /// Id des Kunden /// Pfad public static string GetCustomerPath(long customerId) { return $"customers/{customerId}/"; } /// /// Pfad zu den Kunden-Daten /// /// Id des Mandanten /// Id des Kunden /// Pfad public static string GetCustomerPath(Guid tenantId, long customerId) { return $"Tenants/{tenantId}/customers/{customerId}/"; } /// /// Pfad zu den Trainer-Daten /// /// Pfad public static string GetInstructorPath() { return $"instructors/"; } /// /// Pfad zu den Trainer-Daten /// /// Id des Mandanten /// Pfad public static string GetInstructorPath(Guid tenantId) { return $"Tenants/{tenantId}/instructors/"; } /// /// Pfad zu den Studenten-Daten /// /// Pfad public static string GetStudentPath() { return $"students/"; } /// /// Pfad zu den Studenten-Daten /// /// Id des Mandanten /// Id des Kunden /// Pfad public static string GetStudentPath(Guid tenantId, long customerId) { return $"Tenants/{tenantId}/customers/{customerId}/students/"; } /// /// Pfad zu den Studenten-Daten /// /// Id des Mandanten /// Id des Kunden /// UniqueId des Studenten /// Pfad public static string GetStudentPath(Guid tenantId, long customerId, Guid studentId) { return $"Tenants/{tenantId}/customers/{customerId}/students/{studentId}/"; } /// /// Pfad zu den Kurs-Daten /// /// Pfad public static string GetCoursePath() { return $"courses/"; } /// /// Pfad zu den Kurs-Daten /// /// Id des Mandanten /// Pfad public static string GetCoursePath(Guid tenantId) { return $"Tenants/{tenantId}/courses/"; } /// /// Pfad zu den Kurs-Daten /// /// Id des Mandanten /// Id des Kurses /// Versionsnummer /// Pfad public static string GetCoursePath(Guid tenantId, long courseId, int version) { return $"Tenants/{tenantId}/courses/{courseId}/{version}/"; } /// /// Pfad zu den Zertifikat-Daten /// /// Pfad public static string GetCertificatePath() { return $"certificates/"; } /// /// Pfad zu den Zertifikat-Daten /// /// Id des Mandanten /// Pfad public static string GetCertificatePath(Guid tenantId) { return $"Tenants/{tenantId}/certificates/"; } /// /// Pfad zu den Werbungs-Daten Kategorien / Rubriken /// /// Id der Rubrik /// Pfad public static string GetAdvertisementCategoryPath(string id) { return $"AdsCat/{id}/"; } /// /// Pfad zu den Werbungs-Daten /// /// Id der Werbung /// Pfad public static string GetAdvertisementPath(string id) { return $"Ads/{id}/"; } /// /// Pfad zu den Banner-Daten /// /// Id des Banners /// Pfad public static string GetBannerPath(string id) { return $"Banner/{id}/"; } /// /// Pfad zu den Gutschein-Kampagnen-Daten /// /// Id der Gutschein-Kampagne /// Pfad public static string GetVoucherCampaignPath(string id) { return $"VoucherCampaigns/{id}/"; } /// /// Pfad zu den Branchen-Daten /// /// Id der Rubrik /// Pfad public static string GetBranchPath(string id) { return $"Branch/{id}/"; } /// /// Pfad zu den Hunderassen-Daten /// /// Id der Rubrik /// Pfad public static string GetDogRacePath(string id) { return $"DogRace/{id}/"; } /// /// Pfad zu den Produktkategorie-Daten /// /// Id der Rubrik /// Pfad public static string GetProductCategoryPath(int id) { return $"ProdsCat/{id}/"; } /// /// Pfad zu den Werbungs-Daten /// /// Id der Rubrik /// Pfad public static string GetProductPath(int id) { return $"Products/{id}/"; } /// /// Pfad zu den App-User-Daten /// /// Id des App-Users /// Pfad public static string GetAppUserPath(string id) { return $"AppUsers/{id}/"; } /// /// Pfad zu den Hundeausführer-Daten /// /// Id des Hundeausführers /// Pfad public static string GetDogWalkerPath(string id) { return $"DogWalkers/{id}/"; } /// /// Pfad zu den Hunde-Daten /// /// Id des Hundes /// Pfad public static string GetDogPath(string id) { return $"Dogs/{id}/"; } /// /// Pfad zu den Listungs-Daten /// /// Id der Rubrik /// Pfad public static string GetListingPath(string id) { return $"Listing/{id}/"; } /// /// Pfad zu den Pin-Daten /// /// Id des Pins /// Pfad public static string GetPinPath(string id) { return $"Pin/{id}/"; } /// /// Pfad zu den temp-Upload Daten /// /// Pfad public static string GetUploadTempPath() { return $"uploadtemp/"; } /// /// Pfad zu den News-Daten Kategorien /// /// Id der Rubrik /// Pfad public static string GetNewsCategoryPath(string id) { return $"NewsCat/{id}/"; } /// /// Pfad zu den News-Daten /// /// Id der News /// Pfad public static string GetNewsPath(long id) { return $"News/{id}/"; } #region Helper /// /// Ersetzt ungültige Zeichen in einem Dateinamen /// /// Dateiname /// Bereinigter Dateiname public static string SanitizeFileName(string filename) { if (string.IsNullOrWhiteSpace(filename)) return string.Empty; var invalidCharacters = Path.GetInvalidFileNameChars().ToList(); invalidCharacters.Remove('/'); invalidCharacters.Add('&'); invalidCharacters.Add('%'); var sanitizedFileName = string.Join("_", filename.Split(invalidCharacters.ToArray())); sanitizedFileName = sanitizedFileName.Replace(" ", ""); return sanitizedFileName; } #endregion } }