| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | using System;using Microsoft.AspNetCore.Mvc;using Microsoft.AspNetCore.Mvc.RazorPages;using Microsoft.Extensions.Configuration;using Microsoft.Extensions.Logging;using Vote.Messaging;using Vote.Messaging.Messages;namespace Vote.Pages{    public class IndexModel : PageModel    {        private string _optionA;        private string _optionB;        protected readonly IMessageQueue _messageQueue;        protected readonly IConfiguration _configuration;        protected readonly ILogger _logger;        public IndexModel(IMessageQueue messageQueue, IConfiguration configuration, ILogger<IndexModel> logger)        {            _messageQueue = messageQueue;            _configuration = configuration;            _logger = logger;            _optionA = _configuration.GetValue<string>("Voting:OptionA");            _optionB = _configuration.GetValue<string>("Voting:OptionB");        }        public string OptionA { get; private set; }        public string OptionB { get; private set; }        [BindProperty]        public string Vote { get; private set; }        private string _voterId         {            get { return TempData.Peek("VoterId") as string; }            set { TempData["VoterId"] = value; }        }        public void OnGet()        {            OptionA = _optionA;            OptionB = _optionB;        }        public IActionResult OnPost(string vote)        {            Vote = vote;            OptionA = _optionA;            OptionB = _optionB;            if (_configuration.GetValue<bool>("MessageQueue:Enabled"))            {                PublishVote(vote);            }            return Page();        }        private void PublishVote(string vote)        {            if (string.IsNullOrEmpty(_voterId))            {                _voterId = Guid.NewGuid().ToString();            }            var message = new VoteCastEvent            {                VoterId = _voterId,                Vote = vote            };           _messageQueue.Publish(message);        }    }}
 |