Пример #1
0
        public async Task <IActionResult> Edit(long id, [Bind("Id,SportTypeName,HomeTeamId,AwayTeamId,LocationId,StartDateTime,StartDate,SoldOut")] SportingEvent sportingEvent)
        {
            if (id != sportingEvent.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(sportingEvent);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!SportingEventExists(sportingEvent.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["AwayTeamId"]    = new SelectList(_context.SportTeam, "Id", "Name", sportingEvent.AwayTeamId);
            ViewData["HomeTeamId"]    = new SelectList(_context.SportTeam, "Id", "Name", sportingEvent.HomeTeamId);
            ViewData["LocationId"]    = new SelectList(_context.SportLocation, "Id", "City", sportingEvent.LocationId);
            ViewData["SportTypeName"] = new SelectList(_context.SportType, "Name", "Name", sportingEvent.SportTypeName);
            return(View(sportingEvent));
        }
Пример #2
0
        public static EmailItemRow Create(SportingEvent item)
        {
            EmailItemRow row = new EmailItemRow();

            row.Icon = item.LogoImageUrl;
            row.Text = item.IsValid ? string.Format("Cubs game today at {0} {1} {2}",
                                                    item.DateTime.ToString("hh:mm tt"),
                                                    item.IsHomeGame ? "vs" : "@",
                                                    item.Opponent) : "No data";
            return(row);
        }
Пример #3
0
        public async Task <IActionResult> Create([Bind("Id,SportTypeName,HomeTeamId,AwayTeamId,LocationId,StartDateTime,StartDate,SoldOut")] SportingEvent sportingEvent)
        {
            if (ModelState.IsValid)
            {
                _context.Add(sportingEvent);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["AwayTeamId"]    = new SelectList(_context.SportTeam, "Id", "Name", sportingEvent.AwayTeamId);
            ViewData["HomeTeamId"]    = new SelectList(_context.SportTeam, "Id", "Name", sportingEvent.HomeTeamId);
            ViewData["LocationId"]    = new SelectList(_context.SportLocation, "Id", "City", sportingEvent.LocationId);
            ViewData["SportTypeName"] = new SelectList(_context.SportType, "Name", "Name", sportingEvent.SportTypeName);
            return(View(sportingEvent));
        }
Пример #4
0
        public SportingEvent GetTodaysCubsGame(DateTime now)
        {
            SportingEvent cubsGame = new SportingEvent();

            cubsGame.LogoImageUrl = CubsLogoImageUrl;

            DateTime today = now;

            HtmlWeb      client   = new HtmlWeb();
            HtmlDocument document = client.Load(CubsScheduleUrl);

            if (!ReferenceEquals(document, null) && !ReferenceEquals(document.DocumentNode, null))
            {
                HtmlNode table = document.DocumentNode.SelectNode("//div[@id='my-teams-table']");
                if (!ReferenceEquals(table, null))
                {
                    HtmlNode dateElement = table.SelectNode(string.Format("//td//nobr[text()='{0}']", today.ToString("ddd, MMM d")));
                    if (!ReferenceEquals(dateElement, null))
                    {
                        HtmlNode gameRowElement = dateElement.ParentNode.ParentNode;

                        string gameStatusString = gameRowElement.SelectNodeValue("td//li[@class='game-status']");
                        cubsGame.IsHomeGame = String.Equals(gameStatusString, "vs", StringComparison.InvariantCultureIgnoreCase);

                        cubsGame.Opponent = gameRowElement.SelectNodeValue("td//li[@class='team-name']//a");

                        HtmlNode timeElement = gameRowElement.SelectNode("td[3]//a");
                        if (ReferenceEquals(timeElement, null))
                        {
                            timeElement = gameRowElement.SelectNode("td[3]");
                        }

                        cubsGame.DateTime = DateTime.Parse(timeElement.InnerHtml).AddHours(-1);
                        cubsGame.IsValid  = true;
                    }
                }
            }

            return(cubsGame);
        }
Пример #5
0
        static void Main(string[] args)
        {
            try
            {
                Console.WriteLine("Registering services");
                RegisterServices();

                List <EmailItemRow> emailItems = new List <EmailItemRow>();

                // create cubs row
                Console.WriteLine("Adding Cubs row");
                SportingEvent cubsGame = _sportsService.GetTodaysCubsGame();
                emailItems.Add(Mapper.Create(cubsGame));

                // create weather row
                Console.WriteLine("Adding weather forecast row");
                WeatherForecast weatherForecast = _weatherService.GetTodaysWeatherForecast();
                emailItems.Add(Mapper.Create(weatherForecast));

                // create train status row
                Console.WriteLine("Adding CTA status row");
                TrainStatus trainStatus = _transportationService.GetTrainStatus();
                emailItems.Add(Mapper.Create(trainStatus));

                // initialize email
                Console.WriteLine("Initializing email");
                string to              = ConfigurationManager.AppSettings[Constants.AppSettingKeys.Services.Email.To];
                string from            = ConfigurationManager.AppSettings[Constants.AppSettingKeys.Services.Email.From];
                string fromDisplayName =
                    ConfigurationManager.AppSettings[Constants.AppSettingKeys.Services.Email.FromDisplayName];
                string html = GetEmailTemplate("EmailTemplates/Base.html");

                Console.WriteLine("Replacing email template variables (rows)");
                foreach (EmailItemRow emailItem in emailItems)
                {
                    string rowHtml = GetEmailTemplate("EmailTemplates/ItemRow.html");
                    rowHtml = rowHtml.Replace("##ICON##", emailItem.Icon);
                    rowHtml = rowHtml.Replace("##TEXT##", emailItem.Text);

                    emailItem.Html = rowHtml;
                }

                html = html.Replace("##ITEMROWS##",
                                    String.Join(
                                        string.Empty,
                                        emailItems
                                        .Select(item => item.Html)
                                        .ToArray()));

                Console.WriteLine("Sending email");
                _emailService.SendEmail(
                    to,
                    from,
                    fromDisplayName,
                    "ESG - Daily Digest Email",
                    html);

                Console.WriteLine("Program finished");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.InnerException);
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);
                Console.WriteLine(ex.Data);
            }
        }