private void SendMailToPeers(IEnumerable<UserProfile> peers, int reviewId, UserProfile owner) { foreach (var peer in peers) { const string subject = "Provide Review"; var sender = DefaultContactEmail; var receiver = peer.EmailAddress; var body = GetMailBodyForStartedReview(peer.UserName, reviewId, owner); Send(sender, receiver, subject, body); } }
private static string GetMailBodyForStartedReview(string userName, int reviewId, UserProfile owner) { return String.Format( @"Hi there, {0}, you have been invited by {2} ({3}) to provide a review. This helps improve your team's and your own performance. Please visit the following link to provide the review: http://www.teamreview.net/Feedback/Provide/{1} If you would like to find out more about TeamReview, feel free to visit http://www.teamreview.net/. In case you have any questions, just reply to this email and we will get in touch with you as soon as possible. Thank you for your time and cheers, Andrej - Masterchief Head of Design of TeamReview.net ", userName, reviewId, owner.UserName, owner.EmailAddress); }
private static void VerifyIntegrityOfLoggedInUser(string loggedInUserEmail, bool myRatingsOnly, UserProfile peer) { if (myRatingsOnly && peer.EmailAddress != loggedInUserEmail) { throw new ArgumentException("There's a mismatch between the logged in user and the requested peer!", "loggedInUserEmail"); } }
private static ReportDataRow TeamRatingsOverTime(IEnumerable<ReviewRound> reviewRounds, UserProfile ratedUser, ReviewCategory category) { var title = ratedUser != null ? ratedUser.UserName + " (by team)" : "team (by team)"; return CreateReportDataRow(reviewRounds, ratedUser, category, title, false); }
private static ReportDataRow OwnRatingsOverTime(IEnumerable<ReviewRound> reviewRounds, UserProfile ratedUser, ReviewCategory category) { var title = string.Format("{0} (by {0})", ratedUser.UserName); return CreateReportDataRow(reviewRounds, ratedUser, category, title, true); }
private static ReportDataRow CreateReportDataRow(IEnumerable<ReviewRound> reviewRounds, UserProfile ratedUser, ReviewCategory category, string title, bool onlyOwnRatings) { return new ReportDataRow { Title = title, Values = reviewRounds .Select(round => { var assessments = round.Feedback.SelectMany(feedback => feedback.Assessments) .Where(ass => ass.ReviewCategory == category) .Where(ass => onlyOwnRatings ? ass.ReviewedPeer == ratedUser : (ratedUser == null || ass.ReviewedPeer == ratedUser)) .Where(ass => !onlyOwnRatings || ass.Reviewer == ratedUser) .ToList(); return Convert.ToDecimal(assessments.Any() ? assessments.Average(ass => ass.Rating) : 0); }).ToList() }; }
public void GivenIAmARegisteredUser() { var user = new UserProfile {EmailAddress = _defaultUserEmailAddress, UserName = DefaultUserName}; _context.DatabaseContext.UserProfiles.Add(user); _reviewInfo.CurrentUser = user; }
private static FeedbackViewModel GetFeedback(ReviewConfiguration review, int rating, string categoryName = "Speed", UserProfile reviewedPeer = null) { ReviewCategory category = review.Categories.First(cat => cat.Name == categoryName); var feedback = new FeedbackViewModel { ReviewId = review.Id, CategoriesWithPeersAndRatings = { new CategoryWithPeersAndRatings { Category = new CategoryShowModel {Id = category.Id, Name = category.Name}, PeersWithRatings = reviewedPeer != null ? new List<PeerWithRating> { new PeerWithRating { Peer = new PeerShowModel { Id = reviewedPeer.Id, UserName = reviewedPeer.UserName, EmailAddress = reviewedPeer.EmailAddress }, Rating = rating } } : review.Peers.Select( peer => new PeerWithRating { Peer = new PeerShowModel { Id = peer.Id, UserName = peer.UserName, EmailAddress = peer.EmailAddress }, Rating = rating }).ToList() } } }; return feedback; }