public async Task <Model.Training> AddAsync(Model.Training training)
        {
            _context.Add(training);
            await _context.SaveChangesAsync();

            return(training);
        }
        public async Task <Model.Training> UpdateAsync(int id, Model.Training training)
        {
            if (training == null)
            {
                throw new ArgumentNullException(nameof(training));
            }

            var model   = _mapper.Map <DA.Model.Training>(training);
            var updated = await _repository.UpdateAsync(id, model);

            return(_mapper.Map <BL.Model.Training>(updated));
        }
        public async Task <Model.Training> AddAsync(Model.Training training)
        {
            if (training == null)
            {
                throw new ArgumentNullException(nameof(training));
            }

            var model = _mapper.Map <DA.Model.Training>(training);
            var added = await _repository.AddAsync(model);

            return(_mapper.Map <BL.Model.Training>(added));
        }
        public async Task <Model.Training> UpdateAsync(int id, Model.Training training)
        {
            var exist = await _context.Trainings.AnyAsync(t => t.Id == id);

            if (!exist)
            {
                return(null);
            }
            training.Id = id;
            _context.Trainings.Update(training);
            await _context.SaveChangesAsync();

            return(training);
        }
        public Contract.Training Add(Contract.Training training)
        {
            Model.Training dbTraining = AddMetaData(training);
            if (dbTraining.TrainingId == 0)
            {
                Console.WriteLine("fdsa");
            }
            AddPhoto(training.Pictures, dbTraining.TrainingId);
            AddGpx(training.Gpx, dbTraining.TrainingId);

            training.ExternalIdList.ForAll(x => UpdateExternalId(dbTraining.TrainingId, x.Key, x.Value));

            return(this.Mapper.Map <Contract.Training>(dbTraining));
        }
        private Model.Training AddMetaData(Contract.Training training)
        {
            Model.Training dbTraining = this.Mapper.Map <Model.Training>(training);
            var            t          = this.Context.Training.SingleOrDefault(x => x.Account == training.Account && x.Start == training.Start && x.End == training.End && x.Sport == training.Sport);

            if (t == null)
            {
                this.Context.Training.Add(dbTraining);
                this.Context.SaveChanges();
                return(dbTraining);
            }
            else
            {
                return(t);
            }
        }
        public async Task Update_ShouldUpdate_And_ReturnUpdatedEntity()
        {
            using (var connection = new SqliteConnection("DataSource=:memory:"))
            {
                connection.Open();

                // Setup
                var options = new DbContextOptionsBuilder <DotNetCoreTrainingContext>()
                              .UseSqlite(connection)
                              .Options;

                using (var context = new DotNetCoreTrainingContext(options))
                {
                    await context.Database.EnsureCreatedAsync();
                }
                var model = new Model.Training
                {
                    TrainerId = 1,
                    Name      = "Test training 111",
                    StartDate = DateTime.Today,
                    EndDate   = DateTime.Today
                };

                // Act
                Model.Training result;
                using (var context = new DotNetCoreTrainingContext(options))
                {
                    var repo = new TrainingRepository(context);
                    result = await repo.UpdateAsync(2, model);
                }

                // Assert
                Assert.NotNull(result);
                Assert.Equal(model.Name, result.Name);
                Assert.Equal(model.StartDate, result.StartDate);
                Assert.Equal(model.EndDate, result.EndDate);
            }
        }