diff --git a/EnvelopeGenerator.Web/Controllers/ReadOnlyController.cs b/EnvelopeGenerator.Web/Controllers/ReadOnlyController.cs index 6dcc5acb..fe0af197 100644 --- a/EnvelopeGenerator.Web/Controllers/ReadOnlyController.cs +++ b/EnvelopeGenerator.Web/Controllers/ReadOnlyController.cs @@ -28,79 +28,75 @@ namespace EnvelopeGenerator.Web.Controllers _histService = histService; } - [HttpGet] - [Authorize] - public async Task GetAllAsync() - { - var res = await _erroService.ReadAllAsync(); - return Ok(res); - } - [HttpPost] [Authorize] public async Task CreateAsync([FromBody] EnvelopeReceiverReadOnlyCreateDto createDto) { - //set AddedWho - var authReceiverMail = this.GetAuthReceiverMail(); - if (authReceiverMail is null) + try { - _logger.LogError("Email clam is not found in envelope-receiver-read-only creation process. Create DTO is:\n {dto}", JsonConvert.SerializeObject(createDto)); - return Unauthorized(); - } - - var envelopeId = this.GetAuthEnvelopeId(); - if (envelopeId is null) - { - _logger.LogError("Envelope Id clam is not found in envelope-receiver-read-only creation process. Create DTO is:\n {dto}", JsonConvert.SerializeObject(createDto)); - return Unauthorized(); - } - - createDto.AddedWho = authReceiverMail; - createDto.EnvelopeId = envelopeId; - - // create entity - var creation_res = await _erroService.CreateAsync(createDto: createDto); - - if (creation_res.IsFailed) - { - _logger.LogNotice(creation_res); - return StatusCode(StatusCodes.Status500InternalServerError); - } - - //read new entity - var read_res = await _erroService.ReadByIdAsync(creation_res.Data); - if (read_res.IsFailed) - { - _logger.LogNotice(creation_res); - return StatusCode(StatusCodes.Status500InternalServerError); - } - - var new_erro = read_res.Data; - - //send email two receiver - return await _mailService.SendAsync(new_erro).ThenAsync(SuccessAsync: async res => - { - //TODO: implement multi-threading to history process (Task) - //TODO: remove casting after change the id type - var hist_res = await _histService.RecordAsync((int) createDto.EnvelopeId, createDto.AddedWho, Common.Constants.EnvelopeStatus.EnvelopeShared); - if (hist_res.IsFailed) + //set AddedWho + var authReceiverMail = this.GetAuthReceiverMail(); + if (authReceiverMail is null) { - _logger.LogError("Although the envelope was sent as read-only, the EnvelopeShared hisotry could not be saved. Create DTO:\n{createDto}", JsonConvert.SerializeObject(createDto)); - _logger.LogNotice(hist_res.Notices); + _logger.LogError("Email clam is not found in envelope-receiver-read-only creation process. Create DTO is:\n {dto}", JsonConvert.SerializeObject(createDto)); + return Unauthorized(); } - return Ok(); - }, - - Fail: (msg, ntc) => - { - _logger.LogNotice(ntc); - return StatusCode(StatusCodes.Status500InternalServerError); - }); - } + var envelopeId = this.GetAuthEnvelopeId(); + if (envelopeId is null) + { + _logger.LogError("Envelope Id clam is not found in envelope-receiver-read-only creation process. Create DTO is:\n {dto}", JsonConvert.SerializeObject(createDto)); + return Unauthorized(); + } - [HttpGet("key/{readOnlyId}")] - public IActionResult CreateLink(long readOnlyId) => Ok( - Request.Headers["Origin"].ToString() + "/EnvelopeKey/" + readOnlyId.EncodeEnvelopeReceiverId()); + createDto.AddedWho = authReceiverMail; + createDto.EnvelopeId = envelopeId; + + // create entity + var creation_res = await _erroService.CreateAsync(createDto: createDto); + + if (creation_res.IsFailed) + { + _logger.LogNotice(creation_res); + return StatusCode(StatusCodes.Status500InternalServerError); + } + + //read new entity + var read_res = await _erroService.ReadByIdAsync(creation_res.Data); + if (read_res.IsFailed) + { + _logger.LogNotice(creation_res); + return StatusCode(StatusCodes.Status500InternalServerError); + } + + var new_erro = read_res.Data; + + //send email two receiver + return await _mailService.SendAsync(new_erro).ThenAsync(SuccessAsync: async res => + { + //TODO: implement multi-threading to history process (Task) + //TODO: remove casting after change the id type + var hist_res = await _histService.RecordAsync((int)createDto.EnvelopeId, createDto.AddedWho, Common.Constants.EnvelopeStatus.EnvelopeShared); + if (hist_res.IsFailed) + { + _logger.LogError("Although the envelope was sent as read-only, the EnvelopeShared hisotry could not be saved. Create DTO:\n{createDto}", JsonConvert.SerializeObject(createDto)); + _logger.LogNotice(hist_res.Notices); + } + + return Ok(); + }, + + Fail: (msg, ntc) => + { + _logger.LogNotice(ntc); + return StatusCode(StatusCodes.Status500InternalServerError); + }); + } + catch(Exception ex) + { + _logger.LogError(ex, "{Message}", ex.Message); + return StatusCode(StatusCodes.Status500InternalServerError); + } + } } } \ No newline at end of file