Ejemplo n.º 1
0
    public async Task <IActionResult> UpdateAsync(int id, [FromBody] InquiryDto input)
    {
        // Map.
        var inquiry = _mapper.Map <InquiryFull>(input);

        inquiry.Id = id;

        InquiryFull inquiry_existing = await _inquiryRepository.GetByIdAsync(id);

        if (inquiry_existing.Attribution.Creator == input.Reviewer)
        {
            throw new AuthorizationException();
        }

        // Act.
        await _inquiryRepository.UpdateAsync(inquiry);

        // FUTURE: Does this make sense?
        // Only when this item was rejected can we move into
        // a pending state after update.
        if (inquiry.State.AuditStatus == AuditStatus.Rejected)
        {
            // Transition.
            inquiry.State.TransitionToPending();

            // Act.
            await _inquiryRepository.SetAuditStatusAsync(inquiry.Id, inquiry);
        }

        // Return.
        return(NoContent());
    }