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