using Apollon.Domain.Commands;
using Apollon.Domain.Models;
using Apollon.EntityFramework.DTOs;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Apollon.EntityFramework.Commands
{
    public class CreateTournamentCommand : ICreateTournamentCommand
    {
        private readonly TournamentsDbContextFactory _contextFactory;

        public CreateTournamentCommand(TournamentsDbContextFactory contextFactory)
        {
            _contextFactory = contextFactory;
        }

        public  async Task Execute(Tournament tournament)
        {     
            using (TournamentsDbContext context = _contextFactory.Create())
            {        
                TournamentDto tournamentDto = new TournamentDto()
                {
                    Id = tournament.Id,
                    Logo = tournament.Logo,
                    Organisation = tournament.Organisation,
                    TournamentName = tournament.TournamentName,
                    Competition = tournament.Competition,  
                    CompetitionImage = tournament.CompetitionImage,
                    StartDate = tournament.StartDate,
                    EndDate = tournament.EndDate,
                    Location = tournament.Location,
                    Rounds = tournament.Rounds,
                };

                context.Tournaments.Add(tournamentDto);
                await context.SaveChangesAsync();
            }
        }
    }    
}
