Adding the rest tasks

This commit is contained in:
2025-08-20 09:48:54 +02:00
parent 5c039177da
commit 1d171b9e76

View File

@@ -1,3 +1,5 @@
using System.Diagnostics;
using System.Reflection.Metadata;
using Microsoft.Extensions.DependencyInjection;
namespace DependencyInjections
@@ -33,12 +35,32 @@ namespace DependencyInjections
serviceCollection.AddTransient<NotificationService>();
bool UseSQL = false;
if (UseSQL)
{
serviceCollection.AddTransient<IProductRepository, SqlProductRepository>();
}
else
{
serviceCollection.AddSingleton<IProductRepository, InMemoryProductReposity>();
}
serviceCollection.AddTransient<ProductService>();
serviceCollection.AddTransient<IGameEngine, GuessNumberGame>();
serviceCollection.AddTransient<IGameEngine, RockPaperScissorsGame>();
serviceCollection.AddTransient<GameManager>();
var sp = serviceCollection.BuildServiceProvider();
sp.GetRequiredService<UserService>().Log();
sp.GetRequiredService<CheckoutService>().process();
sp.GetRequiredService<NotificationService>().SendNotification("Hello, There");
sp.GetRequiredService<ProductService>().SeedProducts();
sp.GetRequiredService<ProductService>().DisplayAllProducts();
sp.GetRequiredService<GameManager>().Start();
}
}
@@ -162,4 +184,179 @@ namespace DependencyInjections
}
}
}
public interface IProductRepository
{
List<string> GetAllProducts();
void AddProduct(string name);
}
public class InMemoryProductReposity : IProductRepository
{
List<string> products = new List<string>();
public void AddProduct(string name)
{
products.Add(name);
}
public List<string> GetAllProducts()
{
return products;
}
}
public class SqlProductRepository : IProductRepository
{
public void AddProduct(string name)
{
Console.WriteLine($"Wrote {name} to SQL Database");
}
public List<string> GetAllProducts()
{
Console.WriteLine("Got all products from SQL Database");
return new List<string>();
}
}
public class ProductService
{
private readonly IProductRepository productRepository;
public ProductService(IProductRepository productRepository)
{
this.productRepository = productRepository;
}
public void SeedProducts()
{
productRepository.AddProduct("Skovl");
productRepository.AddProduct("Spade");
productRepository.AddProduct("Spand");
productRepository.AddProduct("Teslacoil");
}
public void DisplayAllProducts()
{
foreach (var prod in productRepository.GetAllProducts())
{
Console.WriteLine($"Got: {prod}");
}
}
}
public interface IGameEngine
{
void Play();
}
public class GuessNumberGame : IGameEngine
{
public void Play()
{
int rightNumber = new Random().Next(1, 11);
Console.WriteLine("Guess number between 1 and 10");
var readline = Console.ReadLine();
if (int.TryParse(readline, out var number))
{
if (number.Equals(rightNumber))
{
Console.WriteLine("You won.");
}
else
{
Console.WriteLine("WRONG");
}
}
else
{
Console.WriteLine("Is that even a number?");
}
}
}
public class RockPaperScissorsGame : IGameEngine
{
public void Play()
{
var posibilities = new List<string>()
{
"scissor",
"paper",
"rock",
};
Console.WriteLine("Choose between");
for (int i = 0; i < posibilities.Count; i++)
{
Console.WriteLine($"{i}: {posibilities[i]}");
}
var readline = Console.ReadLine();
if (int.TryParse(readline, out var number))
{
if (number > posibilities.Count)
{
Console.WriteLine("Must choose inside the range");
}
var computerPlay = new Random().Next(0, 3);
Console.WriteLine($"Computer choose: {posibilities[computerPlay]}");
if (computerPlay > number || (computerPlay == 0 && number == 2))
{
Console.WriteLine("Computer won...");
}
else
{
Console.WriteLine("You won");
}
}
else
{
Console.WriteLine("Is that even a number?");
}
}
}
public class GameManager
{
private readonly IEnumerable<IGameEngine> gameEngines;
public GameManager(IEnumerable<IGameEngine> gameEngines)
{
this.gameEngines = gameEngines;
}
public void Start()
{
Console.WriteLine("Choose game");
for (int i = 0; i < gameEngines.Count(); i++)
{
Console.WriteLine(i + ": " + gameEngines.ToList()[i].GetType().Name);
}
var readline = Console.ReadLine();
if (int.TryParse(readline, out var number))
{
if (number > gameEngines.Count())
{
Console.WriteLine("Must be in range");
}
else
{
gameEngines.ToList()[number].Play();
}
}
}
}
}