public void PreviewMessage(dtoTemplateTranslation content)
        {
            long idVersion = View.IdVersion;

            View.HideUserMessage();
            if (UserContext.isAnonymous)
            {
                Logout(View.CurrentType, View.IdTemplate, idVersion);
            }
            else
            {
                TemplateDefinitionVersion v = Service.GetVersion(idVersion);
                if (v != null && v.Template != null)
                {
                    Int32 idCommunity = View.IdTemplateCommunity;
                    if (View.Ownership.IdObjectCommunity > 0)
                    {
                        idCommunity = View.Ownership.IdObjectCommunity;
                    }
                    List <ChannelSettings> channels = (v.ChannelSettings == null) ? new List <ChannelSettings>() : v.ChannelSettings.Where(s => s.Deleted == BaseStatusDeleted.None).ToList();
                    Boolean sendMail = (channels != null && channels.Where(n => n.Channel == lm.Comol.Core.Notification.Domain.NotificationChannel.Mail).Any()) && v.Template.OwnerInfo.Type == OwnerType.Object;

                    View.DisplayMessagePreview(sendMail, content.LanguageCode, content.Translation, View.ContentModules, channels, idCommunity, (v.Template.OwnerInfo.Type == OwnerType.Object) ? v.Template.OwnerInfo.ModuleObject : null);
                }
            }
        }
        public void PreviewMessage(dtoTemplateTranslation content)
        {
            long idVersion = View.IdSelectedVersion;

            if (UserContext.isAnonymous)
            {
                View.CurrentMode = Domain.EditMessageMode.None;
            }
            else
            {
                Int32 idCommunity           = View.ContainerIdCommunity;
                TemplateDefinitionVersion v = Service.GetVersion(idVersion);
                if (v != null && v.Template != null)
                {
                    List <ChannelSettings> channels = (v.ChannelSettings == null) ? new List <ChannelSettings>() : v.ChannelSettings.Where(s => s.Deleted == BaseStatusDeleted.None).ToList();
                    Boolean sendMail = (channels != null && channels.Where(n => n.Channel == NotificationChannel.Mail).Any()) && v.Template.OwnerInfo.Type == OwnerType.Object;
                    if (sendMail)
                    {
                        View.DisplayMessagePreview(sendMail, content.LanguageCode, content.Translation, View.ContentModules, channels, idCommunity, View.CurrentObject);
                    }
                    else
                    {
                        View.DisplayMessagePreview(true, content.LanguageCode, content.Translation, View.ContentModules, View.CurrentSettings, idCommunity, View.CurrentObject);
                    }
                }
                else
                {
                    View.DisplayMessagePreview(true, content.LanguageCode, content.Translation, View.ContentModules, View.CurrentSettings, idCommunity, View.CurrentObject);
                }
            }
        }
 public void InitView(dtoTemplateTranslation content)
 {
     if (!UserContext.isAnonymous)
     {
         View.IsInitialized = true;
         View.IsHtml        = content.Translation.IsHtml;
         View.Content       = content;
     }
     else
     {
         View.DisplaySessionTimeout();
     }
 }
        private void LoadDefaultTranslation(TemplateDefinitionVersion version)
        {
            dtoTemplateTranslation current = new dtoTemplateTranslation()
            {
                Id = 0, IdLanguage = 0, LanguageCode = "multi", IdVersion = version.Id, Translation = version.DefaultTranslation
            };
            List <lm.Comol.Core.DomainModel.Languages.LanguageItem> items = Service.GetInUseLanguageItems(version);

            View.AllowDelete    = false;
            View.ContentModules = Service.GetVersionModuleContentCodes(version.Id);
            View.AllowPreview   = (!String.IsNullOrEmpty(current.Translation.Subject) || !String.IsNullOrEmpty(current.Translation.ShortText) || !String.IsNullOrEmpty(current.Translation.Body));
            View.LoadTranslation(current, version.HasShortText, version.OnlyShortText, Service.GetAvalableLanguage(version), items, items.Where(i => i.IsMultiLanguage).FirstOrDefault());
        }
 public void SaveTranslation(dtoTemplateTranslation translation)
 {
     View.HideUserMessage();
     if (UserContext.isAnonymous)
     {
         Logout(View.CurrentType, View.IdTemplate, View.IdVersion);
     }
     else
     {
         if (translation != null && translation.LanguageCode == "multi")
         {
             if (Service.SaveDefaultTranslation(View.IdVersion, translation))
             {
                 View.AllowPreview = (!String.IsNullOrEmpty(translation.Translation.Subject) || !String.IsNullOrEmpty(translation.Translation.ShortText) || !String.IsNullOrEmpty(translation.Translation.Body));
                 View.UpdateTranslationSelector(Service.GetAvalableLanguages(), Service.GetInUseLanguageItems(View.IdVersion), View.CurrentTranslation);
                 View.LoadWizardSteps(View.IdTemplateCommunity, Service.GetAvailableSteps(View.IdVersion, WizardTemplateStep.Translations, View.Ownership.Type));
                 View.SendUserAction(View.IdTemplateCommunity, Service.ServiceModuleID(), ModuleTemplateMessages.ActionType.TranslationSaved);
                 View.DisplayTemplateTranslationSaved(0);
             }
             else
             {
                 View.SendUserAction(View.IdTemplateCommunity, Service.ServiceModuleID(), ModuleTemplateMessages.ActionType.ErrorSavingTranslation);
                 View.DisplayTemplateTranslationErrorSaving();
             }
         }
         else
         {
             TemplateTranslation t = Service.SaveTranslation(View.IdVersion, translation);
             if (t != null)
             {
                 View.UpdateTranslationSelector(Service.GetAvalableLanguages(), Service.GetInUseLanguageItems(View.IdVersion), View.CurrentTranslation);
                 View.LoadWizardSteps(View.IdTemplateCommunity, Service.GetAvailableSteps(View.IdVersion, WizardTemplateStep.Translations, View.Ownership.Type));
                 View.SendUserAction(View.IdTemplateCommunity, Service.ServiceModuleID(), ModuleTemplateMessages.ActionType.TranslationSaved);
                 View.DisplayTemplateTranslationSaved(t.Id);
             }
             else
             {
                 View.SendUserAction(View.IdTemplateCommunity, Service.ServiceModuleID(), ModuleTemplateMessages.ActionType.ErrorSavingTranslation);
                 View.DisplayTemplateTranslationErrorSaving();
             }
         }
     }
 }
        public void LoadTranslation(LanguageItem current, Boolean forAdd = false)
        {
            View.HideUserMessage();
            if (UserContext.isAnonymous)
            {
                Logout(View.CurrentType, View.IdTemplate, View.IdVersion);
            }
            else
            {
                TemplateDefinitionVersion version = Service.GetVersion(View.IdVersion);
                if (version == null || (version.Deleted != BaseStatusDeleted.None && !View.PreloadPreview) || (version.Template == null))
                {
                    View.DisplayUnknownTemplate();
                    List <lm.Comol.Core.Wizard.NavigableWizardItem <dtoTemplateStep> > steps = Service.GetAvailableSteps(View.IdVersion, WizardTemplateStep.Translations, View.Ownership.Type);
                    steps.ForEach(s => s.Status = Wizard.WizardItemStatus.disabled);
                    View.LoadWizardSteps(View.IdTemplateCommunity, steps);
                    View.SendUserAction(View.IdTemplateCommunity, Service.ServiceModuleID(), ModuleTemplateMessages.ActionType.UnknownTemplateVersion);
                }
                else
                {
                    dtoTemplateTranslation t = Service.GetTranslation(View.IdVersion, current.Id, current.Code);
                    if (t.Id != current.Id)
                    {
                        t.IdLanguage   = current.Id;
                        t.LanguageCode = current.Code;
                    }
                    if (forAdd && t != null)
                    {
                        TemplateTranslation sTranslation = Service.SaveTranslation(View.IdVersion, t);
                        if (sTranslation != null)
                        {
                            View.UpdateTranslationSelector(Service.GetAvalableLanguages(), Service.GetInUseLanguageItems(View.IdVersion), View.CurrentTranslation);
                            View.LoadWizardSteps(View.IdTemplateCommunity, Service.GetAvailableSteps(View.IdVersion, WizardTemplateStep.Translations, View.Ownership.Type));
                            View.SendUserAction(View.IdTemplateCommunity, Service.ServiceModuleID(), ModuleTemplateMessages.ActionType.TranslationSaved);
                        }
                    }

                    View.AllowDelete  = !current.IsMultiLanguage && (View.InputReadOnly && (View.AllowSave));
                    View.AllowPreview = t != null && (!String.IsNullOrEmpty(t.Translation.Subject) || !String.IsNullOrEmpty(t.Translation.ShortText) || !String.IsNullOrEmpty(t.Translation.Body));
                    View.LoadTranslation(t, version.HasShortText, version.OnlyShortText, current);
                }
            }
        }
        public void LoadTranslation(LanguageItem language, dtoTemplateTranslation current, Boolean forAdd)
        {
            if (UserContext.isAnonymous)
            {
                View.CurrentMode = Domain.EditMessageMode.None;
            }
            else
            {
                List <dtoTemplateTranslation> translations = View.CurrentTranslations;
                if (translations.Any() && translations.Where(t => t.IdLanguage == current.IdLanguage).Any())
                {
                    dtoTemplateTranslation fItem = translations.Where(t => t.IdLanguage == current.IdLanguage).FirstOrDefault();
                    fItem.Translation = current.Translation;
                }
                else
                {
                    translations.Add(current);
                }

                dtoTemplateTranslation content = translations.Where(t => t.IdLanguage == language.Id).FirstOrDefault();
                if (content == null)
                {
                    content = new dtoTemplateTranslation {
                        IdLanguage = language.Id, LanguageCode = language.Code, LanguageName = language.Name
                    };
                    if (translations.Where(t => t.LanguageCode == "multi").Any())
                    {
                        content.Translation = translations.Where(t => t.LanguageCode == "multi").FirstOrDefault().Translation.Copy();
                    }
                    else
                    {
                        content.Translation = current.Translation.Copy();
                    }
                    translations.Add(content);
                }

                View.CurrentTranslations = translations;
                //if (forAdd)
                //    View.UpdateTranslation(language, content);
                //else
                View.UpdateTranslationSelector(Service.GetAvalableLanguages(), GetInUseLanguageItems(language, translations, content), language, content);
            }
        }
        public void SelectRecipients(LanguageItem language, dtoTemplateTranslation current)
        {
            if (UserContext.isAnonymous)
            {
                View.CurrentMode = Domain.EditMessageMode.None;
            }
            else
            {
                List <dtoTemplateTranslation> translations = View.CurrentTranslations;
                if (translations.Where(t => t.IdLanguage == language.Id && t.LanguageCode == language.Code).Any())
                {
                    translations.Where(t => t.IdLanguage == language.Id && t.LanguageCode == language.Code).FirstOrDefault().Translation = current.Translation;
                }
                else
                {
                    translations.Add(current);
                }
                View.CurrentTranslations = translations;

                if (translations == null || !translations.Any() || !translations.Where(t => t.IsValid).Any())
                {
                    View.DisplayEmptyMessage();
                }
                else
                {
                    View.CurrentMode = Domain.EditMessageMode.SelectUsers;
                    List <String> languages = translations.Where(t => !t.IsValid).Select(t => t.LanguageName).ToList();
                    if (languages.Any())
                    {
                        View.DisplayEmptyTranslations(languages);
                    }

                    List <BaseLanguageItem> items = translations.Where(t => t.IsValid).Select(t => new BaseLanguageItem()
                    {
                        Code = t.LanguageCode, Name = t.LanguageName, ToolTip = t.LanguageName, Id = t.IdLanguage, IsMultiLanguage = (t.Id == 0 && t.LanguageCode == "multi")
                    }).OrderByDescending(t => t.IsMultiLanguage).ThenBy(t => t.Name).ToList();
                    if (View.MantainRecipients)
                    {
                        if ((View.SelectionMode & UserSelection.FromInputText) > 0 && items.Count > 0)
                        {
                            View.LoadAvailableAddresses(items, View.GetTextualRecipients());
                        }
                        if ((View.SelectionMode & UserSelection.FromModule) > 0 && items.Count > 0)
                        {
                            View.DisplayModuleSelector();
                        }
                    }
                    else
                    {
                        View.MantainRecipients = true;
                        if ((View.SelectionMode & UserSelection.FromInputText) > 0 && items.Count > 0)
                        {
                            View.LoadAvailableAddresses(items);
                        }
                        if ((View.SelectionMode & UserSelection.FromModule) > 0 && items.Count > 0)
                        {
                            InitializeModuleSelector(translations);
                        }
                    }
                }
            }
        }
        public List <lm.Comol.Core.DomainModel.Languages.LanguageItem> GetInUseLanguageItems(LanguageItem language, List <dtoTemplateTranslation> translations, dtoTemplateTranslation content)
        {
            List <lm.Comol.Core.DomainModel.Languages.LanguageItem> items = new List <lm.Comol.Core.DomainModel.Languages.LanguageItem>();

            try
            {
                List <Language> languages = CurrentManager.GetAllLanguages().ToList();
                items = translations.Select(t => new lm.Comol.Core.DomainModel.Languages.LanguageItem()
                {
                    Id              = t.IdLanguage,
                    Code            = t.LanguageCode,
                    IsDefault       = languages.Where(l => l.isDefault && l.Id == t.IdLanguage).Any(),
                    IsEnabled       = true,
                    IsMultiLanguage = (t.LanguageCode == "multi"),
                    Name            = (String.IsNullOrEmpty(t.LanguageName) && languages.Where(l => l.Id == t.IdLanguage).Any()) ? languages.Where(l => l.Id == t.IdLanguage).Select(l => l.Name).FirstOrDefault() : t.LanguageName,
                    ToolTip         = (String.IsNullOrEmpty(t.LanguageName) && languages.Where(l => l.Id == t.IdLanguage).Any()) ? languages.Where(l => l.Id == t.IdLanguage).Select(l => l.Name).FirstOrDefault() : t.LanguageName,
                    Status          = (t.IsValid || (content.IdLanguage == t.IdLanguage && content.IsValid)) ? lm.Comol.Core.DomainModel.Languages.ItemStatus.valid : ((content.IsEmpty) ? lm.Comol.Core.DomainModel.Languages.ItemStatus.wrong :lm.Comol.Core.DomainModel.Languages.ItemStatus.warning)
                }).ToList();
            }
            catch (Exception ex)
            {
            }

            return(items);
        }