public ActionResult Add(int id) { var currentUser = _context.GetActiveUser(this.HttpContext); if (!_context.IsCoach(id, currentUser)) { return(RedirectToAction("Open", "Team", new { id = id })); } var team = _context.Teams.Include(m => m.Members).ThenInclude(m => m.User).FirstOrDefault(m => m.Id == id); if (team == null) { return(RedirectToAction("Index")); } var viewModel = new TeamTrainingViewModel(id); viewModel.Trainings = new List <TrainingViewModel>() { new TrainingViewModel() { Tasks = new List <TaskViewModel>() { new TaskViewModel() } } }; // Can't assign training to coach. viewModel.Members = team.Members.Select(m => new KeyValuePair <string, string>(m.UserId, m.User.FullName)).ToList(); viewModel.Exercises = _context.Exercises.Select(m => new KeyValuePair <int?, string>(m.Id.Value, m.Name)).ToList(); viewModel.Exercises.Insert(0, new KeyValuePair <int?, string>(null, string.Empty)); return(View(viewModel)); }
public static TeamTraining MapTeamTraining(TeamTrainingViewModel teamTraining, ApplicationDbContext context) { var result = new TeamTraining() { TeamId = teamTraining.Team, Name = teamTraining.Name, Date = teamTraining.Date }; foreach (var training in teamTraining.Trainings) { var resultTraining = new Training() { User = context.Users.FirstOrDefault(m => m.Id == training.User) }; foreach (var task in training.Tasks) { var resultTask = new Task() { Repetition = task.Repetition, Time = task.Time, Exercise = context.Exercises.FirstOrDefault(m => m.Id == task.Exercise) }; resultTraining.Tasks.Add(resultTask); } result.Trainings.Add(resultTraining); } return(result); }
public ActionResult Save(TeamTrainingViewModel teamTraining) { if (!_context.IsCoach(teamTraining.Team, _context.GetActiveUser(this.HttpContext))) { return(RedirectToAction("Open", "Team", new { id = teamTraining.Team })); } if (!this.ModelState.IsValid) { return(View("Add", teamTraining)); } using (var transaction = _context.Database.BeginTransaction()) { var training = _context.TeamTrainings.Include(m => m.Trainings).ThenInclude(m => m.Tasks).ThenInclude(m => m.Exercise).FirstOrDefault(m => m.Id == teamTraining.TeamTrainingId && m.TeamId == teamTraining.Team); try { if (training != null) { _context.TeamTrainings.Remove(training); _context.SaveChanges(); } var result = Mapper.MapTeamTraining(teamTraining, _context); var team = _context.Teams.Include(m => m.TeamTrainings).Include(m => m.Members).FirstOrDefault(m => m.Id == teamTraining.Team); if (team != null) { team.TeamTrainings.Add(result); _context.Teams.Update(team); _context.SaveChanges(); } transaction.Commit(); } catch (Exception ex) { _logger.LogError(ex.Message); transaction.Rollback(); throw; } } return(RedirectToAction("Open", "Team", new { id = teamTraining.Team })); }
public ActionResult Edit(int?id) { if (!id.HasValue) { return(NotFound()); } var result = new TeamTrainingViewModel(); try { result = new TeamTrainingViewModel(_context, id.Value); } catch (Exception) { return(RedirectToAction("Index")); } var currentUser = _context.GetActiveUser(this.HttpContext); if (!_context.IsCoach(result.Team, currentUser)) { return(RedirectToAction("Open", "Team", new { id = result.Team })); } var team = _context.Teams.Include(m => m.Members).ThenInclude(m => m.User).FirstOrDefault(m => m.Id == result.Team); if (team == null) { return(RedirectToAction("Index")); } result.Members = team.Members.Select(m => new KeyValuePair <string, string>(m.UserId, m.User.FullName)).ToList(); result.Exercises = _context.Exercises.Select(m => new KeyValuePair <int?, string>(m.Id.Value, m.Name)).ToList(); result.Exercises.Insert(0, new KeyValuePair <int?, string>(null, string.Empty)); return(View("Add", result)); }