Exemple #1
0
        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));
        }
Exemple #2
0
        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 }));
        }