public void loadDocument()
        {
            string          json         = JsonHelper.loadDocument(Settings.Default.ProjectID, "AcceptancePlan");
            List <string[]> documentInfo = new List <string[]>();

            newAcceptancePlanModel     = new AcceptancePlanModel();
            currentAcceptancePlanModel = new AcceptancePlanModel();
            if (json != "")
            {
                versionControl             = JsonConvert.DeserializeObject <VersionControl <AcceptancePlanModel> >(json);
                newAcceptancePlanModel     = JsonConvert.DeserializeObject <AcceptancePlanModel>(versionControl.getLatest(versionControl.DocumentModels));
                currentAcceptancePlanModel = JsonConvert.DeserializeObject <AcceptancePlanModel>(versionControl.getLatest(versionControl.DocumentModels));

                documentInfo.Add(new string[] { "Document ID", currentAcceptancePlanModel.documentID });
                documentInfo.Add(new string[] { "Document Owner", currentAcceptancePlanModel.documentOwner });
                documentInfo.Add(new string[] { "Issue Date", currentAcceptancePlanModel.issueDate });
                documentInfo.Add(new string[] { "Last Save Date", currentAcceptancePlanModel.lastSavedDate });
                documentInfo.Add(new string[] { "File Name", currentAcceptancePlanModel.fileName });

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

                foreach (var row in currentAcceptancePlanModel.documentHistories)
                {
                    dataGridViewDocumentHistory.Rows.Add(new string[] { row.version, row.issueDate, row.changes });
                }

                foreach (var row in currentAcceptancePlanModel.documentApprovals)
                {
                    dataGridViewDocumentApprovals.Rows.Add(new String[] { row.role, row.name, row.changes, row.date });
                }

                foreach (var row in currentAcceptancePlanModel.documentMilestones)
                {
                    dataGridViewMilestones.Rows.Add(new String[] { row.name, row.description, row.date });
                }

                foreach (var row in currentAcceptancePlanModel.documentCriterias)
                {
                    dataGridViewCriteria.Rows.Add(new String[] { row.name, row.criteria, row.acceptanceStandards });
                }

                foreach (var row in currentAcceptancePlanModel.documentSchedules)
                {
                    dataGridViewSchedule.Rows.Add(new String[] { row.milestone, row.deliverables, row.milestoneDate, row.reviewMethod, row.reviewers, row.acceptanceDate });
                }

                WriteAllToList(listBoxActivities, currentAcceptancePlanModel.activites);
                WriteAllToList(listBoxAssumptions, currentAcceptancePlanModel.assumptions);
                WriteAllToList(listBoxConstraints, currentAcceptancePlanModel.constraints);
                WriteAllToList(listBoxDocuments, currentAcceptancePlanModel.documents);
                WriteAllToList(listBoxRoles, currentAcceptancePlanModel.roles);
            }
            else
            {
                versionControl = new VersionControl <AcceptancePlanModel>();
                versionControl.DocumentModels = new List <VersionControl <AcceptancePlanModel> .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", "" });
                newAcceptancePlanModel = new AcceptancePlanModel();
                foreach (var row in documentInfo)
                {
                    dataGridViewDocumentInformation.Rows.Add(row);
                }
                dataGridViewDocumentInformation.AllowUserToAddRows = false;
            }
        }
        //Back-End
        public void SaveDocument()
        {
            newAcceptancePlanModel.documentID    = dataGridViewDocumentInformation.Rows[0].Cells[1].Value.ToString();
            newAcceptancePlanModel.documentOwner = dataGridViewDocumentInformation.Rows[1].Cells[1].Value.ToString();
            newAcceptancePlanModel.issueDate     = dataGridViewDocumentInformation.Rows[2].Cells[1].Value.ToString();
            newAcceptancePlanModel.lastSavedDate = dataGridViewDocumentInformation.Rows[3].Cells[1].Value.ToString();
            newAcceptancePlanModel.fileName      = dataGridViewDocumentInformation.Rows[4].Cells[1].Value.ToString();

            List <AcceptancePlanModel.DocumentHistory> documentHistories = new List <AcceptancePlanModel.DocumentHistory>();

            int versionRowCount = dataGridViewDocumentHistory.Rows.Count - 1;

            for (int i = 0; i < versionRowCount; i++)
            {
                AcceptancePlanModel.DocumentHistory documentHistory = new AcceptancePlanModel.DocumentHistory();
                var tempVersion   = dataGridViewDocumentHistory.Rows[i].Cells[0].Value?.ToString() ?? "";
                var tempIssueDate = dataGridViewDocumentHistory.Rows[i].Cells[1].Value?.ToString() ?? "";
                var tempChanges   = dataGridViewDocumentHistory.Rows[i].Cells[2].Value?.ToString() ?? "";
                documentHistory.version   = tempVersion;
                documentHistory.issueDate = tempIssueDate;
                documentHistory.changes   = tempChanges;
                documentHistories.Add(documentHistory);
            }
            newAcceptancePlanModel.documentHistories = documentHistories;

            List <AcceptancePlanModel.DocumentApprovals> documentApprovals = new List <AcceptancePlanModel.DocumentApprovals>();

            int approvalRowsCount = dataGridViewDocumentApprovals.Rows.Count - 1;

            for (int i = 0; i < approvalRowsCount; i++)
            {
                AcceptancePlanModel.DocumentApprovals documentApproval = new AcceptancePlanModel.DocumentApprovals();
                var tempRole    = dataGridViewDocumentApprovals.Rows[i].Cells[0].Value?.ToString() ?? "";
                var tempName    = dataGridViewDocumentApprovals.Rows[i].Cells[1].Value?.ToString() ?? "";
                var tempChanges = dataGridViewDocumentApprovals.Rows[i].Cells[2].Value?.ToString() ?? "";
                var tempDate    = dataGridViewDocumentApprovals.Rows[i].Cells[3].Value?.ToString() ?? "";
                documentApproval.role    = tempRole;
                documentApproval.name    = tempName;
                documentApproval.changes = tempChanges;
                documentApproval.date    = tempDate;

                documentApprovals.Add(documentApproval);
            }
            newAcceptancePlanModel.documentApprovals = documentApprovals;

            List <AcceptancePlanModel.DocumentMilestones> documentMilestones = new List <AcceptancePlanModel.DocumentMilestones>();

            int milstonesRowCount = dataGridViewMilestones.Rows.Count - 1;

            for (int i = 0; i < milstonesRowCount; i++)
            {
                AcceptancePlanModel.DocumentMilestones documentMilestone = new AcceptancePlanModel.DocumentMilestones();
                var tempName = dataGridViewMilestones.Rows[i].Cells[0].Value?.ToString() ?? "";
                var tempDesc = dataGridViewMilestones.Rows[i].Cells[1].Value?.ToString() ?? "";
                var tempDate = dataGridViewMilestones.Rows[i].Cells[2].Value?.ToString() ?? "";
                documentMilestone.name        = tempName;
                documentMilestone.description = tempDesc;
                documentMilestone.date        = tempDate;

                documentMilestones.Add(documentMilestone);
            }
            newAcceptancePlanModel.documentMilestones = documentMilestones;

            List <AcceptancePlanModel.DocumentCriteria> documentCriterias = new List <AcceptancePlanModel.DocumentCriteria>();

            int criteriaRowCount = dataGridViewCriteria.Rows.Count - 1;

            for (int i = 0; i < criteriaRowCount; i++)
            {
                AcceptancePlanModel.DocumentCriteria documentCriteria = new AcceptancePlanModel.DocumentCriteria();
                var tempName     = dataGridViewCriteria.Rows[i].Cells[0].Value?.ToString() ?? "";
                var tempCrit     = dataGridViewCriteria.Rows[i].Cells[1].Value?.ToString() ?? "";
                var tempAccStand = dataGridViewCriteria.Rows[i].Cells[2].Value?.ToString() ?? "";
                documentCriteria.name                = tempName;
                documentCriteria.criteria            = tempCrit;
                documentCriteria.acceptanceStandards = tempAccStand;

                documentCriterias.Add(documentCriteria);
            }
            newAcceptancePlanModel.documentCriterias = documentCriterias;

            List <AcceptancePlanModel.DocumentSchedule> documentSchedules = new List <AcceptancePlanModel.DocumentSchedule>();

            int scheduleRowCount = dataGridViewSchedule.Rows.Count - 1;

            for (int i = 0; i < scheduleRowCount; i++)
            {
                AcceptancePlanModel.DocumentSchedule documentSchedule = new AcceptancePlanModel.DocumentSchedule();
                var tempMilestone      = dataGridViewSchedule.Rows[i].Cells[0].Value?.ToString() ?? "";
                var tempDeliver        = dataGridViewSchedule.Rows[i].Cells[1].Value?.ToString() ?? "";
                var tempMilestoneDate  = dataGridViewSchedule.Rows[i].Cells[2].Value?.ToString() ?? "";
                var tempReviewMethod   = dataGridViewSchedule.Rows[i].Cells[3].Value?.ToString() ?? "";
                var tempReviewers      = dataGridViewSchedule.Rows[i].Cells[4].Value?.ToString() ?? "";
                var tempAcceptanceDate = dataGridViewSchedule.Rows[i].Cells[5].Value?.ToString() ?? "";
                documentSchedule.milestone      = tempMilestone;
                documentSchedule.deliverables   = tempDeliver;
                documentSchedule.milestoneDate  = tempMilestoneDate;
                documentSchedule.reviewMethod   = tempReviewMethod;
                documentSchedule.reviewers      = tempReviewers;
                documentSchedule.acceptanceDate = tempAcceptanceDate;

                documentSchedules.Add(documentSchedule);
            }
            newAcceptancePlanModel.documentSchedules = documentSchedules;

            newAcceptancePlanModel.assumptions = ReadAllFromList(listBoxAssumptions);
            newAcceptancePlanModel.constraints = ReadAllFromList(listBoxConstraints);
            newAcceptancePlanModel.activites   = ReadAllFromList(listBoxActivities);
            newAcceptancePlanModel.roles       = ReadAllFromList(listBoxRoles);
            newAcceptancePlanModel.documents   = ReadAllFromList(listBoxDocuments);

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

            if (!versionControl.isEqual(currentAcceptancePlanModel, newAcceptancePlanModel))
            {
                VersionControl <AcceptancePlanModel> .DocumentModel documentModel = new VersionControl <AcceptancePlanModel> .DocumentModel(newAcceptancePlanModel, DateTime.Now, VersionControl <ProjectModel> .generateID());

                documentModels.Add(documentModel);
                versionControl.DocumentModels = documentModels;
                currentAcceptancePlanModel    = JsonConvert.DeserializeObject <AcceptancePlanModel>(JsonConvert.SerializeObject(newAcceptancePlanModel));
                string json = JsonConvert.SerializeObject(versionControl);
                JsonHelper.saveDocument(json, Settings.Default.ProjectID, "AcceptancePlan");
                MessageBox.Show("Acceptance plan saved successfully", "save", MessageBoxButtons.OK);
            }
        }