public IActionResult Save([FromBody] TeamAnswerViewModel viewModel) { if (viewModel != null && viewModel.Details != null) { foreach (var detail in viewModel.Details) { var teamAnswer = _TeamAnswerRepository.RetrieveFirstOrDefault(ta => ta.Id == detail.Id); teamAnswer.Score = detail.Score; teamAnswer.IsDone = true; _TeamAnswerRepository.Update(teamAnswer); } } return(Ok(ServiceResponse.Ok())); }
public IActionResult GetById(Guid teamId) { TeamAnswerViewModel model = null; var team = _TeamRepository.GetAll(t => t.Id == teamId).FirstOrDefault(); if (team != null) { var teamAnswers = _TeamAnswerRepository.GetByTeamIdWithQuestion(teamId); model = new TeamAnswerViewModel { Id = team.Id, Name = team.Name, QuestName = team.Quest?.Name, Score = teamAnswers.Where(ta => ta.IsDone).Sum(ta => ta.Score), Time = team.Quest != null ? team.Quest.Duration : 0 }; if (team.BeginDate.HasValue && team.FinishDate.HasValue) { model.Time = (int)(team.FinishDate.Value - team.BeginDate.Value).TotalMinutes; } model.Details = new List <TeamAnswerViewDetails>(); foreach (var answer in teamAnswers) { var detailsModel = new TeamAnswerViewDetails { GroupName = answer.Question?.Group?.Name, QuestionId = answer.QuestionId ?? Guid.Empty, QuestionText = answer.Question?.Text, Score = answer.IsDone ? answer.Score : 0, Id = answer.Id, Answer = answer.Answer, IsHintUsed = answer.IsHintUsed }; model.Details.Add(detailsModel); } } return(Ok(ServiceResponse.Ok(model))); }
public IActionResult GetAll() { var model = new List <TeamAnswerViewModel>(); var teams = _TeamRepository.GetAll(); foreach (var team in teams) { var teamModel = new TeamAnswerViewModel { Id = team.Id, Name = team.Name, QuestName = team.Quest?.Name, Score = _TeamAnswerRepository.GetTeamScore(team.Id), Time = 0 }; if (team.BeginDate.HasValue) { if (team.FinishDate.HasValue) { teamModel.Time = (int)(team.FinishDate.Value - team.BeginDate.Value).TotalMinutes; } else { teamModel.Time = (int)(DateTime.UtcNow - team.BeginDate.Value).TotalMinutes; } } if (team.Quest != null && teamModel.Time > team.Quest.Duration) { teamModel.Time = team.Quest.Duration; } model.Add(teamModel); } return(Ok(ServiceResponse.Ok(model))); }