public async Task <IDomainResult <BacklogItemReference> > Update <T>(string id, T dto) where T : BacklogItemAddUpdRequestBase
        {
            var entity = await DbSession.LoadAsync <BacklogItem>(GetFullId(id));

            if (entity == null)
            {
                return(DomainResult.NotFound <BacklogItemReference>());
            }

            var(_, status) = dto switch
            {
                BugAddUpdRequest bug => await _dtoToEntityConversion.ConvertToEntity(bug, entity as BacklogItemBug),
                UserStoryAddUpdRequest story => await _dtoToEntityConversion.ConvertToEntity(story, entity as BacklogItemUserStory),
                TaskAddUpdRequest task => await _dtoToEntityConversion.ConvertToEntity(task, entity as BacklogItemTask),
                FeatureAddUpdRequest feature => await _dtoToEntityConversion.ConvertToEntity(feature, entity as BacklogItemFeature),
                _ => throw new ArgumentException($"Unsupported type ${typeof(T)}", nameof(dto))
            };
            if (!status.IsSuccess)
            {
                return(status.To <BacklogItemReference>());
            }

            var ticketRef = entity.ToReference().RemoveEntityPrefixFromId();

            await UpdateRelatedItems(dto, ticketRef);

            return(DomainResult.Success(ticketRef));
        }
        public async Task <IDomainResult <BacklogItemReference> > Create <T>(T dto) where T : BacklogItemAddUpdRequestBase
        {
            var(ticket, status) = dto switch
            {
                BugAddUpdRequest bug => await _dtoToEntityConversion.ConvertToEntity <BacklogItemBug, BugAddUpdRequest>(bug),
                UserStoryAddUpdRequest story => await _dtoToEntityConversion.ConvertToEntity <BacklogItemUserStory, UserStoryAddUpdRequest>(story),
                TaskAddUpdRequest task => await _dtoToEntityConversion.ConvertToEntity <BacklogItemTask, TaskAddUpdRequest>(task),
                FeatureAddUpdRequest feature => await _dtoToEntityConversion.ConvertToEntity <BacklogItemFeature, FeatureAddUpdRequest>(feature),
                _ => throw new ArgumentException($"Unsupported type ${typeof(T)}", nameof(dto))
            };
            if (!status.IsSuccess)
            {
                return(status.To <BacklogItemReference>());
            }

            await DbSession.StoreAsync(ticket);

            var ticketRef = ticket.ToReference().RemoveEntityPrefixFromId();

            await UpdateRelatedItems(dto, ticketRef);

            return(DomainResult.Success(ticketRef));
        }
Exemple #3
0
 public Task <ActionResult <BacklogItemReference> > Create([FromServices] IBacklogItemCommandService service,
                                                           FeatureAddUpdRequest dto)
 => service.Create(dto).ToActionResultOfT();
Exemple #4
0
 public Task <ActionResult <BacklogItemReference> > Update([FromServices] IBacklogItemCommandService service,
                                                           [FromRoute] string id,
                                                           FeatureAddUpdRequest dto)
 => service.Update(id, dto).ToActionResultOfT();