Generic Service

JSON Reference loop
Events
This commit is contained in:
2018-10-07 03:03:38 +02:00
parent 642d533a49
commit 9a9d4c7053
12 changed files with 270 additions and 117 deletions

View File

@@ -7,9 +7,9 @@ using System.Security.Cryptography.X509Certificates;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore; using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Hosting.Internal;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
namespace LaDOSE.Api namespace LaDOSE.Api
{ {
public class Program public class Program

View File

@@ -41,7 +41,7 @@ namespace LaDOSE.Api
var MySqlUser = this.Configuration["MySql:User"]; var MySqlUser = this.Configuration["MySql:User"];
var MySqlPassword = this.Configuration["MySql:Password"]; var MySqlPassword = this.Configuration["MySql:Password"];
services.AddCors(); services.AddCors();
services.AddMvc(); services.AddMvc().AddJsonOptions(x => x.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);
services.AddDbContextPool<LaDOSEDbContext>( // replace "YourDbContext" with the class name of your DbContext services.AddDbContextPool<LaDOSEDbContext>( // replace "YourDbContext" with the class name of your DbContext
options => options.UseMySql($"Server={MySqlServer};Database={MySqlDatabase};User={MySqlUser};Password={MySqlPassword};", // replace with your Connection String options => options.UseMySql($"Server={MySqlServer};Database={MySqlDatabase};User={MySqlUser};Password={MySqlPassword};", // replace with your Connection String
mysqlOptions => mysqlOptions =>

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<Event> Event { get; set; }
//public DbSet<SeasonGame> SeasonGame { get; set; } //public DbSet<SeasonGame> SeasonGame { get; set; }
public LaDOSEDbContext(DbContextOptions options) : base(options) public LaDOSEDbContext(DbContextOptions options) : base(options)
@@ -21,7 +22,10 @@ namespace LaDOSE.Entity.Context
modelBuilder.Entity<SeasonGame>() modelBuilder.Entity<SeasonGame>()
.HasKey(t => new { t.SeasonId, t.GameId }); .HasKey(t => new { t.SeasonId, t.GameId });
modelBuilder.Entity<Event>()
.HasOne(s => s.Season)
.WithMany(p => p.Event)
.HasForeignKey(fk => fk.SeasonId);
modelBuilder.Entity<SeasonGame>() modelBuilder.Entity<SeasonGame>()
.HasOne(pt => pt.Season) .HasOne(pt => pt.Season)

View File

@@ -0,0 +1,17 @@
using System;
using System.ComponentModel.DataAnnotations;
namespace LaDOSE.Entity
{
public class Event
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public DateTime Date { get; set; }
public int SeasonId { get; set; }
public Season Season { get; set; }
public bool Ranking { get; set; }
}
}

View File

@@ -14,5 +14,7 @@ namespace LaDOSE.Entity
public DateTime EndDate { get; set; } public DateTime EndDate { get; set; }
public virtual IEnumerable<SeasonGame> Games { get; set; } public virtual IEnumerable<SeasonGame> Games { get; set; }
public virtual IEnumerable<Event> Event { get; set; }
} }
} }

View File

@@ -0,0 +1,13 @@
using System.Collections.Generic;
namespace LaDOSE.Business.Interface
{
public interface IBaseService<T> where T : class
{
IEnumerable<T> GetAll();
T GetById(int id);
T Create(T entity);
bool Update(T entity);
bool Delete(int id);
}
}

View File

@@ -0,0 +1,9 @@
using LaDOSE.Entity;
namespace LaDOSE.Business.Interface
{
public interface IEventService : IBaseService<Event>
{
}
}

View File

@@ -3,13 +3,8 @@ using LaDOSE.Entity;
namespace LaDOSE.Business.Interface namespace LaDOSE.Business.Interface
{ {
public interface IGameService public interface IGameService : IBaseService<Game>
{ {
IEnumerable<Game> GetAll();
Game GetById(int id);
Game Create(Game game);
bool Update(Game game);
void Delete(int id);
} }
} }

View File

@@ -0,0 +1,44 @@
using System.Collections.Generic;
using System.Linq;
using LaDOSE.Business.Interface;
using LaDOSE.Entity.Context;
using Microsoft.EntityFrameworkCore;
namespace LaDOSE.Business.Service
{
public class BaseService<T> : IBaseService<T> where T : class
{
protected LaDOSEDbContext _context;
public BaseService(LaDOSEDbContext context)
{
this._context = context;
}
public virtual IEnumerable<T> GetAll()
{
return _context.Set<T>().ToList();
}
public virtual T GetById(int id)
{
return _context.Find<T>(id);
}
public virtual T Create(T entity)
{
var added = _context.Add(entity);
return added.Entity;
}
public virtual bool Update(T entity)
{
var entityEntry = _context.Update(entity);
return _context.Entry(entityEntry).State == EntityState.Unchanged;
}
public virtual bool Delete(int id)
{
var find = _context.Find<T>(id);
_context.Remove(find);
return _context.Entry(find).State == EntityState.Deleted;
}
}
}

View File

@@ -0,0 +1,26 @@
using System;
using LaDOSE.Business.Interface;
using LaDOSE.Entity;
using LaDOSE.Entity.Context;
namespace LaDOSE.Business.Service
{
public class EventService : BaseService<Event>, IEventService
{
public EventService(LaDOSEDbContext context) : base(context)
{
}
public override Event Create(Event e)
{
if (e.Id != 0)
{
throw new Exception("Id is invalid");
}
var eventAdded = _context.Event.Add(e);
_context.SaveChanges();
return eventAdded.Entity;
}
}
}

