public async Task <bool> UpdateTraining(UpdateTrainingDto trainingToUpdate) { var request = new RestRequest($"/api/trainings/UpdateTraining", Method.POST, DataFormat.Json); request.AddJsonBody(trainingToUpdate); var result = await this.ExecuteAsync <bool>(request); return(result); }
public async Task <IActionResult> UpdateTraining(UpdateTrainingDto input) { this.Logger.LogInformation($"Update training '{input.Id}'"); var training = this.trainingRepository.GetById(input.Id); if (training == null) { // Training not found // TODO - Log and return error return(null); } training.IsBonus = input.IsBonus; // Date already is in UTC, but is converted to UTC again, so set back to local one time. training.TrainingDate = input.TrainingDate.ToLocalTime(); var current = training.TrainingPlayers.Select(tp => tp.PlayerID); // Add new var attendeesToAdd = input.Attendees.Except(current).ToList(); foreach (var newAttendee in attendeesToAdd) { training.TrainingPlayers.Add(new PlayerTraining { TrainingID = training.Id, PlayerID = newAttendee }); } ; // Remove old var attendeesToRemove = current.Except(input.Attendees).ToList(); foreach (var oldAttendee in attendeesToRemove) { training.TrainingPlayers.RemoveAll(tp => tp.PlayerID == oldAttendee); } var result = await this.trainingRepository.UpdateAsync(training); return(Ok(true)); }
public async Task <bool> UpdateTrainingAsync(UpdateTrainingDto training) { DateTime.SpecifyKind(training.TrainingDate, DateTimeKind.Utc); return(await this.RankixApi.UpdateTraining(training)); }