private void InitializeView(dtoTemplateMessageContext context) { MailMessage message = Service.GetMessage(context.IdMessageTemplate); if (message == null) { View.DisplayNoTemplateFound(); } else { Boolean isAdministrative = Service.IsAdministrativeUser(UserContext.CurrentUserID); Boolean senderEdit = isAdministrative; View.DisplayMessageInfo(message.CreatedBy, message.CreatedOn); View.InitializeMailSettings(message.MailSettings, senderEdit, isAdministrative, isAdministrative); List <lm.Comol.Core.TemplateMessages.Domain.dtoTemplateTranslation> translations = new List <lm.Comol.Core.TemplateMessages.Domain.dtoTemplateTranslation>(); if (message.Template != null) { Boolean onlyShortText = false; Boolean hasShortText = false; if (message.Template.IsTemplateCompliant) { lm.Comol.Core.TemplateMessages.Domain.TemplateDefinitionVersion version = null; if (message.Template.IdVersion > 0) { version = TemplatesService.GetVersion(message.Template.IdVersion); } if (version == null) { version = TemplatesService.GetLastActiveVersion(message.Template.IdTemplate); } if (version != null) { translations = (from t in version.Translations where t.Deleted == BaseStatusDeleted.None select new lm.Comol.Core.TemplateMessages.Domain.dtoTemplateTranslation() { Id = t.Id, IdLanguage = t.IdLanguage, LanguageCode = t.LanguageCode, LanguageName = t.LanguageName, Translation = t.Translation }).ToList(); if (!translations.Where(t => t.LanguageCode == "multi" && t.IdLanguage == 0).Any()) { translations.Add(new lm.Comol.Core.TemplateMessages.Domain.dtoTemplateTranslation() { Id = 0, IdLanguage = 0, LanguageCode = "multi", Translation = version.DefaultTranslation }); } View.ContentModules = version.GetModuleContentCodes(); onlyShortText = version.OnlyShortText; hasShortText = version.HasShortText; } } else { translations = (from t in message.Template.Translations where t.Deleted == BaseStatusDeleted.None select new lm.Comol.Core.TemplateMessages.Domain.dtoTemplateTranslation() { Id = t.Id, IdLanguage = t.IdLanguage, LanguageCode = t.LanguageCode, LanguageName = t.LanguageName, Translation = t.Translation }).ToList(); View.ContentModules = new List <String>() { context.ModuleCode }; } List <Language> languages = CurrentManager.GetAllLanguages().ToList(); List <lm.Comol.Core.DomainModel.Languages.LanguageItem> inUseLanguages = translations.Select(t => new lm.Comol.Core.DomainModel.Languages.LanguageItem() { Id = t.IdLanguage, Code = t.LanguageCode, Name = t.LanguageName, IsMultiLanguage = (t.LanguageCode == "multi" && t.IdLanguage == 0), Status = (t.IsEmpty) ? DomainModel.Languages.ItemStatus.wrong : (t.Translation.IsValid(!onlyShortText, hasShortText, true)) ? DomainModel.Languages.ItemStatus.valid : DomainModel.Languages.ItemStatus.warning }).ToList(); inUseLanguages.Where(l => languages.Where(ll => ll.isDefault && l.Id == ll.Id).Any()).ToList().ForEach(l => l.IsDefault = true); inUseLanguages.Where(l => l.Id > 0).ToList().ForEach(l => l.Name = languages.Where(ll => ll.Id == l.Id).Select(ll => ll.Name).FirstOrDefault()); inUseLanguages = inUseLanguages.OrderByDescending(l => l.IsMultiLanguage).ThenBy(l => l.Name).ToList(); lm.Comol.Core.DomainModel.Languages.LanguageItem current = inUseLanguages.Where(l => l.Id == UserContext.Language.Id).FirstOrDefault(); if (current == null && languages.Any()) { current = inUseLanguages.Where(l => l.IsDefault).FirstOrDefault(); if (current == null) { current = inUseLanguages.Where(l => l.IsMultiLanguage).FirstOrDefault(); } } if (current == null && inUseLanguages.Any()) { current = inUseLanguages[0]; } View.InitializeControls(translations, inUseLanguages, current); String tagTranslation = View.TagTranslation; if (translations.Any() && !String.IsNullOrEmpty(tagTranslation)) { List <lm.Comol.Core.DomainModel.Helpers.TemplatePlaceHolder> placeHolders = View.GetContentPlaceHolders(View.ContentModules); foreach (lm.Comol.Core.DomainModel.Helpers.TemplatePlaceHolder pHolder in placeHolders.Where(t => translations.Where(ct => !ct.Translation.IsContentEmpty() && ((!String.IsNullOrEmpty(ct.Translation.Body) && ct.Translation.Body.Contains(t.Tag)) || (!String.IsNullOrEmpty(ct.Translation.Subject) && ct.Translation.Subject.Contains(t.Tag)))).Any())) { translations.Where(ct => !ct.Translation.IsContentEmpty() && !String.IsNullOrEmpty(ct.Translation.Body) && ct.Translation.Body.Contains(pHolder.Tag)).ToList().ForEach(t => t.Translation.Body = t.Translation.Body.Replace(pHolder.Tag, String.Format(tagTranslation, pHolder.Tag, pHolder.Name))); translations.Where(ct => !ct.Translation.IsContentEmpty() && !String.IsNullOrEmpty(ct.Translation.Subject) && ct.Translation.Subject.Contains(pHolder.Tag)).ToList().ForEach(t => t.Translation.Subject = t.Translation.Subject.Replace(pHolder.Tag, String.Format(tagTranslation, pHolder.Tag, pHolder.Name))); } } View.LoadMessage((current != null) ? translations.Where(t => t.IdLanguage == current.Id && t.LanguageCode == current.Code).FirstOrDefault() : (translations.Any() ? translations[0] : null)); } //List<lm.Comol.Core.DomainModel.Languages.BaseLanguageItem> availableItems = Service.GetAvalableLanguage(version); //List<lm.Comol.Core.DomainModel.Languages.LanguageItem> items = Service.GetInUseLanguageItems(version); //if (version != null) //{ // View.IdSelectedVersion = version.Id; // View.ContentModules = Service.GetVersionModuleContentCodes(version.Id); // translations.Add(new dtoTemplateTranslation() { IdLanguage = 0, LanguageCode = "multi", Translation = version.DefaultTranslation.Copy() }); // translations.AddRange(version.Translations.Where(t => t.Deleted == BaseStatusDeleted.None).Select(t => new dtoTemplateTranslation() { IdLanguage = t.IdLanguage, LanguageCode = t.LanguageCode, Translation = t.Translation.Copy() }).ToList()); // if (version.ChannelSettings.Where(c => c.Deleted == BaseStatusDeleted.None && c.Channel == NotificationChannel.Mail).Any()) // settings = version.ChannelSettings.Where(c => c.Deleted == BaseStatusDeleted.None && c.Channel == NotificationChannel.Mail).FirstOrDefault().MailSettings; // senderEdit = senderEdit && version.Template.Type == TemplateType.System; // View.LoadEditor(translations, "multi", version.HasShortText, version.OnlyShortText, availableItems, items, items.Where(i => i.IsMultiLanguage).FirstOrDefault()); //} //else //{ // View.ContentModules = new List<String>() { currentCode }; // translations.Add(new dtoTemplateTranslation() { IdLanguage = 0, LanguageCode = "multi", Translation = new ItemObjectTranslation() { IsHtml = (settings == null) ? true : settings.isHtml, Body = "", Name = "" } }); // View.LoadEditor(translations, "multi", false, false, availableItems, items, items.Where(i => i.IsMultiLanguage).FirstOrDefault()); //} } }
/// <summary> /// Al primo caricamento della pagina! /// </summary> public void InitView() { if (!CheckSessionAccess()) { return; } if (!(Module.ManageCategory || Module.Administration)) { View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, this.CurrentCommunityId, ModuleTicket.InteractionType.None); View.ShowNoPermission(); return; } Domain.Category Category = new Domain.Category(); //View.CommunityCategories = service.CategoriesGetCommunity(true); if (View.CurrentCategoryId > 0) { //Categoria Domain.Category Cat = service.CategoryGetDetached(View.CurrentCategoryId, Domain.Enums.RolesLoad.all, false); if (Cat == null || Cat.Id <= 0 || Cat.IdCommunity != CurrentCommunityId) { View.ShowWrongCategory(); return; } Domain.DTO.DTO_CategoryTypeComPermission Permission = service.CategoryTypeGetPermission(this.CurrentCommunityId); View.InitCategories(Permission, Cat.Type, Cat.IsDefault); View.Category = Cat; //Traduzioni List <lm.Comol.Core.DomainModel.Languages.LanguageItem> langs = new List <lm.Comol.Core.DomainModel.Languages.LanguageItem>(); //List<Domain.DTO.DTO_CategoryTranslation> translations = new List<Domain.DTO.DTO_CategoryTranslation>(); langs = (from t in Cat.Translations where t.Deleted == BaseStatusDeleted.None select new lm.Comol.Core.DomainModel.Languages.LanguageItem { IsMultiLanguage = (t.LanguageId == TicketService.LangMultiID) ? true : false, Id = t.LanguageId, Code = (t.LanguageId == TicketService.LangMultiID) ? t.LanguageCode.ToUpper() : t.LanguageCode, Name = (t.LanguageId == TicketService.LangMultiID) ? t.LanguageName.ToUpper() : t.LanguageName, Status = DomainModel.Languages.ItemStatus.valid }).Distinct().ToList(); //.OrderBy(li => li.IsMultiLanguage).ThenBy(li => li.Code).ToList(); //.OrderBy(li => li.Code).ToList(); //langs = langs.OrderBy(li => li.IsMultiLanguage).ToList(); //.OrderBy(li => li.IsMultiLanguage).ThenBy(li => li.Code).Distinct().ToList(); ////TEST!!! //String TEST = ""; //foreach (lm.Comol.Core.DomainModel.Languages.LanguageItem _lng in langs) //{ // TEST += _lng.Code + " - " + _lng.Name + " - " + _lng.IsMultiLanguage + "/r/n"; //} //langs = langs.OrderBy(li => li.IsMultiLanguage).ThenBy(li => li.Code).ToList(); //TEST += "/r/n ------- /r/n"; //foreach(lm.Comol.Core.DomainModel.Languages.LanguageItem _lng in langs) //{ // TEST += _lng.Code + " - " + _lng.Name + " - " + _lng.IsMultiLanguage + "/r/n"; //} ////END TEST!!! lm.Comol.Core.DomainModel.Languages.LanguageItem current = (from lm.Comol.Core.DomainModel.Languages.LanguageItem lng in langs where lng.Id == TicketService.LangMultiID select lng).FirstOrDefault(); View.BindLanguages(service.LanguagesGetAvailableSys().Distinct().ToList(), langs, current); View.PreviousLanguage = current; //UTENTI IList <Domain.DTO.DTO_UserRole> roles = (from Domain.LK_UserCategory lkcat in Cat.UserRoles select new Domain.DTO.DTO_UserRole() { User = lkcat.User, IsManager = lkcat.IsManager }).ToList(); int Managercount = (from Domain.DTO.DTO_UserRole rl in roles where rl.IsManager == true select rl.IsManager).Count(); if (Managercount <= 1) { View.ShowDeleteManagers = false; } else { View.ShowDeleteManagers = true; } //Begin Action List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >(); Objects.Add(ModuleTicket.KVPgetPerson(this.UserContext.CurrentUserID)); Objects.Add(ModuleTicket.KVPgetCategory(Cat.Id)); View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.CategoryLoadManage, this.CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects); //End Action View.AssociatedUsers = roles; View.ShowForcedReassigned(null); } else { View.RedirectToList(); //Vai alla creazione! //View.Category = new Domain.Category(); } //Category; }
/// <summary> /// Aggiornamento view per i vari postback... /// </summary> private void UpdateView(lm.Comol.Core.DomainModel.Languages.BaseLanguageItem NewLanguage) { if (!CheckSessionAccess()) { return; } Domain.Category Category = new Domain.Category(); //View.CommunityCategories = service.CategoriesGetCommunity(true); if (View.CurrentCategoryId > 0) { //Categoria Domain.Category Cat = service.CategoryGetDetached(View.CurrentCategoryId, Domain.Enums.RolesLoad.all, false); //Traduzioni List <lm.Comol.Core.DomainModel.Languages.LanguageItem> langs = new List <lm.Comol.Core.DomainModel.Languages.LanguageItem>(); langs = (from t in Cat.Translations where t.Deleted == BaseStatusDeleted.None orderby t.LanguageCode select new lm.Comol.Core.DomainModel.Languages.LanguageItem { IsMultiLanguage = (t.LanguageId == TicketService.LangMultiID) ? true : false, Id = t.LanguageId, Code = (t.LanguageId == TicketService.LangMultiID) ? t.LanguageCode.ToUpper() : t.LanguageCode, Name = (t.LanguageId == TicketService.LangMultiID) ? t.LanguageName.ToUpper() : t.LanguageName, Status = DomainModel.Languages.ItemStatus.valid }).Distinct().ToList(); //langs.OrderBy(l => l.IsMultiLanguage).ThenBy(l => l.Name).ToList(); lm.Comol.Core.DomainModel.Languages.LanguageItem current = View.CurrentLanguage; if (NewLanguage != null) { current = new DomainModel.Languages.LanguageItem(NewLanguage); langs.Add(current); } else if (current.Id != TicketService.LangMultiID) { Domain.CategoryTranslation trn = (from Domain.CategoryTranslation ct in Cat.Translations where ct.LanguageId == current.Id select ct).FirstOrDefault(); Cat.Name = trn.Name; Cat.Description = trn.Description; } View.Category = Cat; View.BindLanguages(service.LanguagesGetAvailableSys(), langs, current); View.PreviousLanguage = current; //UTENTI IList <Domain.DTO.DTO_UserRole> roles = (from Domain.LK_UserCategory lkcat in Cat.UserRoles select new Domain.DTO.DTO_UserRole() { User = lkcat.User, IsManager = lkcat.IsManager }).ToList(); int Managercount = (from Domain.DTO.DTO_UserRole rl in roles where rl.IsManager == true select rl.IsManager).Count(); if (Managercount <= 1) { View.ShowDeleteManagers = false; } else { View.ShowDeleteManagers = true; } View.AssociatedUsers = roles; View.ShowForcedReassigned(null); } else { //Error! } }
public void Save(Boolean UpdateView, Boolean SaveUsers = true) { if (!CheckSessionAccess()) { return; } if (!(Module.ManageCategory || Module.Administration)) { View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.NoPermission, this.CurrentCommunityId, ModuleTicket.InteractionType.None); View.ShowNoPermission(); return; } //Se la view non è valida, non faccio nulla (la view si arrangia a mostrare gli errori (Nome vuoto) if (!View.Validate()) { return; } lm.Comol.Core.DomainModel.Languages.LanguageItem Lang = View.PreviousLanguage; Domain.Category Cat = View.Category; Domain.Enums.CategoryAddModifyError Error = service.CategoryModify(Cat.Id, Cat.Name, Cat.Description, Cat.Type, Lang); Domain.Enums.CategoryAssignersError ResError = Domain.Enums.CategoryAssignersError.none; if (SaveUsers) { ResError = service.CategoryUserUpdate(Cat.Id, View.UsersSettings); } if (Error == Domain.Enums.CategoryAddModifyError.none) { //Begin Action List <KeyValuePair <int, String> > Objects = new List <KeyValuePair <int, string> >(); Objects.Add(ModuleTicket.KVPgetPerson(this.UserContext.CurrentUserID)); Objects.Add(ModuleTicket.KVPgetCategory(Cat.Id)); View.SendUserActions(service.ModuleID, ModuleTicket.ActionType.CategoryModify, this.CurrentCommunityId, ModuleTicket.InteractionType.UserWithLearningObject, Objects); //End Action } if (ResError != Domain.Enums.CategoryAssignersError.none) { Domain.DTO.DTO_CategoryCheckResponse resp = service.CategoryUsersCheck(Cat.Id); if (!resp.PreviousAssigned) { if (UpdateView) { this.InitView(); //this.UpdateView(null); } View.ShowForcedReassigned(resp); return; } } if (Error == Domain.Enums.CategoryAddModifyError.none) { if (UpdateView) { this.UpdateView(null); } View.ShowReassignError(ResError); return; } else { //Other error } }
private void InitializeView(long idTemplate, long idVersion, dtoSelectorContext context) { TemplateDefinitionVersion version = InternalService.GetVersion(idTemplate, idVersion); if (version == null) { if (idVersion > 0) { View.DisplayNoTemplateVersionFound(); } else { View.DisplayNoTemplateFound(); } } else { if (idVersion > 0) { View.DisplayVersionInfo(version.Number); } else { View.DisplayLastVersionInfo(); } Boolean isAdministrative = InternalService.IsAdministrativeUser(UserContext.CurrentUserID); if (version.ChannelSettings != null && version.ChannelSettings.Where(c => c.Deleted == BaseStatusDeleted.None && c.Channel == lm.Comol.Core.Notification.Domain.NotificationChannel.Mail).Any()) { View.InitializeMailSettings(version.ChannelSettings.Where(c => c.Deleted == BaseStatusDeleted.None && c.Channel == lm.Comol.Core.Notification.Domain.NotificationChannel.Mail).FirstOrDefault().MailSettings, isAdministrative, isAdministrative, isAdministrative); } List <lm.Comol.Core.TemplateMessages.Domain.dtoTemplateTranslation> translations = new List <lm.Comol.Core.TemplateMessages.Domain.dtoTemplateTranslation>(); translations = (from t in version.Translations where t.Deleted == BaseStatusDeleted.None select new lm.Comol.Core.TemplateMessages.Domain.dtoTemplateTranslation() { Id = t.Id, IdLanguage = t.IdLanguage, LanguageCode = t.LanguageCode, LanguageName = t.LanguageName, Translation = t.Translation }).ToList(); translations.Add(new dtoTemplateTranslation() { Id = 0, IdLanguage = 0, LanguageCode = "multi", LanguageName = "multi", IdVersion = version.Id, Translation = version.DefaultTranslation }); View.ContentModules = version.GetModuleContentCodes(); List <Language> languages = CurrentManager.GetAllLanguages().ToList(); List <lm.Comol.Core.DomainModel.Languages.LanguageItem> inUseLanguages = translations.Select(t => new lm.Comol.Core.DomainModel.Languages.LanguageItem() { Id = t.IdLanguage, Code = t.LanguageCode, Name = t.LanguageName, IsMultiLanguage = (t.LanguageCode == "multi" && t.IdLanguage == 0), Status = (t.IsEmpty) ? DomainModel.Languages.ItemStatus.wrong : (t.Translation.IsValid(!version.OnlyShortText, version.HasShortText, true)) ? DomainModel.Languages.ItemStatus.valid : DomainModel.Languages.ItemStatus.warning }).ToList(); inUseLanguages.Where(l => languages.Where(ll => ll.isDefault && l.Id == ll.Id).Any()).ToList().ForEach(l => l.IsDefault = true); inUseLanguages.Where(l => l.Id > 0).ToList().ForEach(l => l.Name = languages.Where(ll => ll.Id == l.Id).Select(ll => ll.Name).FirstOrDefault()); inUseLanguages.Add(new lm.Comol.Core.DomainModel.Languages.LanguageItem() { Id = 0, Code = "multi", IsEnabled = true, IsMultiLanguage = true, Status = (version.DefaultTranslation.IsValid(!version.OnlyShortText, version.HasShortText, true)) ? lm.Comol.Core.DomainModel.Languages.ItemStatus.valid : lm.Comol.Core.DomainModel.Languages.ItemStatus.warning }); inUseLanguages = inUseLanguages.OrderByDescending(l => l.IsMultiLanguage).ThenBy(l => l.Name).ToList(); //if (!inUseLanguages.Any(l => l.IsMultiLanguage)) //{ // inUseLanguages.Add(new DomainModel.Languages.LanguageItem(){ IsMultiLanguage=true, }) //} lm.Comol.Core.DomainModel.Languages.LanguageItem current = inUseLanguages.Where(l => l.Id == UserContext.Language.Id).FirstOrDefault(); if (current == null && inUseLanguages.Any()) { current = inUseLanguages.Where(l => l.IsDefault).FirstOrDefault(); if (current == null) { current = inUseLanguages.Where(l => l.IsMultiLanguage).FirstOrDefault(); } } if (current == null && inUseLanguages.Any()) { current = inUseLanguages.FirstOrDefault(); } View.InitializeControls(translations, inUseLanguages, current); View.LoadTemplate((current != null) ? translations.Where(t => t.IdLanguage == current.Id && t.LanguageCode == current.Code).FirstOrDefault() : (translations.Any() ? translations[0] : null)); } // Boolean isAdministrative = Service.IsAdministrativeUser(UserContext.CurrentUserID); // Boolean senderEdit = isAdministrative; // List<lm.Comol.Core.TemplateMessages.Domain.dtoTemplateTranslation> translations = new List<lm.Comol.Core.TemplateMessages.Domain.dtoTemplateTranslation>(); // if (message.Template != null) { // Boolean onlyShortText = false; // Boolean hasShortText = false; // String tagTranslation = View.TagTranslation; // if (translations.Any() && !String.IsNullOrEmpty(tagTranslation)){ // List<lm.Comol.Core.DomainModel.Helpers.TemplatePlaceHolder> placeHolders = View.GetContentPlaceHolders(View.ContentModules); // foreach(lm.Comol.Core.DomainModel.Helpers.TemplatePlaceHolder pHolder in placeHolders.Where(t=> translations.Where(ct=> !ct.Translation.IsContentEmpty && ((!String.IsNullOrEmpty(ct.Translation.Body) && ct.Translation.Body.Contains(t.Tag)) || (!String.IsNullOrEmpty(ct.Translation.Subject) && ct.Translation.Subject.Contains(t.Tag)))).Any()) ){ // translations.Where(ct => !ct.Translation.IsContentEmpty && !String.IsNullOrEmpty(ct.Translation.Body) && ct.Translation.Body.Contains(pHolder.Tag)).ToList().ForEach(t => t.Translation.Body = t.Translation.Body.Replace(pHolder.Tag, String.Format(tagTranslation, pHolder.Tag, pHolder.Name))); // translations.Where(ct => !ct.Translation.IsContentEmpty && !String.IsNullOrEmpty(ct.Translation.Subject) && ct.Translation.Subject.Contains(pHolder.Tag)).ToList().ForEach(t => t.Translation.Subject = t.Translation.Subject.Replace(pHolder.Tag, String.Format(tagTranslation, pHolder.Tag, pHolder.Name))); // } // } // } // } }