public ContentResult Save(int issueId) { IssueWidgetData <List <ChecklistData> > data = GeminiContext.IssueWidgetStore.Get <List <ChecklistData> >(issueId, AppGuid, AppControlGuid); int checkId = Request["checkId"].ToInt(0); bool checkedStatus = Request["checkedState"].ToBool(); bool isNewItem = false; if (data == null) { data = new IssueWidgetData <List <ChecklistData> >(); } if (data.Value == null) { data.Value = new List <ChecklistData>(); } ChecklistData item = data.Value.Find(i => i.CheckId == checkId); if (item == null) { item = new ChecklistData() { CheckId = checkId }; isNewItem = true; } if (item != null && item.CheckId == checkId) { item.Checked = checkedStatus; item.CheckedBy = CurrentUser.Fullname; item.CheckedDate = DateTime.UtcNow; if (!item.Checked) { item.CheckedBy = string.Empty; } } if (isNewItem) { data.Value.Add(item); } GeminiContext.IssueWidgetStore.Save(issueId, AppGuid, AppControlGuid, data.Value); return(JsonSuccess(AppManager.Instance.ItemContentWidgetsOnShow(this, UserContext, GeminiContext, Cache, UserContext.Issue, AppGuid, AppControlGuid), "")); }
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); }