public async Task <IActionResult> TranslateProperty(long PropertyId, string LanguageCode) { Property property = await context.Properties .Where(p => p.Id == PropertyId) .Include(p => p.Name) .ThenInclude(te => te.Translations) .Include(p => p.Description) .ThenInclude(te => te.Translations) .FirstOrDefaultAsync(); if (property == null) { return(NotFound()); // TODO: Decide better navigation } Translation translatedName = property.Name.Translations .Where(t => t.LanguageCode == LanguageCode) .SingleOrDefault(); Translation TranslatedDescription = property.Description.Translations .Where(t => t.LanguageCode == LanguageCode) .SingleOrDefault(); // Jau ir tulkots šī valodā Language language = await context.Languages .Where(lang => lang.Code == LanguageCode) .FirstOrDefaultAsync(); // Šī valoda (vēl) nav atbalstīta if (language == null) { return(RedirectToAction(nameof(Index))); // TODO: Decide better navigation } PropertyTranslationViewModel model = new PropertyTranslationViewModel() { Property = property, Language = language, TranslatedName = (translatedName == null) ? "" : translatedName.Value, TranslatedDescription = (TranslatedDescription == null) ? "" : TranslatedDescription.Value }; return(View(model)); }
public async Task <IActionResult> TranslateProperty(PropertyTranslationViewModel model) { Property property = await context.Properties .Where(p => p.Id == model.Property.Id) .Include(p => p.Name) .ThenInclude(te => te.Translations) .Include(p => p.Description) .ThenInclude(te => te.Translations) .FirstOrDefaultAsync(); if (property == null) { return(NotFound()); } Language language = await context.Languages .Where(lang => lang.Code == model.Language.Code) .SingleOrDefaultAsync(); if (language == null) { return(NotFound()); } long nameId = property.Name.Translations .Where(t => t.LanguageCode == language.Code) .Select(t => t.Id) .SingleOrDefault(); long descriptionId = property.Description.Translations .Where(t => t.LanguageCode == language.Code) .Select(t => t.Id) .SingleOrDefault(); if (nameId != 0) { Translation translation = await context.Translations .Where(t => t.Id == nameId) .FirstOrDefaultAsync(); translation.Modify(model.TranslatedName); context.Update(translation); } else { property.Name.Translations.Add(new Translation() { Value = model.TranslatedName, LanguageCode = model.Language.Code }); } if (descriptionId != 0) { Translation translation = await context.Translations .Where(t => t.Id == descriptionId) .FirstOrDefaultAsync(); translation.Modify(model.TranslatedDescription); context.Update(translation); } else { property.Description.Translations.Add(new Translation() { Value = model.TranslatedDescription, LanguageCode = model.Language.Code }); } await context.SaveChangesAsync(); return(RedirectToAction(nameof(ManagePropertyTranslations), new { PropertyId = model.Property.Id })); }