Test Many to many

This commit is contained in:
2018-10-06 14:16:42 +02:00
parent d3cdc93c14
commit 5bb8ecb65b
8 changed files with 142 additions and 12 deletions

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using LaDOSE.Business.Interface;
using LaDOSE.Entity; using LaDOSE.Entity;
using LaDOSE.Entity.Context; using LaDOSE.Entity.Context;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
@@ -15,28 +16,33 @@ namespace LaDOSE.Api.Controllers
public class GameController : ControllerBase public class GameController : ControllerBase
{ {
private readonly LaDOSEDbContext _db; private readonly IGameService _gameService;
public GameController(LaDOSEDbContext db) public GameController(IGameService gameService)
{ {
_db = db; _gameService = gameService;
} }
// GET api/Config // GET api/Game
[HttpGet] [HttpGet]
public List<Game> Get() public List<Game> Get()
{ {
return _db.Game.ToList(); return _gameService.GetAll().ToList();
} }
// GET api/Config/5 // GET api/Game/5
[HttpGet("{id}")] [HttpGet("{id}")]
public Game Get(int id) public Game Get(int id)
{ {
return _db.Game.FirstOrDefault(e=>e.Id==id); return _gameService.GetById(id);
} }
[HttpPut()]
public bool Put(Game game)
{
return _gameService.Update(game);
}
} }
} }

View File

@@ -87,6 +87,7 @@ namespace LaDOSE.Api
// configure DI for application services // configure DI for application services
services.AddScoped<IUserService, UserService>(); services.AddScoped<IUserService, UserService>();
services.AddScoped<IGameService, GameService>();
} }

View File

@@ -7,6 +7,7 @@ namespace LaDOSE.Entity.Context
public DbSet<Game> Game { get; set; } public DbSet<Game> Game { get; set; }
public DbSet<ApplicationUser> ApplicationUser { get; set; } public DbSet<ApplicationUser> ApplicationUser { get; set; }
public DbSet<Season> Season { get; set; } public DbSet<Season> Season { get; set; }
//public DbSet<SeasonGame> SeasonGame { get; set; }
public LaDOSEDbContext(DbContextOptions options) : base(options) public LaDOSEDbContext(DbContextOptions options) : base(options)
{ {
@@ -14,7 +15,24 @@ namespace LaDOSE.Entity.Context
protected override void OnModelCreating(ModelBuilder modelBuilder) protected override void OnModelCreating(ModelBuilder modelBuilder)
{ {
base.OnModelCreating(modelBuilder); base.OnModelCreating(modelBuilder);
modelBuilder.Entity<SeasonGame>()
.HasKey(t => new { t.SeasonId, t.GameId });
modelBuilder.Entity<SeasonGame>()
.HasOne(pt => pt.Season)
.WithMany(p => p.Games)
.HasForeignKey(pt => pt.GameId);
modelBuilder.Entity<SeasonGame>()
.HasOne(pt => pt.Game)
.WithMany(p => p.Seasons)
.HasForeignKey(pt => pt.SeasonId);
} }
} }

View File

@@ -1,11 +1,16 @@
using System; using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace LaDOSE.Entity namespace LaDOSE.Entity
{ {
public class Game public class Game
{ {
[Key]
public int Id { get; set; } public int Id { get; set; }
public string Name { get; set; } public string Name { get; set; }
public string ImgUrl { get; set; } public string ImgUrl { get; set; }
public virtual IEnumerable<SeasonGame> Seasons { get; set; }
} }
} }

View File

@@ -1,15 +1,18 @@
using System; using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace LaDOSE.Entity namespace LaDOSE.Entity
{ {
public class Season public class Season
{ {
[Key]
public int Id { get; set; } public int Id { get; set; }
public string Name { get; set; } public string Name { get; set; }
public DateTime StartDate { get; set; } public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; } public DateTime EndDate { get; set; }
public virtual IEnumerable<SeasonGame> Games { get; set; }
} }
} }

View File

@@ -0,0 +1,11 @@
namespace LaDOSE.Entity
{
public class SeasonGame
{
public int GameId { get; set; }
public Game Game { get; set; }
public int SeasonId { get; set; }
public Season Season { get; set; }
}
}

View File

@@ -0,0 +1,15 @@
using System.Collections.Generic;
using LaDOSE.Entity;
namespace LaDOSE.Business.Interface
{
public interface IGameService
{
IEnumerable<Game> GetAll();
Game GetById(int id);
Game Create(Game game);
bool Update(Game game);
void Delete(int id);
}
}

View File

@@ -0,0 +1,71 @@
using System;
using System.Collections.Generic;
using System.Linq;
using LaDOSE.Business.Interface;
using LaDOSE.Entity;
using LaDOSE.Entity.Context;
using Microsoft.EntityFrameworkCore;
namespace LaDOSE.Business.Service
{
public class GameService : IGameService
{
private LaDOSEDbContext _context;
public GameService(LaDOSEDbContext context)
{
_context = context;
}
public IEnumerable<Game> GetAll()
{
return _context.Game.Include(e => e.Seasons).ToList();
}
public Game GetById(int id)
{
return _context.Game.Include(e => e.Seasons).FirstOrDefault(e=>e.Id == id);
}
public Game Create(Game game)
{
if (game.Id != 0)
{
throw new Exception("Id is invalid");
}
var gameAdded = _context.Game.Add(game);
_context.SaveChanges();
return gameAdded.Entity;
}
public bool Update(Game game)
{
if (game.Id == 0)
{
throw new Exception("Id is invalid");
}
var gameUpdated = _context.Game.FirstOrDefault(e => e == game);
gameUpdated = game;
try
{
_context.SaveChanges();
return true;
}
catch (Exception e)
{
Console.WriteLine(e);
}
return false;
}
public void Delete(int id)
{
throw new NotImplementedException();
}
}
}