using AutoMapper; using DigitalData.Core.Application; using DigitalData.Core.DTO; using DigitalData.UserManager.Application.Contracts; using DigitalData.UserManager.Application.DTOs.Group; using DigitalData.UserManager.Domain.Entities; using DigitalData.UserManager.Infrastructure.Contracts; using Microsoft.Extensions.Localization; namespace DigitalData.UserManager.Application.Services { public class GroupService : CRUDService, IGroupService { public GroupService(IGroupRepository repository, IStringLocalizer localizer, IMapper mapper) : base(repository, localizer, mapper) { } public async Task> CreateAsync(DirectoryGroupDto adGroup) { var group = _mapper.MapOrThrow(adGroup); if (await HasEntity(group.Guid)) return Result.Fail().Message(_localizer[Key.GroupAlreadyExists.ToString()]); var createdGroup = await _repository.CreateAsync(group); if (createdGroup is null) return Result.Fail(); else return Result.Success(KeyValueOf(createdGroup)); } } }