public async Task <long> NextAsync(string name) { if (await idHolderRepository.ExistsAsync(name)) { var entity = await idHolderRepository.GetAsync(name); var idHolderName = IdHolderName.Create(entity.Name); var idHolderCurrentId = IdHolderCurrentId.Create(entity.CurrentId); var idHolder = new IdHolder(idHolderName.Value, idHolderCurrentId.Value); entity.CurrentId = idHolder.Next(); await idHolderRepository.UpdateAsync(entity); return(idHolder.CurrentId.Value); } else { var idHolderName = IdHolderName.Create(name); var idHolderCurrentId = IdHolderCurrentId.Create(StartFromDefault); var result = Result.Combine(idHolderName, idHolderCurrentId); if (result.IsSuccess) { var idHolder = new IdHolder(idHolderName.Value, idHolderCurrentId.Value); await CreateIdHolderTableEntityAsync(idHolder); return(StartFromDefault); } else { throw new Exception(result.Error); } } }
public void Create_NameIsValid_ReturnsObjectWithName() { var idHolderName = "name"; var result = IdHolderName.Create(idHolderName); result.IsSuccess.Should().BeTrue(); result.Value.Value.Should().Be(idHolderName); }
public void Next_ReturnsIncrementedValue() { var idHolderName = IdHolderName.Create("name"); var idHolderCurrentId = IdHolderCurrentId.Create(1); var idHolder = new IdHolder(idHolderName.Value, idHolderCurrentId.Value); var next = idHolder.Next(); next.Should().Be(2); idHolderCurrentId.Value.Value.Should().Be(2); }
public async Task CreateAsync(CreateIdHolderDto createIdHolderDto) { var exists = await ExistsAsync(createIdHolderDto.Name); if (exists) { throw new ArgumentException($"IdHolder Name { createIdHolderDto.Name } is in use"); } var idHolderName = IdHolderName.Create(createIdHolderDto.Name); var idHolderCurrentId = IdHolderCurrentId.Create(createIdHolderDto.StartFrom); var result = Result.Combine(idHolderName, idHolderCurrentId); if (result.IsSuccess) { var idHolder = new IdHolder(idHolderName.Value, idHolderCurrentId.Value); await CreateIdHolderTableEntityAsync(idHolder); } else { throw new Exception(result.Error); } }
public void Create_NameIsNullOrEmpty_ReturnsResultFail(string name) { var result = IdHolderName.Create(name); result.IsFailure.Should().BeTrue(); }