public async Task CreateNewPoll(PollCreationRequest request) { try { if (request.StartsAt < DateTime.UtcNow) { throw new InvalidPollException("Start time expired"); } var pollObj = new Poll() { PollId = Guid.NewGuid(), PollOwner = request.PollOwner, CreatedAt = DateTime.UtcNow, StartAt = request.StartsAt, EndAt = request.EndsAt }; var pollContentObj = new PollContent() { PollId = pollObj.PollId, PollQuestion = request.PollQuestion, Options = request.Options }; await _pollRepository.CreatePollAsync(pollObj); await _pollRepository.CreatePollContentAsync(pollContentObj); } catch (Exception) { throw; } }
public async Task <ActionResult> Post([FromBody] PollRequest request) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { Poll poll = await _pollRepository.CreatePollAsync(request.Name, request.PollDefinitionId, request.Handle, request.Description, request.IsOpen); _logger.LogInformation(LoggingEvents.InsertPoll, "Poll {Id} Created", poll.Id); return(CreatedAtRoute("GetPoll", new { controller = "Polls", id = poll.Id }, poll)); } catch (Exception e) { _logger.LogError(LoggingEvents.InsertPoll, $"Error creating new poll: Exception {e.Message}"); return(StatusCode(500, e.Message)); } }