public void saveDocument()
        {
            newChangeManagementProcessModel.DocumentID    = dataGridViewDocumentInformation.Rows[0].Cells[1].Value.ToString();
            newChangeManagementProcessModel.DocumentOwner = dataGridViewDocumentInformation.Rows[1].Cells[1].Value.ToString();
            newChangeManagementProcessModel.IssueDate     = dataGridViewDocumentInformation.Rows[2].Cells[1].Value.ToString();
            newChangeManagementProcessModel.LastSavedDate = dataGridViewDocumentInformation.Rows[3].Cells[1].Value.ToString();
            newChangeManagementProcessModel.FileName      = dataGridViewDocumentInformation.Rows[4].Cells[1].Value.ToString();

            newChangeManagementProcessModel.DocumentHistories = new List <ChangeManagementProcessModel.DocumentHistory>();
            int historyCount = dataGridViewDocumentHistory.Rows.Count;

            for (int i = 0; i < historyCount - 1; i++)
            {
                var version   = dataGridViewDocumentHistory.Rows[i].Cells[0].Value?.ToString() ?? "";
                var issueDate = dataGridViewDocumentHistory.Rows[i].Cells[1].Value?.ToString() ?? "";
                var changes   = dataGridViewDocumentHistory.Rows[i].Cells[2].Value?.ToString() ?? "";

                newChangeManagementProcessModel.DocumentHistories
                .Add(new ChangeManagementProcessModel.DocumentHistory(version, issueDate, changes));
            }

            newChangeManagementProcessModel.DocumentApprovals = new List <ChangeManagementProcessModel.DocumentApproval>();
            int approvalRowsCount = dataGridViewDocumentApprovals.Rows.Count;

            for (int i = 0; i < approvalRowsCount - 1; i++)
            {
                var role      = dataGridViewDocumentApprovals.Rows[i].Cells[0].Value?.ToString() ?? "";
                var name      = dataGridViewDocumentApprovals.Rows[i].Cells[1].Value?.ToString() ?? "";
                var signature = dataGridViewDocumentApprovals.Rows[i].Cells[2].Value?.ToString() ?? "";
                var date      = dataGridViewDocumentApprovals.Rows[i].Cells[3].Value?.ToString() ?? "";

                newChangeManagementProcessModel.DocumentApprovals
                .Add(new ChangeManagementProcessModel.DocumentApproval(role, name, signature, date));
            }

            newChangeManagementProcessModel.ChangeProcessDescription     = txtChangeProcess.Text;
            newChangeManagementProcessModel.ChangeProcessOverview        = txtOverview.Text;
            newChangeManagementProcessModel.ChangeProcessIdentifyChange  = txtIdentifyChange.Text;
            newChangeManagementProcessModel.ChangeProcessReviewChange    = txtReviewChange.Text;
            newChangeManagementProcessModel.ChangeProcessApproveChange   = txtApproveChange.Text;
            newChangeManagementProcessModel.ChangeProcessImplementChange = txtImplementChange.Text;

            newChangeManagementProcessModel.ChangeRolesDescription    = txtChangeRoles.Text;
            newChangeManagementProcessModel.ChangeRolesTeamMember     = txtTeamMember.Text;
            newChangeManagementProcessModel.ChangeRolesProjectManager = txtProjectManager.Text;
            newChangeManagementProcessModel.ChangeRolesProjectBoard   = txtProjectBoard.Text;

            newChangeManagementProcessModel.ChangeDocumentDescription       = txtChangeDocuments.Text;
            newChangeManagementProcessModel.ChangeDocumentChangeRequestForm = txtChangeRequestForm.Text;
            newChangeManagementProcessModel.ChangeDocumentChangeRegister    = txtChangeRegister.Text;


            List <VersionControl <ChangeManagementProcessModel> .DocumentModel> documentModels = versionControl.DocumentModels;

            if (!versionControl.isEqual(currentChangeManagementProcessModel, newChangeManagementProcessModel))
            {
                versionControl.DocumentModels.Add(new VersionControl <ChangeManagementProcessModel>
                                                  .DocumentModel(newChangeManagementProcessModel, DateTime.Now, VersionControl <ChangeManagementProcessModel> .generateID()));
                string json = JsonConvert.SerializeObject(versionControl);
                currentChangeManagementProcessModel = JsonConvert.DeserializeObject <ChangeManagementProcessModel>(JsonConvert.SerializeObject(newChangeManagementProcessModel));
                JsonHelper.saveDocument(json, Settings.Default.ProjectID, "ChangeManagementProcess");
                MessageBox.Show("Change Management Process saved successfully", "save", MessageBoxButtons.OK);
            }
            else
            {
                MessageBox.Show("No changes was made!", "save", MessageBoxButtons.OK);
            }
        }
        private void loadDocument()
        {
            string          json         = JsonHelper.loadDocument(Settings.Default.ProjectID, "ChangeManagementProcess");
            List <string[]> documentInfo = new List <string[]>();

            newChangeManagementProcessModel     = new ChangeManagementProcessModel();
            currentChangeManagementProcessModel = new ChangeManagementProcessModel();
            if (json != "")
            {
                versionControl = JsonConvert.DeserializeObject <VersionControl <ChangeManagementProcessModel> >(json);
                newChangeManagementProcessModel     = JsonConvert.DeserializeObject <ChangeManagementProcessModel>(versionControl.getLatest(versionControl.DocumentModels));
                currentChangeManagementProcessModel = JsonConvert.DeserializeObject <ChangeManagementProcessModel>(versionControl.getLatest(versionControl.DocumentModels));

                documentInfo.Add(new string[] { "Document ID", currentChangeManagementProcessModel.DocumentID });
                documentInfo.Add(new string[] { "Document Owner", currentChangeManagementProcessModel.DocumentOwner });
                documentInfo.Add(new string[] { "Issue Date", currentChangeManagementProcessModel.IssueDate });
                documentInfo.Add(new string[] { "Last Save Date", currentChangeManagementProcessModel.LastSavedDate });
                documentInfo.Add(new string[] { "File Name", currentChangeManagementProcessModel.FileName });

                foreach (var row in documentInfo)
                {
                    dataGridViewDocumentInformation.Rows.Add(row);
                }
                dataGridViewDocumentInformation.AllowUserToAddRows = false;

                foreach (var row in currentChangeManagementProcessModel.DocumentHistories)
                {
                    dataGridViewDocumentHistory.Rows.Add(new string[] { row.Version, row.IssueDate, row.Changes });
                }

                foreach (var row in currentChangeManagementProcessModel.DocumentApprovals)
                {
                    dataGridViewDocumentApprovals.Rows.Add(new string[] { row.Role, row.Name, "", row.DateApproved });
                }

                txtChangeManagementProcessProjectName.Text = projectModel.ProjectName;

                txtChangeProcess.Text   = currentChangeManagementProcessModel.ChangeProcessDescription;
                txtOverview.Text        = currentChangeManagementProcessModel.ChangeProcessOverview;
                txtIdentifyChange.Text  = currentChangeManagementProcessModel.ChangeProcessIdentifyChange;
                txtReviewChange.Text    = currentChangeManagementProcessModel.ChangeProcessReviewChange;
                txtApproveChange.Text   = currentChangeManagementProcessModel.ChangeProcessApproveChange;
                txtImplementChange.Text = currentChangeManagementProcessModel.ChangeProcessImplementChange;

                txtChangeRoles.Text    = currentChangeManagementProcessModel.ChangeRolesDescription;
                txtTeamMember.Text     = currentChangeManagementProcessModel.ChangeRolesTeamMember;
                txtProjectManager.Text = currentChangeManagementProcessModel.ChangeRolesProjectManager;
                txtProjectBoard.Text   = currentChangeManagementProcessModel.ChangeRolesProjectBoard;

                txtChangeDocuments.Text   = currentChangeManagementProcessModel.ChangeDocumentDescription;
                txtChangeRequestForm.Text = currentChangeManagementProcessModel.ChangeDocumentChangeRequestForm;
                txtChangeRegister.Text    = currentChangeManagementProcessModel.ChangeDocumentChangeRegister;
            }
            else
            {
                versionControl = new VersionControl <ChangeManagementProcessModel>();
                versionControl.DocumentModels = new List <VersionControl <ChangeManagementProcessModel> .DocumentModel>();
                documentInfo.Add(new string[] { "Document ID", "" });
                documentInfo.Add(new string[] { "Document Owner", "" });
                documentInfo.Add(new string[] { "Issue Date", "" });
                documentInfo.Add(new string[] { "Last Save Date", "" });
                documentInfo.Add(new string[] { "File Name", "" });
                foreach (var row in documentInfo)
                {
                    dataGridViewDocumentInformation.Rows.Add(row);
                }
                dataGridViewDocumentInformation.AllowUserToAddRows = false;
            }
        }