BotSharp/src/Infrastructure/BotSharp.Core/Files/Services/BotSharpFileService.User.cs
2024-07-01 14:31:48 -05:00

66 lines
1.8 KiB
C#

using System.IO;
namespace BotSharp.Core.Files.Services;
public partial class BotSharpFileService
{
public string GetUserAvatar()
{
var db = _services.GetRequiredService<IBotSharpRepository>();
var user = db.GetUserById(_user.Id);
var dir = GetUserAvatarDir(user?.Id);
if (!ExistDirectory(dir)) return string.Empty;
var found = Directory.GetFiles(dir).FirstOrDefault() ?? string.Empty;
return found;
}
public bool SaveUserAvatar(BotSharpFile file)
{
if (file == null || string.IsNullOrEmpty(file.FileData)) return false;
try
{
var db = _services.GetRequiredService<IBotSharpRepository>();
var user = db.GetUserById(_user.Id);
var dir = GetUserAvatarDir(user?.Id);
if (string.IsNullOrEmpty(dir)) return false;
if (Directory.Exists(dir))
{
Directory.Delete(dir, true);
}
dir = GetUserAvatarDir(user?.Id, createNewDir: true);
var (_, bytes) = GetFileInfoFromData(file.FileData);
File.WriteAllBytes(Path.Combine(dir, file.FileName), bytes);
return true;
}
catch (Exception ex)
{
_logger.LogWarning($"Error when saving user avatar: {ex.Message}");
return false;
}
}
#region Private methods
private string GetUserAvatarDir(string? userId, bool createNewDir = false)
{
if (string.IsNullOrEmpty(userId))
{
return string.Empty;
}
var dir = Path.Combine(_baseDir, USERS_FOLDER, userId, USER_AVATAR_FOLDER);
if (!Directory.Exists(dir) && createNewDir)
{
Directory.CreateDirectory(dir);
}
return dir;
}
#endregion
}