private void SetPercentage(Localization model, TranslationStatsViewModel vm) { int totalTermCount = model.Terms.Count; int distinctEntriesCount = model.Entries.Select(x => new { x.TermId, x.Language }).Distinct().Count(); int languageCount = model.Entries.Select(x => x.Language).Distinct().Count(); vm.TranslationPercentage = translationDomainService.CalculatePercentage(totalTermCount, distinctEntriesCount, languageCount); }
private void SetContributors(Localization model, TranslationStatsViewModel vm) { IEnumerable <IGrouping <Guid, LocalizationEntry> > contributors = model.Entries.GroupBy(x => x.UserId); foreach (IGrouping <Guid, LocalizationEntry> contributorGroup in contributors) { ContributorViewModel contributor = new ContributorViewModel(); UserProfile profile = GetCachedProfileByUserId(contributorGroup.Key); contributor.UserId = contributorGroup.Key; contributor.AuthorName = profile.Name; contributor.AuthorPicture = UrlFormatter.ProfileImage(contributorGroup.Key); contributor.EntryCount = contributorGroup.Count(); vm.Contributors.Add(contributor); } vm.Contributors = vm.Contributors.OrderByDescending(x => x.EntryCount).ToList(); }
public OperationResultVo GetStatsById(Guid currentUserId, Guid id) { try { Localization model = translationDomainService.GetById(id); if (model == null) { return(new OperationResultVo("Translation Project not found!")); } TranslationStatsViewModel vm = mapper.Map <TranslationStatsViewModel>(model); vm.TermCount = model.Terms.Count; IEnumerable <IGrouping <SupportedLanguage, LocalizationEntry> > languages = model.Entries.GroupBy(x => x.Language); foreach (IGrouping <SupportedLanguage, LocalizationEntry> language in languages) { TranslationStatsLanguageViewModel languageEntry = new TranslationStatsLanguageViewModel { Language = language.Key, EntryCount = language.Select(x => x.TermId).Distinct().Count(), Percentage = translationDomainService.CalculatePercentage(vm.TermCount, language.Count(), 1) }; vm.Languages.Add(languageEntry); } SetPercentage(model, vm); SetContributors(model, vm); SetGameViewModel(model.GameId, vm); SetPermissions(currentUserId, vm); return(new OperationResultVo <TranslationStatsViewModel>(vm)); } catch (Exception ex) { return(new OperationResultVo(ex.Message)); } }
public IActionResult Export(Guid id) { OperationResultVo result = translationAppService.GetStatsById(CurrentUserId, id); if (result.Success) { OperationResultVo <TranslationStatsViewModel> castRestult = result as OperationResultVo <TranslationStatsViewModel>; TranslationStatsViewModel model = castRestult.Value; SetLocalization(model); SetAuthorDetails(model); return(View("Export", model)); } else { return(null); } }