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