public async Task CreatePoll(NewPoll newPoll) { Poll poll = _unitOfWork.Poll.AddNewPoll(newPoll); _unitOfWork.SaveChanges(); if (poll != null) { await Clients.Caller.ConfirmPollCreation(true); } else { await Clients.Caller.ConfirmPollCreation(false); } }
public Poll AddNewPoll(NewPoll newPoll) { List <PollOption> options = new(); foreach (string option in newPoll.PollOptions) { options.Add(new PollOption() { Name = option, }); } Poll poll = new() { Options = options, Name = newPoll.PollName, MultipleOptions = newPoll.MultipleOptions, ExpirationDate = newPoll.ExpirationDate, Votes = new List <PollVote>() }; _dbContext.Add(poll); return(poll); }
public ActionResult Create(NewPoll poll) { if (_isUserLoggedIn() == false) { return(_redirectToLogin()); } if (ModelState.IsValid) { long imageId = _db.NextPollImageId(); long pollId = _db.NextPollId(); long choiceId = _db.NextPollChoiceId(); using (var tran = _db.Database.BeginTransaction()) { try{ if (poll.HasImage()) { PollImages pi = poll.Image.ToPollImages(imageId, _userId); _db.PollImages.Add(pi); _db.SaveChanges(); poll.Image.ImageId = imageId; imageId++; } Polls pollEntity = poll.ToPolls(pollId, _userId); _db.Polls.Add(pollEntity); _db.SaveChanges(); // polls choices - images foreach (PollChoice cho in poll.Choices) { if (cho.HasImage()) { PollImages img = cho.Image.ToPollImages(imageId, _userId); // poll choices shell not use full image data - only the thumbs // save space! img.ImgData = ""; img.ImgHeight = 0; img.ImgWidth = 0; _db.PollImages.Add(img); cho.Image.ImageId = imageId; imageId++; } } _db.SaveChanges(); long chordinal = 1; // poll choices foreach (PollChoice cho in poll.Choices) { PollChoices pocho = cho.ToPollChoices(choiceId, pollId, chordinal); _db.PollChoices.Add(pocho); choiceId++; chordinal++; } _db.SaveChanges(); tran.Commit(); } catch (Exception ex) { tran.Rollback(); return(Content(ex.Message)); } } return(Content("ok")); } return(Content(_buildErrorMessage())); }