I am a C# beginner, and I wrote a program that parses the weekly menu of a German delivery service. It works fine and I think the code quality is okay. Can anyone with more experience than me review my code?
using HtmlAgilityPack;
namespace FMReader
{
internal class Program
{
static void Main(string[] args)
{
HtmlWeb htmlweb = new HtmlWeb();
var webpage = htmlweb.Load(@"https://bestellung.fm-teistungen.de/de/menu/56/2022-06-20/2022-06-26/");
List<Menu> menus1OfTheWeek = new List<Menu>();
List<Menu> menus2OfTheWeek = new List<Menu>();
List<string> weekdays = new List<string>() { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" };
foreach (var menu1 in webpage.DocumentNode.SelectNodes("//td[@mealid='11']"))
{
var currentMenuAsString = menu1.InnerText.Trim();
Menu currentMenu = new Menu() { Description = currentMenuAsString, MenuType = MenuType.Menu1, Price = 1.5 };
menus1OfTheWeek.Add(currentMenu);
}
foreach (var menu2 in webpage.DocumentNode.SelectNodes("//td[@mealid='12']"))
{
var currentMenuAsString = menu2.InnerText.Trim();
Menu currentMenu = new Menu() { Description = currentMenuAsString, MenuType = MenuType.Menu2, Price = 1.5 };
menus2OfTheWeek.Add(currentMenu);
}
foreach (var day in weekdays)
{
Console.WriteLine($"{day}");
var index = weekdays.IndexOf(day);
menus1OfTheWeek[index].PrintProperties();
menus2OfTheWeek[index].PrintProperties();
Console.WriteLine();
Console.WriteLine();
}
}
}
}
Related classes are:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FMReader
{
public class Menu
{
public MenuType MenuType { get; set; }
public double Price { get; set; }
public string? Description { get; set; }
public void PrintProperties()
{
Console.WriteLine($"{Description} {Environment.NewLine} Price: {Price} EUR {Environment.NewLine} Menu: {MenuType}");
}
}
}
and
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FMReader
{
public enum MenuType
{
Menu1,
Menu2
}
}