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));
        }
Exemple #2
0
        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));
        }