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()); }
public async Task <IActionResult> CreateAsync(int inquiryId, [FromBody] InquirySampleDto input, [FromServices] IGeocoderTranslation geocoderTranslation) { Address address = await geocoderTranslation.GetAddressIdAsync(input.Address); // Map. var inquirySample = _mapper.Map <InquirySample>(input); inquirySample.Address = address.Id; inquirySample.Inquiry = inquiryId; // Act. // FUTURE: Too much logic InquiryFull inquiry = await _inquiryRepository.GetByIdAsync(inquirySample.Inquiry); if (!inquiry.State.AllowWrite) { throw new EntityReadOnlyException(); } inquirySample = await _inquirySampleRepository.AddGetAsync(inquirySample); inquiry.State.TransitionToPending(); await _inquiryRepository.SetAuditStatusAsync(inquiry.Id, inquiry); // Map. var output = _mapper.Map <InquirySampleDto>(inquirySample); // Return. return(Ok(output)); }