Пример #1
0
        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);
                }
            }
        }
Пример #2
0
        private async Task CreateIdHolderTableEntityAsync(IdHolder idHolder)
        {
            var entity = new IdHolderTableEntity
            {
                Name      = idHolder.Name,
                CurrentId = idHolder.CurrentId
            };

            await idHolderRepository.CreateAsync(entity);
        }
Пример #3
0
        public async Task <ActionResult <Lamp> > Post([FromBody] LampCreationApi lamp)
        {
            var            newItem  = mapper.Map <Lamp>(lamp);
            IdHolder <int> idHolder = await db.Lamps.AddAsync(newItem);

            await db.SaveAsync();

            newItem.SetId(idHolder.Id);

            return(CreatedAtAction(nameof(Get), new { id = newItem.Id }, newItem));
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
            }
        }