public async Task <Badge> ReplaceBadgeFileAsync(Badge badge, byte[] imageFile, string uploadFilename) { var existingBadge = await _badgeRepository.GetByIdAsync(badge.Id); if (File.Exists(existingBadge.Filename)) { File.Delete(existingBadge.Filename); } var imageType = ImageType.Png; if (!string.IsNullOrEmpty(uploadFilename)) { var uploadExtension = Path .GetExtension(uploadFilename) .ToLowerInvariant(); if (uploadExtension.EndsWith("jpg", StringComparison.OrdinalIgnoreCase) || uploadExtension.EndsWith("jpeg", StringComparison.OrdinalIgnoreCase)) { imageType = ImageType.Jpg; } } badge.Filename = await WriteBadgeFileAsync(existingBadge, imageFile, imageType); return(await _badgeRepository.UpdateSaveAsync(GetClaimId(ClaimType.UserId), badge)); }
public async Task <Badge> ReplaceBadgeFileAsync(Badge badge, byte[] imageFile) { var existingBadge = await _badgeRepository.GetByIdAsync(badge.Id); if (System.IO.File.Exists(existingBadge.Filename)) { System.IO.File.Delete(existingBadge.Filename); } badge.Filename = WriteBadgeFile(existingBadge, imageFile); return(await _badgeRepository.UpdateSaveAsync(GetClaimId(ClaimType.UserId), badge)); }
private async Task JoinedProgramNotificationBadge(User registeredUser) { var program = await _programRepository.GetByIdAsync(registeredUser.ProgramId); var site = await _siteRepository.GetByIdAsync(registeredUser.SiteId); var notification = new Notification { PointsEarned = 0, Text = $"<span class=\"fa fa-thumbs-o-up\"></span> You've successfully joined <strong>{site.Name}</strong>!", UserId = registeredUser.Id, IsJoining = true }; if (program.JoinBadgeId != null) { var badge = await _badgeRepository.GetByIdAsync((int)program.JoinBadgeId); await _badgeRepository.AddUserBadge(registeredUser.Id, badge.Id); await _userLogRepository.AddAsync(registeredUser.Id, new UserLog { UserId = registeredUser.Id, PointsEarned = 0, IsDeleted = false, BadgeId = badge.Id, Description = $"Joined {site.Name}!" }); notification.BadgeId = badge.Id; notification.BadgeFilename = badge.Filename; } await _notificationRepository.AddSaveAsync(registeredUser.Id, notification); }
public async Task SubmitQuestionnaire(int questionnaireId, int userId, int?userAge, IList <Question> questions) { var requiredQuestionnaires = await _requiredQuestionnaireRepository. GetForUser(GetCurrentSiteId(), userId, userAge); if (!requiredQuestionnaires.Contains(questionnaireId)) { _logger.LogError($"User {userId} is not eligible to answer questionnaire {questionnaireId}."); throw new GraException("Not eligible to answer that questionnaire."); } var questionnaire = await _questionnaireRepository.GetByIdAsync(questionnaireId, true); var questionnaireQuestions = questionnaire.Questions.Where(_ => _.Answers.Count > 0); if (questions.Select(_ => _.Id).Except(questionnaireQuestions.Select(_ => _.Id)).Any() || questionnaireQuestions.Count() != questions.Count) { _logger.LogError($"User {userId} submitted invalid questions for questionnaire {questionnaireId}."); throw new GraException("Invalid questions answered."); } foreach (var question in questionnaireQuestions) { if (!question.Answers.Select(_ => _.Id).Contains(questions .Where(_ => _.Id == question.Id) .Select(_ => _.ParticipantAnswer) .SingleOrDefault())) { _logger.LogError($"User {userId} submitted invalid answers for question {question.Id}."); throw new GraException("Invalid answer selected."); } } await _requiredQuestionnaireRepository.SubmitQuestionnaire(questionnaireId, userId, questions); if (questionnaire.BadgeId.HasValue) { await QuestionnaireNotificationBadge(questionnaire, userId); var badge = await _badgeRepository.GetByIdAsync(questionnaire.BadgeId.Value); await _badgeRepository.AddUserBadge(userId, questionnaire.BadgeId.Value); } }
private async Task AddBadgeFilename(Challenge challenge) { if (challenge.BadgeId != null) { var badge = await _badgeRepository.GetByIdAsync((int)challenge.BadgeId); if (badge != null) { challenge.BadgeFilename = badge.Filename; } } }
private async Task <Badge> AwardBadgeAsync(int userId, int?badgeId) { Badge badge = null; if (badgeId != null) { badge = await _badgeRepository.GetByIdAsync((int)badgeId); await _badgeRepository.AddUserBadge(userId, (int)badgeId); } return(badge); }
public async Task <Badge> GetByIdAsync(int badgeId) { return(await _badgeRepository.GetByIdAsync(badgeId)); }