gehgassi_backend/gehGassi.Core/Services/FileServiceHelper.cs

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
}
}