예제 #1
0
        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), ""));
        }
예제 #2
0
        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);
        }