public ProjectAdminConfigModel GetConfigModel() { ProjectAdminConfigModel model = new ProjectAdminConfigModel(); GlobalConfigurationWidgetData <ProjectAdminConfigModel> data = GeminiContext.GlobalConfigurationWidgetStore.Get <ProjectAdminConfigModel>(AppGuid); if (data != null && data.Value != null && data.Value.Data != null) { var item = data.Value.Data; if (item != null) { model.Data = item; } } var projectGroups = Cache.ProjectGroups.GetAll(); var groups = projectGroups.Where(g => g.Id != Countersoft.Gemini.Commons.Constants.GlobalGroupEveryone && g.Id != Countersoft.Gemini.Commons.Constants.GlobalGroupEveryoneAuthenticated && g.Id != Countersoft.Gemini.Commons.Constants.GlobalGroupAdministrators); var excludeUserGroups = projectGroups.Where(g => g.Id != Countersoft.Gemini.Commons.Constants.GlobalGroupEveryone && g.Id != Countersoft.Gemini.Commons.Constants.GlobalGroupEveryoneAuthenticated); model.Groups = new MultiSelectList(groups, "Id", "Name", model.Data.ExcludeGroups); model.UserGroups = new MultiSelectList(excludeUserGroups, "Id", "Name", model.Data.ExcludeUserFromGroups); return(model); }
public ActionResult SaveProperty(int templateId, int id, string property, string value) { GlobalConfigurationWidgetData <ChecklistConfigDataModel> data = GeminiContext.GlobalConfigurationWidgetStore.Get <ChecklistConfigDataModel>(AppGuid); if (data == null || data.Value == null || data.Value.Data == null) { return(Content(value)); } var templateData = data.Value.Data.Find(t => t.TemplateId == templateId); if (templateData == null) { return(Content(value)); } var itemIndex = templateData.Items.FindIndex(s => s.Id == id); if (itemIndex == -1) { return(Content(value)); } templateData.Items[itemIndex].Title = value; GeminiContext.GlobalConfigurationWidgetStore.Save(AppGuid, data.Value); return(Content(value)); }
//called when the timeout has expired which was waiting for pending changes. private static void PostChangesToSlack(IssueDtoEventArgs args, GlobalConfigurationWidgetData <SlackConfigData> data, string channel, DateTime createDate) { var issueManager = GeminiApp.GetManager <IssueManager>(args.User); var userManager = GeminiApp.GetManager <UserManager>(args.User); var userDto = userManager.Convert(args.User); var issue = issueManager.Get(args.Issue.Id); //get the changelog of all changes since the create date (minus a second to avoid missing the initial change) var changelog = issueManager.GetChangeLog(issue, userDto, userDto, createDate.AddSeconds(-1)); changelog.RemoveAll(c => c.Entity.AttributeChanged == ItemAttributeVisibility.AssociatedComments); // No need to show comments in updates as we already do that in the AfterComment event. if (changelog.Count == 0) { return; // No changes made! } var fields = changelog .Select(a => new { title = a.Field, value = StripHTML(a.FullChange), _short = a.Entity.AttributeChanged != ItemAttributeVisibility.Description && a.Entity.AttributeChanged != ItemAttributeVisibility.AssociatedComments }); QuickSlack.Send(data.Value.SlackAPIEndpoint, channel, string.Format("{0} updated issue <{1}|{2} - {3}>" , args.User.Fullname, args.BuildIssueUrl(args.Issue), args.Issue.IssueKey, args.Issue.Title), "details attached", "good", //todo colors here based on something fields.ToArray()); }
public ActionResult GetProperty(int templateId, int id, string property) { GlobalConfigurationWidgetData <ChecklistConfigDataModel> data = GeminiContext.GlobalConfigurationWidgetStore.Get <ChecklistConfigDataModel>(AppGuid); if (data == null || data.Value == null || data.Value.Data == null) { return(JsonError()); } var templateData = data.Value.Data.Find(t => t.TemplateId == templateId); if (templateData == null) { return(JsonError()); } var item = templateData.Items.Find(s => s.Id == id); if (item == null) { return(JsonError()); } return(Content(item.Title)); }
public ActionResult Delete(int templateId, int itemId) { GlobalConfigurationWidgetData <ChecklistConfigDataModel> data = GeminiContext.GlobalConfigurationWidgetStore.Get <ChecklistConfigDataModel>(AppGuid); if (data == null || data.Value == null || data.Value.Data == null) { return(JsonError()); } var templateData = data.Value.Data.Find(t => t.TemplateId == templateId); if (templateData == null) { return(JsonError()); } var itemIndex = templateData.Items.FindIndex(s => s.Id == itemId); if (itemIndex == -1) { return(JsonError()); } templateData.Items.RemoveAt(itemIndex); GeminiContext.GlobalConfigurationWidgetStore.Save(AppGuid, data.Value); return(JsonSuccess()); }
public ActionResult Configure(string consumerKey, string consumerSecret) { var data = GeminiContext.GlobalConfigurationWidgetStore.Get <LucidChartConfig>(Constants.AppId); if (data == null) { data = new GlobalConfigurationWidgetData <LucidChartConfig>(); data.AppId = Constants.AppId; } data.Value = new LucidChartConfig() { ConsumerKey = consumerKey, ConsumerSecret = consumerSecret }; GeminiContext.GlobalConfigurationWidgetStore.Save <LucidChartConfig>(Constants.AppId, data.Value); LucidChartsConsumer.consumerKey = consumerKey; LucidChartsConsumer.consumerSecret = consumerSecret; LucidChartsConsumer.token = new InMemoryTokenManager(consumerKey, consumerSecret); return(JsonSuccess()); }
private GlobalConfigurationWidgetData <List <WebhooksData> > GetData() { var data = GeminiContext.GlobalConfigurationWidgetStore.Get <List <WebhooksData> >(AppConstants.AppId); if (data == null || data.Value == null) { data = new GlobalConfigurationWidgetData <List <WebhooksData> >(); data.Value = new List <WebhooksData>(); } return(data); }
private IssueWidgetData <List <ChecklistData> > GetData(IssueDto issue) { IssueWidgetData <List <ChecklistData> > result = new IssueWidgetData <List <ChecklistData> >() { Value = new List <ChecklistData>(), AppId = AppGuid, IssueId = issue.Id, ControlId = AppControlGuid }; GlobalConfigurationWidgetData <ChecklistConfigDataModel> data = GeminiContext.GlobalConfigurationWidgetStore.Get <ChecklistConfigDataModel>(AppGuid); if (data == null || data.Value == null || data.Value.Data == null) { return(result); } var templateData = data.Value.Data.Find(t => t.TemplateId == issue.Project.TemplateId); if (templateData == null) { return(result); } IssueWidgetData <List <ChecklistData> > issueData = GeminiContext.IssueWidgetStore.Get <List <ChecklistData> >(issue.Id, AppGuid, AppControlGuid); foreach (var item in templateData.Items) { ChecklistData existingItem = issueData != null && issueData.Value != null && issueData.Value.Count > 0 ? issueData.Value.Find(s => s.CheckId == item.Id) : null; if (existingItem == null) { result.Value.Add(new ChecklistData { CheckId = item.Id, CheckTitle = item.Title }); } else { existingItem.CheckedDate = existingItem.CheckedDate.ToLocal(UserContext.User.TimeZone); existingItem.CheckTitle = item.Title; result.Value.Add(existingItem); } } result.Value.Sort((x, y) => x.CheckTitle.HasValue() ? x.CheckTitle.CompareTo(y.CheckTitle) : -1); return(result); }
public override WidgetResult Configuration() { var result = new WidgetResult(); var data = GeminiContext.GlobalConfigurationWidgetStore.Get <string>(AppConstants.AppId); if (data == null) { data = new GlobalConfigurationWidgetData <string>(); data.Value = string.Empty; } result.Success = true; result.Markup = new WidgetMarkup("views/settings.cshtml", data.Value); return(result); }
public override WidgetResult Configuration() { GlobalConfigurationWidgetData <LucidChartConfig> config = GeminiContext.GlobalConfigurationWidgetStore.Get <LucidChartConfig>(Constants.AppId); if (config == null) { config = new GlobalConfigurationWidgetData <LucidChartConfig>(); config.Value = new LucidChartConfig(); config.Value.ConsumerKey = string.Empty; config.Value.ConsumerSecret = string.Empty; } return(new WidgetResult() { Markup = new WidgetMarkup("views/Settings.cshtml", config.Value) }); }
private List <int> GetExcludedUsers(int projectId) { GlobalConfigurationWidgetData <ProjectAdminConfigModel> data = GeminiContext.GlobalConfigurationWidgetStore.Get <ProjectAdminConfigModel>(AppGuid); List <int> excludeUserFromGroups = new List <int>(); if (data != null && data.Value != null && data.Value.Data != null && data.Value.Data.ExcludeUserFromGroups.Count > 0) { var excludedProjectGroups = Cache.ProjectGroups.GetAll().Where(g => data.Value.Data.ExcludeUserFromGroups.Contains(g.Id)); foreach (var group in excludedProjectGroups) { excludeUserFromGroups.AddRange(group.Members. Where(a => (a.ProjectId == projectId || a.ProjectId == null) && a.UserId != Countersoft.Gemini.Commons.Constants.AnonymousUserId && a.UserId != Countersoft.Gemini.Commons.Constants.SystemAccountUserId).Select(s => s.UserId)); } } return(excludeUserFromGroups); }
public ActionResult SaveConfigPage() { var groupIds = Request["groupIds[]"].SplitEntries(',', 0); var userGroupIds = Request["userGroupIds[]"].SplitEntries(',', 0); GlobalConfigurationWidgetData <ProjectAdminConfigModel> data = GeminiContext.GlobalConfigurationWidgetStore.Get <ProjectAdminConfigModel>(AppGuid); if (data == null) { data = new GlobalConfigurationWidgetData <ProjectAdminConfigModel>(); data.AppId = AppGuid; data.Value = new ProjectAdminConfigModel(); data.Value.Data = new ProjectAdminConfigData(); } data.Value.Data.ExcludeGroups = groupIds; data.Value.Data.ExcludeUserFromGroups = userGroupIds; GeminiContext.GlobalConfigurationWidgetStore.Save(AppGuid, data.Value); return(JsonSuccess()); }
public ActionResult Add(string title, int templateId) { GlobalConfigurationWidgetData <ChecklistConfigDataModel> data = GeminiContext.GlobalConfigurationWidgetStore.Get <ChecklistConfigDataModel>(AppGuid); ChecklistConfigTemplateData templateData = null; if (data == null) { data = new GlobalConfigurationWidgetData <ChecklistConfigDataModel>(); data.AppId = AppGuid; data.Value = new ChecklistConfigDataModel(); data.Value.Data = new List <ChecklistConfigTemplateData>(); } else { templateData = data.Value.Data.Find(t => t.TemplateId == templateId); } if (templateData == null) { templateData = new ChecklistConfigTemplateData(); templateData.TemplateId = templateId; data.Value.Data.Add(templateData); data.Value.CurrentSequence = 1; } else { data.Value.CurrentSequence += 1; } templateData.Items.Add(new ChecklistConfigData() { Id = data.Value.CurrentSequence, Title = title }); GeminiContext.GlobalConfigurationWidgetStore.Save(AppGuid, data.Value); return(JsonSuccess()); }
public ChecklistConfigModel GetConfigModel(int templateId = 0) { var templates = ProjectTemplateManager.GetAll(); ChecklistConfigModel model = new ChecklistConfigModel(); GlobalConfigurationWidgetData <ChecklistConfigDataModel> data = GeminiContext.GlobalConfigurationWidgetStore.Get <ChecklistConfigDataModel>(AppGuid); if (data != null && data.Value != null && data.Value.Data != null && templates.Count > 0) { templateId = templateId > 0 ? templateId : templates[0].Id; var item = data.Value.Data.Find(s => s.TemplateId == templateId); if (item != null) { model.Items = item.Items; } } model.Templates = new SelectList(ProjectTemplateManager.GetAll(), "Id", "Name", templateId); return(model); }
public ProjectAdminAppModel BuildModelData() { ProjectAdminAppModel model = new ProjectAdminAppModel(); model.ProjectAdminAppPermissions = new ProjectAdminAppPermissionModel(); //Permission Logic int id = UserContext.Project.Entity.PermissionId.Value; model.ProjectAdminAppPermissions.PermissionSet = new PermissionSetDto(Cache.Permissions.Get(id)); AddRoles(model.ProjectAdminAppPermissions); GlobalConfigurationWidgetData <ProjectAdminConfigModel> data = GeminiContext.GlobalConfigurationWidgetStore.Get <ProjectAdminConfigModel>(AppGuid); var allProjectGroups = Cache.ProjectGroups.GetAll(); //Exclude selected groups from admin screen List <int> excludeGroups = new List <int>(); List <int> excludeUsersFromGroups = new List <int>(); if (data != null && data.Value != null && data.Value.Data != null) { if (data.Value.Data.ExcludeGroups.Count > 0) { excludeGroups = data.Value.Data.ExcludeGroups; } if (data.Value.Data.ExcludeUserFromGroups.Count > 0) { var excludedProjectGroups = allProjectGroups.Where(g => data.Value.Data.ExcludeUserFromGroups.Contains(g.Id)); foreach (var group in excludedProjectGroups) { excludeUsersFromGroups.AddRange(group.Members. Where(a => (a.ProjectId == UserContext.Project.Entity.Id || a.ProjectId == null) && a.UserId != Countersoft.Gemini.Commons.Constants.AnonymousUserId && a.UserId != Countersoft.Gemini.Commons.Constants.SystemAccountUserId).Select(s => s.UserId)); } } } //exclude following groups excludeGroups.Add(Countersoft.Gemini.Commons.Constants.GlobalGroupEveryone); excludeGroups.Add(Countersoft.Gemini.Commons.Constants.GlobalGroupEveryoneAuthenticated); excludeGroups.Add(Countersoft.Gemini.Commons.Constants.GlobalGroupAdministrators); model.ProjectGroups = new List <ProjectGroupModel>(); var projectGroups = allProjectGroups.Where(g => !excludeGroups.Contains(g.Id)); foreach (var projectGroup in projectGroups) { int myProjects = projectGroup.Members.FindAll(m => m.ProjectId == UserContext.Project.Entity.Id && !excludeUsersFromGroups.Contains(m.UserId)).Count(); ProjectGroupModel projectGroupModel = new ProjectGroupModel(); projectGroupModel.Summary = GetSummary(myProjects); projectGroupModel.ProjectGroup = projectGroup; model.ProjectGroups.Add(projectGroupModel); } model.ProjectAttributes = ProjectAttributeRepository.GetAll(UserContext.Project.Entity.Id); return(model); }