36 lines
1.5 KiB
C#
36 lines
1.5 KiB
C#
using Modules.Library.Domain.Entities.Language;
|
|
using Modules.Library.Domain.Exceptions.Language;
|
|
using Modules.Library.Domain.Gateways;
|
|
|
|
namespace Modules.Library.Domain.Interactors;
|
|
|
|
public class LanguageInteractor(ILanguageGateway gateway)
|
|
{
|
|
public async Task<Guid> Create(string codeIso2, string name, Guid? iconId)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullException(name);
|
|
if (await gateway.GetFirstOrDefaultWhere(q => q.Name == name) != null) throw new LanguageIsAlreadyExistException();
|
|
var newLanguage = new Language(codeIso2, name, iconId);
|
|
return await gateway.AddAsync(newLanguage);
|
|
}
|
|
|
|
public async Task Edit(Guid languageId, string name, Guid? iconId)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(name)) throw new ArgumentNullException(name);
|
|
var language = await gateway.GetByIdAsync(languageId);
|
|
if (await gateway.GetFirstOrDefaultWhere(q => q.Name == name) != null) throw new LanguageWithSameNameIsAlreadyExistException();
|
|
language.SetName(name);
|
|
language.SetIcon(iconId);
|
|
if (!await gateway.UpdateAsync(language)) throw new Exception("Save unsuccessfull");
|
|
}
|
|
|
|
|
|
public async Task Delete(Guid languageId)
|
|
{
|
|
var language = await gateway.GetByIdAsync(languageId);
|
|
//await gateway.DeleteAsync(genre);
|
|
if (language.Deleted) throw new Exception("AlreadyDeleted");
|
|
language.SetDeleted();
|
|
if (!await gateway.UpdateAsync(language)) throw new Exception("Save unsuccessfull");
|
|
}
|
|
} |