Api/Brizco.Core/EntityServices/ComplexService.cs

43 lines
1.5 KiB
C#

namespace Brizco.Core.EntityServices;
public class ComplexService : IComplexService
{
private readonly ISender _sender;
private readonly RoleManager<ApplicationRole> _roleManager;
public ComplexService(ISender sender,RoleManager<ApplicationRole> roleManager)
{
_sender = sender;
_roleManager = roleManager;
}
public async Task<ComplexSDto> CreateComplexAsync(string complexName,
string complexAddress,
string complexSuppPhone,
Guid managerUserId,
CancellationToken cancellationToken)
{
var complex = await _sender.Send(new CreateComplexCommand(complexName,
complexAddress,
complexSuppPhone));
var managerRole = new ApplicationRole
{
ComplexId = complex.Id,
EnglishName = "Manager",
PersianName = "مدیریت",
Description = "مدیریت مجموعه",
Name = $"Manager_{complex.Id.ToString()}"
};
var createRoleResult = await _roleManager.CreateAsync(managerRole);
if (!createRoleResult.Succeeded)
throw new AppException(string.Join('|', createRoleResult.Errors));
foreach (var claim in ApplicationClaims.ManagerClaims)
await _roleManager.AddClaimAsync(managerRole, claim);
var complexUser = await _sender.Send(new CreateComplexUserCommand(complex.Id, managerUserId, new List<Guid>{ managerRole.Id }), cancellationToken);
return complex;
}
}