View File

@@ -8,64 +8,18 @@ using Microsoft.EntityFrameworkCore;
namespace LaDOSE.Business.Service namespace LaDOSE.Business.Service
{ {
public class GameService : IGameService public class GameService : BaseService<Game> ,IGameService
{ {
private LaDOSEDbContext _context;
public GameService(LaDOSEDbContext context) public GameService(LaDOSEDbContext context) : base(context)
{ {
_context = context;
} }
public IEnumerable<Game> GetAll() public override IEnumerable<Game> GetAll()
{ {
return _context.Game.Include(e => e.Seasons).ToList(); 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();
}
} }
} }

View File

@@ -1,80 +1,169 @@
-- MySQL dump 10.13 Distrib 5.7.12, for Win64 (x86_64) -- phpMyAdmin SQL Dump
-- version 4.6.4
-- https://www.phpmyadmin.net/
-- --
-- Host: 127.0.0.1 Database: ladose -- Host: localhost
-- ------------------------------------------------------ -- Generation Time: Oct 06, 2018 at 10:12 PM
-- Server version 5.5.5-10.1.16-MariaDB -- Server version: 5.6.40-log
-- PHP Version: 7.1.18
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */; /*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-- --
-- Table structure for table `applicationuser` -- Database: `ladoseapi`
-- --
DROP TABLE IF EXISTS `applicationuser`; -- --------------------------------------------------------
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */; --
CREATE TABLE `applicationuser` ( -- Table structure for table `ApplicationUser`
`id` int(11) NOT NULL AUTO_INCREMENT, --
CREATE TABLE `ApplicationUser` (
`Id` int(11) NOT NULL,
`FirstName` varchar(45) DEFAULT NULL, `FirstName` varchar(45) DEFAULT NULL,
`LastName` varchar(45) DEFAULT NULL, `LastName` varchar(45) DEFAULT NULL,
`Username` varchar(45) DEFAULT NULL, `UserName` varchar(45) DEFAULT NULL,
`PasswordHash` blob, `PasswordHash` blob,
`PasswordSalt` blob, `PasswordSalt` blob
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `game`
--
DROP TABLE IF EXISTS `game`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `game` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(45) CHARACTER SET utf8 DEFAULT NULL,
`imgurl` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `saison`
--
DROP TABLE IF EXISTS `saison`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `saison` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(45) NOT NULL,
`datedebut` datetime NOT NULL,
`datefin` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
-- --------------------------------------------------------
-- --
-- Table structure for table `user` -- Table structure for table `Event`
-- --
CREATE TABLE `Event` (
`Id` int(11) NOT NULL,
`Name` varchar(255) NOT NULL,
`Date` datetime NOT NULL,
`SeasonId` int(11) NOT NULL,
`Ranking` tinyint(4) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `Game`
--
CREATE TABLE `Game` (
`Id` int(11) NOT NULL,
`Name` varchar(45) CHARACTER SET utf8 DEFAULT NULL,
`ImgUrl` varchar(255) CHARACTER SET utf8 DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- --------------------------------------------------------
--
-- Table structure for table `Season`
--
CREATE TABLE `Season` (
`Id` int(11) NOT NULL,
`Name` varchar(45) DEFAULT NULL,
`StartDate` datetime DEFAULT NULL,
`EndDate` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `SeasonGame`
--
CREATE TABLE `SeasonGame` (
`SeasonId` int(11) NOT NULL,
`GameId` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `ApplicationUser`
--
ALTER TABLE `ApplicationUser`
ADD PRIMARY KEY (`Id`);
--
-- Indexes for table `Event`
--
ALTER TABLE `Event`
ADD PRIMARY KEY (`Id`),
ADD KEY `SeasonPK_idx` (`SeasonId`);
--
-- Indexes for table `Game`
--
ALTER TABLE `Game`
ADD PRIMARY KEY (`Id`),
ADD UNIQUE KEY `name_UNIQUE` (`Name`);
--
-- Indexes for table `Season`
--
ALTER TABLE `Season`
ADD PRIMARY KEY (`Id`),
ADD UNIQUE KEY `Name_UNIQUE` (`Name`);
--
-- Indexes for table `SeasonGame`
--
ALTER TABLE `SeasonGame`
ADD PRIMARY KEY (`SeasonId`,`GameId`),
ADD KEY `GamePK_idx` (`GameId`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `ApplicationUser`
--
ALTER TABLE `ApplicationUser`
MODIFY `Id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
--
-- AUTO_INCREMENT for table `Event`
--
ALTER TABLE `Event`
MODIFY `Id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
--
-- AUTO_INCREMENT for table `Game`
--
ALTER TABLE `Game`
MODIFY `Id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
--
-- AUTO_INCREMENT for table `Season`
--
ALTER TABLE `Season`
MODIFY `Id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
--
-- Constraints for dumped tables
--
--
-- Constraints for table `Event`
--
ALTER TABLE `Event`
ADD CONSTRAINT `SeasonsPK` FOREIGN KEY (`SeasonId`) REFERENCES `Season` (`Id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
--
-- Constraints for table `SeasonGame`
--
ALTER TABLE `SeasonGame`
ADD CONSTRAINT `GamePK` FOREIGN KEY (`GameId`) REFERENCES `Game` (`Id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD CONSTRAINT `SeasonPK` FOREIGN KEY (`SeasonId`) REFERENCES `Season` (`Id`) ON DELETE NO ACTION ON UPDATE NO ACTION;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;