public RequirementDetailForm(PresentationModel presentationModel, Requirement requirement)
 {
     InitializeComponent();
     _presentationModel = presentationModel;
     type = UserInterfaceForm.FunctionalType.Hide;
     RefreshRequirementDetail(requirement);
 }
        public RequirementEditorForm(PresentationModel presentationModel, Requirement requirement)
        {
            InitializeComponent();
            this._presentationModel = presentationModel;
            this._requirement = requirement;
            GetUserListByProject();

            _selectedHandler = new User();
            _selectedType = new NormalAttribute();
            _selectedPriority = new NormalAttribute();
            _selectedStatus = new NormalAttribute();

            _projectIds = new List<int>();
            _projectNames = new List<string>();
            _requireIds = new List<int>();
            _requireNames = new List<string>();
            _statusIds = new List<int>();
            _statusNames = new List<string>();
            _projectMemberArrayList = new List<int>();

            GetRequirementMethod(PRIORITY);
            GetRequirementMethod(REQUIREMENT);
            GetRequirementMethod(STATUS);
            CheckPriority();
            nameTextBox.Text = _requirement.Name;
            typeComboBox.SelectedItem = _requirement.Type.Name;
            versionLabel.Text = (Int32.Parse(_requirement.Version) + 1).ToString();
            priorityComboBox.SelectedItem = _requirement.Priority.Name;
            statusComboBox.SelectedItem = _requirement.Status.Name;
            handlerComboBox.Text = _requirement.Handler.Name;
            DescriptionRichTextBox.Text = _requirement.Description;
            MemoRichTextBox.Text = _requirement.Memo;
        }
 public CommentEditorForm(PresentationModel presentationModel, Requirement requirement)
 {
     InitializeComponent();
     _requirement = requirement;
     _presentationModel = presentationModel;
     _requirementLabel.Text = requirement.Name;
     _ownerLabel.Text = _presentationModel.GetUserName();
 }
 public async void GetRequirementByProject()
 {
     HttpResponseMessage response = await _presentationModel.GetRequirementByProject(_project.ID.ToString());
     string content = await response.Content.ReadAsStringAsync();
     if (response.StatusCode == HttpStatusCode.OK)
     {
         JObject json = JObject.Parse(content);
         string message = json["result"].ToString();
         _arrayList = new ArrayList();
         JArray jsonArray = JArray.Parse(json["requirements"].ToString());
         if (message == "success")
         {
             this.requirementListDataGridView.Rows.Clear();
             foreach (JObject jObject in jsonArray)
             {
                 JObject jOwner = jObject["owner"] as JObject;
                 JObject jHandler = jObject["handler"] as JObject;
                 JObject jType = jObject["requirement_type"] as JObject;
                 JObject jPriority = jObject["priority_type"] as JObject;
                 JObject jStatus = jObject["status_type"] as JObject;
                 User owner = _presentationModel.getUser((int)jOwner["id"], jOwner["name"].ToString());
                 User handler = _presentationModel.getUser((int)jHandler["id"], jHandler["name"].ToString());
                 NormalAttribute type = _presentationModel.getRequirementAttribute((int)jType["id"], jType["name"].ToString());
                 NormalAttribute priority = _presentationModel.getRequirementAttribute((int)jPriority["id"], jPriority["name"].ToString());
                 NormalAttribute status = _presentationModel.getRequirementAttribute((int)jStatus["id"], jStatus["name"].ToString());
                 Requirement requirement = new Requirement((int)jObject["id"], _project.ID, jObject["name"].ToString(), owner, handler,
                     jObject["description"].ToString(), jObject["version"].ToString(), jObject["memo"].ToString(),
                     type, priority, status);
                 this.requirementListDataGridView.Rows.Add(jObject["name"], status.Name);
                 _arrayList.Add(requirement);
             }
         }
     }
     else if (response.StatusCode == HttpStatusCode.RequestTimeout)
     {
         MessageBox.Show("伺服器無回應", "Error", MessageBoxButtons.OK);
     }
     else
     {
         MessageBox.Show("伺服器錯誤", "Error", MessageBoxButtons.OK);
     }
 }
 private async void GetRequirementByProject()
 {
     HttpClient client = new HttpClient();
     HttpResponseMessage response;
     var httpClient = new HttpClient();
     try
     {
         const string METHOD = "requirement/getRequirementByProject/";
         string url = MainForm.BASE_URL + METHOD + project.id.ToString();
         Console.WriteLine(url);
         response = await httpClient.GetAsync(url);
         string content = await response.Content.ReadAsStringAsync();
         if (response.StatusCode == HttpStatusCode.OK)
         {
             Console.WriteLine(content);
             JObject json = JObject.Parse(content);
             string message = json["result"].ToString();
             JArray jsonArray = JArray.Parse(json["requirements"].ToString());
             if (message == "success")
             {
                 foreach (JObject jObject in jsonArray)
                 {
                     this.requirementListDataGridView.Rows.Add(jObject["name"], jObject["updated_at"]);
                     Requirement requirement = new Requirement((int)jObject["id"], jObject["name"].ToString(), jObject["description"].ToString(), jObject["version"].ToString(), jObject["memo"].ToString());
                     array.Add(requirement);
                 }
             }
         }
         else
         {
             Console.WriteLine(response.ToString());
             MessageBox.Show("伺服器錯誤", "Error", MessageBoxButtons.OK);
         }
     }
     catch (HttpRequestException e)
     {
         Console.WriteLine(e.ToString());
         MessageBox.Show("伺服器無回應", "Error", MessageBoxButtons.OK);
     }
 }
 public void RefreshRequirementDetail(Requirement requirement)
 {
     this._requirement = requirement;
     idLabel.Text = _requirement.ID.ToString();
     nameLabel.Text = _requirement.Name;
     versionLabel.Text = _requirement.Version;
     typeLabel.Text = _requirement.Type.Name;
     priorityLabel.Text = _requirement.Priority.Name;
     statusLabel.Text = _requirement.Status.Name;
     requirementOwnerLabel.Text = _requirement.Owner.Name;
     handlerLabel.Text = _requirement.Handler.Name;
     descriptionTextBox.Text = _requirement.Description;
     memoTextBox.Text = _requirement.Memo;
     isFinished = false;
     if (requirement.Handler.ID == _presentationModel.GetUID() &&
         (requirement.Status.ID == APPROVED_ID || requirement.Status.ID == FINISHED_ID))
     {
         _finishButton.Enabled = true;
     }
     else
     {
         _finishButton.Enabled = false;
     }
     if (requirement.Status.ID == FINISHED_ID)
     {
         _finishButton.Image = Properties.Resources.ios7_checkmark_outline;
         _finishButton.Text = "Finished";
         isFinished = true;
     }
     else
     {
         _finishButton.Image = Properties.Resources.ios7_circle_outline;
         _finishButton.Text = "Unfinished";
         isFinished = false; ;
     }
     getTestcaseByRequirementId();
     getComment();
     CheckPriority();
 }
 private async void GetRequirementByProject()
 {
     HttpResponseMessage response = await _presentationModel.GetRequirementByProject(_project.ID.ToString());
     string content = await response.Content.ReadAsStringAsync();
     if (response.StatusCode == HttpStatusCode.OK)
     {
         JObject json = JObject.Parse(content);
         string message = json["result"].ToString();
         JArray jsonArray = JArray.Parse(json["requirements"].ToString());
         if (message == "success")
         {
             requirementList = new Requirement[jsonArray.Count];
             for (int i = 0; i < jsonArray.Count; i++ )
             {
                 JObject jObject = (JObject)jsonArray[i];
                 User owner = new User();
                 User handler = new User();
                 JObject jOwner = jObject["owner"] as JObject;
                 owner.ID = (int)jOwner["id"];
                 owner.Name = jOwner["name"].ToString();
                 JObject jHandler = jObject["handler"] as JObject;
                 handler.ID = (int)jHandler["id"];
                 handler.Name = jHandler["name"].ToString();
                 Requirement requirement = new Requirement((int)jObject["id"], _project.ID, jObject["name"].ToString(), owner, handler,
                     jObject["description"].ToString(), jObject["version"].ToString(), jObject["memo"].ToString(),
                     (int)jObject["requirement_type_id"], (int)jObject["priority_type_id"], (int)jObject["status_type_id"]);
             }
             RefreshTestList();
         }
     }
     else if (response.StatusCode == HttpStatusCode.RequestTimeout)
     {
         MessageBox.Show("伺服器無回應", "Error", MessageBoxButtons.OK);
     }
     else
     {
         MessageBox.Show("伺服器錯誤", "Error", MessageBoxButtons.OK);
     }
 }
 public async Task<string> EditRequirement(Requirement requirement)
 {
     HttpClient client = new HttpClient();
     HttpResponseMessage response;
     var httpClient = new HttpClient();
     try
     {
         JObject jObject = new JObject();
         jObject["id"] = requirement.ID;
         jObject["name"] = requirement.Name;
         jObject["description"] = requirement.Description;
         jObject["version"] = requirement.Version;
         jObject["memo"] = requirement.Memo;
         jObject["handler"] = requirement.Handler.ID;
         jObject["uid"] = requirement.Owner.ID;
         jObject["pid"] = requirement.ProjectID;
         jObject["requirement_type_id"] = requirement.Type.ID;
         jObject["priority_type_id"] = requirement.Priority.ID;
         jObject["status_type_id"] = requirement.Status.ID;
         const string METHOD = "requirement/update";
         string url = BASE_URL + METHOD;
         response = await httpClient.PostAsync(url, new StringContent(jObject.ToString(), Encoding.UTF8, "application/json"));
         string content = await response.Content.ReadAsStringAsync();
         if (response.StatusCode == HttpStatusCode.OK)
         {
             JObject json = JObject.Parse(content);
             string message = json["result"].ToString();
             if (message == "success")
             {
                 return "需求修改成功";
             }
             else
             {
                 return "需求修改失敗";
             }
         }
         else
         {
             return "需求修改失敗";
         }
     }
     catch (HttpRequestException)
     {
         return "伺服器無回應";
     }
 }
 public async Task<Requirement[]> GetNoAssociatedRequirementByProjectId(int projectId)
 {
     HttpClient client = new HttpClient();
     HttpResponseMessage response;
     var httpClient = new HttpClient();
     try
     {
         const string METHOD = "requirement/getNoAssociatedRequirementByProjectId/";
         string url = BASE_URL + METHOD + projectId;
         response = await httpClient.GetAsync(url);
         string content = await response.Content.ReadAsStringAsync();
         if (response.StatusCode == HttpStatusCode.OK)
         {
             JObject json = JObject.Parse(content);
             string message = json["result"].ToString();
             JArray jsonArray = JArray.Parse(json["requirement_list"].ToString());
             if (message == "success")
             {
                 Requirement[] requirements = new Requirement[jsonArray.Count];
                 for (int i = 0; i < jsonArray.Count; i++)
                 {
                     JObject jObject = jsonArray[i] as JObject;
                     JObject jOwner = jObject["owner"] as JObject;
                     JObject jHandler = jObject["handler"] as JObject;
                     JObject jType = jObject["requirement_type"] as JObject;
                     JObject jPriority = jObject["priority_type"] as JObject;
                     JObject jStatus = jObject["status_type"] as JObject;
                     User owner = new User((int)jOwner["id"], jOwner["name"].ToString());
                     User handler = new User((int)jHandler["id"], jHandler["name"].ToString());
                     NormalAttribute type = new NormalAttribute((int)jType["id"], jType["name"].ToString());
                     NormalAttribute priority = new NormalAttribute((int)jPriority["id"], jPriority["name"].ToString());
                     NormalAttribute status = new NormalAttribute((int)jStatus["id"], jStatus["name"].ToString());
                     requirements[i] =  new Requirement((int)jObject["id"], projectId, jObject["name"].ToString(), owner, handler,
                         jObject["description"].ToString(), jObject["version"].ToString(), jObject["memo"].ToString(),
                         type, priority, status);
                 }
                 return requirements;
             }
             throw new Exception("取得失敗");
         }
         else if (response.StatusCode == HttpStatusCode.RequestTimeout)
         {
             throw new Exception("伺服器無回應");
         }
         else
         {
             throw new Exception("伺服器錯誤");
         }
     }
     catch (Exception e)
     {
         throw e;
     }
 }
        private async void GetRequirementByProject()
        {
            HttpResponseMessage response = await _presentationModel.GetRequirementByProject(_project.ID.ToString());
            string content = await response.Content.ReadAsStringAsync();
            if (response.StatusCode == HttpStatusCode.OK)
            {
                JObject json = JObject.Parse(content);
                string message = json["result"].ToString();
                JArray jsonArray = JArray.Parse(json["requirements"].ToString());
                if (message == "success")
                {
                    _requirements = new Requirement[jsonArray.Count];
                    for (int i = 0; i < jsonArray.Count; i++ )
                    {
                        JObject jObject = (JObject)jsonArray[i];
                        JObject jOwner = jObject["owner"] as JObject;
                        JObject jHandler = jObject["handler"] as JObject;
                        JObject jType = jObject["requirement_type"] as JObject;
                        JObject jPriority = jObject["priority_type"] as JObject;
                        JObject jStatus = jObject["status_type"] as JObject;
                        User owner = _presentationModel.getUser((int)jOwner["id"], jOwner["name"].ToString());
                        User handler = _presentationModel.getUser((int)jHandler["id"], jHandler["name"].ToString());
                        NormalAttribute type = _presentationModel.getRequirementAttribute((int)jType["id"], jType["name"].ToString());
                        NormalAttribute priority = _presentationModel.getRequirementAttribute((int)jPriority["id"], jPriority["name"].ToString());
                        NormalAttribute status = _presentationModel.getRequirementAttribute((int)jStatus["id"], jStatus["name"].ToString());
                        _requirements[i] = new Requirement((int)jObject["id"], _project.ID, jObject["name"].ToString(), owner, handler,
                            jObject["description"].ToString(), jObject["version"].ToString(), jObject["memo"].ToString(),
                            type, priority, status);

                    }
                    rList = new string[_requirements.Length];
                    for (int i = 0; i < _requirements.Length; i++)
                    {
                        rList[i] = _requirements[i].Name;
                    }
                    CreateAllDataGridView();
                    CreateDataGridViewCell(_RtoRDataGridView, rList, rList, true);
                    GetRequirementToRequirementRelationByProjectId();
                    GetTestListByProject();
                }
            }
            else if (response.StatusCode == HttpStatusCode.RequestTimeout)
            {
                MessageBox.Show("伺服器無回應", "Error", MessageBoxButtons.OK);
            }
            else
            {
                MessageBox.Show("伺服器錯誤", "Error", MessageBoxButtons.OK);
            }
        }
 public async Task<string> EditRequirement(Requirement requirement)
 {
     return await _model.EditRequirement(requirement);
 }