using FoodsharingSiegen.Contracts.Entity;
using FoodsharingSiegen.Contracts.Enums;

namespace FoodsharingSiegen.Server.Data
{
    /// <summary>
    ///     The audit helper class (a. beging, 31.05.2022)
    /// </summary>
    public static class AuditHelper
    {
        #region Public Method CreateText

        /// <summary>
        ///     Creates the text using the specified audit (a. beging, 31.05.2022)
        /// </summary>
        /// <param name="audit">The audit</param>
        /// <returns>The string</returns>
        public static string CreateText(Audit audit)
        {
            switch (audit.Type)
            {
                case AuditType.SaveProfile:
                    return "hat das eigene Profil gespeichert.";
                case AuditType.CreateUser:
                    return $"hat den User {audit.Data1} erstellt.";
                case AuditType.UpdateUser:
                    return $"hat den User {audit.Data1} gespeichert.";
                case AuditType.RemoveUser:
                    return $"hat den User {audit.Data1} gelöscht.";
                case AuditType.SetUserPassword:
                    return $"hat das Passwort von {audit.Data1} geändert.";
                case AuditType.CreateProspect:
                    return $"hat den Neuling {audit.Data1} erstellt.";
                case AuditType.EditProspect:
                    return $"hat den Neuling {audit.Data1} bearbeitet.";
                case AuditType.AddInteraction:
                    return $"hat dem Neuling {audit.Data1} folgendes hinzugefügt: {audit.Data2}";
                case AuditType.RemoveInteraction:
                    return $"hat eine Interaktion bei {audit.Data1} gelöscht.";
                case AuditType.DeleteProspectImages:
                    return $"hat die Bilder von {audit.Data1} gelöscht.";
                case AuditType.ViewProspectImages:
                    return $"hat die Bilder von {audit.Data1} angesehen.";
                case AuditType.UploadProspectImage:
                    return $"hat ein Bild für {audit.Data1} hochgeladen.";
                case AuditType.RequestPasswordReset:
                    return $"hat ein Passwort-Reset für {audit.Data1} angefordert.";
                case AuditType.ChangeOwnPassword:
                    return $"hat das eigene Passwort geändert.";
                case AuditType.None:
                default:
                    return $"{audit.Data1}, {audit.Data2}";
            }
        }

        #endregion
    }
}