public CardSelectedVersionDiffWithCurrentResult(GetCardForEdit.ResultModel card, GetCardVersion.Result selectedVersion, ILocalized localizer) { FirstVersionUtcDate = card.FirstVersionUtcDate; LastVersionUtcDate = card.LastVersionUtcDate; LastVersionCreatorName = card.LastVersionCreatorName; LastVersionDescription = card.LastVersionDescription; InfoAboutUsage = card.UsersOwningDeckIncluding.Any() ? localizer.Get("AppearsInDecksOf") + ' ' + string.Join(',', card.UsersOwningDeckIncluding) : localizer.Get("NotIncludedInAnyDeck"); AverageRating = card.AverageRating; CountOfUserRatings = card.CountOfUserRatings; SelectedVersionUtcDate = selectedVersion.VersionUtcDate; SelectedVersionDescription = selectedVersion.VersionDescription; SelectedVersionCreatorName = selectedVersion.CreatorName; var changedFields = new List <string>(); var unChangedFields = new List <string>(); AddField(changedFields, unChangedFields, "FrontSide", card.FrontSide, selectedVersion.FrontSide, localizer); AddField(changedFields, unChangedFields, "BackSide", card.BackSide, selectedVersion.BackSide, localizer); AddField(changedFields, unChangedFields, "AdditionalInfo", card.AdditionalInfo, selectedVersion.AdditionalInfo, localizer); AddField(changedFields, unChangedFields, "LanguageName", card.LanguageName, selectedVersion.LanguageName, localizer); var cardTags = card.Tags.Any() ? string.Join(",", card.Tags.Select(t => t.TagName).OrderBy(name => name)) : localizer.Get("NoneMasc"); var versionTags = selectedVersion.Tags.Any() ? string.Join(",", selectedVersion.Tags.OrderBy(name => name)) : localizer.Get("NoneMasc"); AddField(changedFields, unChangedFields, card.Tags.Count() > 1 && selectedVersion.Tags.Count() > 1 ? "Tags" : "Tag", cardTags, versionTags, localizer); var cardVisibility = card.UsersWithVisibility.Any() ? string.Join(",", card.UsersWithVisibility.Select(u => u.UserName).OrderBy(name => name)) : localizer.Get("Public"); var versionVisibility = selectedVersion.UsersWithVisibility.Any() ? string.Join(",", selectedVersion.UsersWithVisibility.OrderBy(name => name)) : localizer.Get("Public"); AddField(changedFields, unChangedFields, "Visibility", cardVisibility, versionVisibility, localizer); var cardFrontSideImageNames = card.Images.Where(i => i.CardSide == ImageInCard.FrontSide).Select(i => i.Name).OrderBy(name => name); var cardFrontSideImageNamesJoined = cardFrontSideImageNames.Any() ? string.Join(",", cardFrontSideImageNames) : localizer.Get("NoneFeminine"); var versionFrontSideImages = selectedVersion.FrontSideImageNames.Any() ? string.Join(",", selectedVersion.FrontSideImageNames.OrderBy(name => name)) : localizer.Get("NoneFeminine"); AddField(changedFields, unChangedFields, "FrontSideImages", cardFrontSideImageNamesJoined, versionFrontSideImages, localizer); var cardBackSideImageNames = card.Images.Where(i => i.CardSide == ImageInCard.BackSide).Select(i => i.Name).OrderBy(name => name); var cardBackSideImageNamesJoined = cardBackSideImageNames.Any() ? string.Join(",", cardBackSideImageNames) : localizer.Get("NoneFeminine"); var versionBackSideImages = selectedVersion.BackSideImageNames.Any() ? string.Join(",", selectedVersion.BackSideImageNames.OrderBy(name => name)) : localizer.Get("NoneFeminine"); AddField(changedFields, unChangedFields, "BackSideImages", cardBackSideImageNamesJoined, versionBackSideImages, localizer); var cardAdditionalImageNames = card.Images.Where(i => i.CardSide == ImageInCard.AdditionalInfo).Select(i => i.Name).OrderBy(name => name); var cardAdditionalImageNamesJoined = cardAdditionalImageNames.Any() ? string.Join(",", cardAdditionalImageNames) : localizer.Get("NoneFeminine"); var versionAdditionalImages = selectedVersion.AdditionalInfoImageNames.Any() ? string.Join(",", selectedVersion.AdditionalInfoImageNames.OrderBy(name => name)) : localizer.Get("NoneFeminine"); AddField(changedFields, unChangedFields, "AdditionalInfoImages", cardAdditionalImageNamesJoined, versionAdditionalImages, localizer); ChangedFields = changedFields; UnchangedFields = unChangedFields; }
public GetCardForEditViewModel(GetCardForEdit.ResultModel applicationResult, IStringLocalizer <AuthoringController> localizer) { FrontSide = applicationResult.FrontSide; BackSide = applicationResult.BackSide; AdditionalInfo = applicationResult.AdditionalInfo; LanguageId = applicationResult.LanguageId; Tags = applicationResult.Tags.Select(tag => new GetAllAvailableTagsViewModel(tag.TagId, tag.TagName)); UsersWithVisibility = applicationResult.UsersWithVisibility.Select(user => new GetUsersViewModel(user.UserId, user.UserName)); CreationUtcDate = applicationResult.CreationUtcDate; LastChangeUtcDate = applicationResult.LastChangeUtcDate; InfoAboutUsage = applicationResult.UsersOwningDeckIncluding.Count() > 0 ? localizer["AppearsInDecksOf"].Value + ' ' + string.Join(',', applicationResult.UsersOwningDeckIncluding) : localizer["NotIncludedInAnyDeck"].Value; Images = applicationResult.Images.Select(applicationImage => new GetCardForEditImageViewModel(applicationImage, localizer)); CurrentUserRating = applicationResult.UserRating; AverageRating = Math.Round(applicationResult.AverageRating, 1); CountOfUserRatings = applicationResult.CountOfUserRatings; }