public List <CodeReview> GetPrevCodeReviewDataForTrainee(int traineeId, int[] ratingFilter, int count) { return (UnitOfWork.CodeReviewRepository .GetPrevCodeReviewForTrainee(traineeId, count) .Select(cr => new { cr.CodeReviewMetaDataId, cr.Description, cr.ProjectName, cr.IsDiscarded, cr.CreatedOn, Feedback = new { cr.Feedback.FeedbackId, cr.Feedback.AddedOn, cr.Feedback.FeedbackType, cr.Feedback.User, cr.Feedback.Rating }, CodeReviewTags = cr.CodeReviewTags .Where(t => !t.IsDeleted) .OrderBy(t => t.SkillId) }) .AsEnumerable() .Select(cr => new CodeReview { Id = cr.CodeReviewMetaDataId, Description = cr.Description, Title = cr.ProjectName, IsDeleted = cr.IsDiscarded.GetValueOrDefault(), CreatedOn = cr.CreatedOn, Feedback = new Feedback { FeedbackId = cr.Feedback.FeedbackId, AddedOn = cr.Feedback.AddedOn.GetValueOrDefault(), FeedbackText = string.Empty, FeedbackType = new Common.Entity.FeedbackType { FeedbackTypeId = cr.Feedback.FeedbackType.GetValueOrDefault() }, AddedBy = UserConverter.ConvertFromCore(cr.Feedback.User), Rating = cr.Feedback.Rating.GetValueOrDefault() }, Tags = CodeReviewTagConverter.ConvertListFromCore(cr.CodeReviewTags .Select(tag => { tag.CodeReviewPoints = tag.CodeReviewPoints .Where(point => point.CodeReviewPointType != 3 && ratingFilter.Contains(point.CodeReviewPointType)) .ToList(); return tag; }) .ToList()) }) .Where(cr => cr.Tags.Any() && cr.Tags.Any(tag => tag.ReviewPoints.Any())) .ToList()); }
public CodeReview SubmitCodeReviewMetaData(CodeReview codeReview) { CodeReviewMetaData crMetaData; // existing if (codeReview.Id > 0) { crMetaData = UnitOfWork.CodeReviewRepository.GetCodeReviewWithAllData(codeReview.Id); if (crMetaData == null) { throw new Exception("No Record Found"); } crMetaData.Description = codeReview.Description; crMetaData.IsDiscarded = codeReview.IsDeleted; crMetaData.ProjectName = codeReview.Title; List <CodeReviewTag> existingTags = CodeReviewTagConverter.ConvertListFromCore(crMetaData.CodeReviewTags.Where(x => !x.IsDeleted).ToList()); foreach (var tag in codeReview.Tags) { if (existingTags.Any(x => x.Skill.SkillId == tag.Skill.SkillId)) { continue; } crMetaData.CodeReviewTags.Add(new DAL.EntityFramework.CodeReviewTag { CreatedOn = DateTime.Now, SkillId = tag.Skill.SkillId }); } } else { crMetaData = new CodeReviewMetaData { AddedBy = codeReview.AddedBy.UserId, AddedFor = codeReview.AddedFor.UserId, CreatedOn = DateTime.Now, Description = codeReview.Description, IsDiscarded = false, ProjectName = codeReview.Title, SystemRating = CalculateCodeReviewRating(codeReview) }; foreach (var tag in codeReview.Tags) { crMetaData.CodeReviewTags.Add(new DAL.EntityFramework.CodeReviewTag { CreatedOn = DateTime.Now, SkillId = tag.Skill.SkillId }); } crMetaData.CodeReviewTags.Add(new DAL.EntityFramework.CodeReviewTag { CreatedOn = DateTime.Now, SkillId = null }); UnitOfWork.CodeReviewRepository.Add(crMetaData); } UnitOfWork.Commit(); //get new data var newCodeReview = CodeReviewConverter.ConvertFromCore(UnitOfWork.CodeReviewRepository.GetCodeReviewWithAllData(crMetaData.CodeReviewMetaDataId)); newCodeReview.CodeReviewPreviewHtml = FetchCodeReviewPreview(crMetaData.CodeReviewMetaDataId, false); newCodeReview.SystemRating = CalculateCodeReviewRating(codeReview); return(newCodeReview); }