private void btnSave_Click(object sender, EventArgs e)
        {
            List <IssueRegisterModel.IssueEntry> issueEntries = new List <IssueRegisterModel.IssueEntry>();
            int issueEntryCount = dataGridViewSolutionRaiseRaised.Rows.Count;

            for (int i = 0; i < issueEntryCount - 1; i++)
            {
                IssueRegisterModel.IssueEntry issueEntry = new IssueRegisterModel.IssueEntry();
                var id                = dataGridViewSolutionRaiseRaised.Rows[i].Cells[0].Value?.ToString() ?? "";
                var dateRaised        = dataGridViewSolutionRaiseRaised.Rows[i].Cells[1].Value?.ToString() ?? "";
                var raisedBy          = dataGridViewSolutionRaiseRaised.Rows[i].Cells[2].Value?.ToString() ?? "";
                var receivedBy        = dataGridViewSolutionRaiseRaised.Rows[i].Cells[3].Value?.ToString() ?? "";
                var description       = dataGridViewSolutionRaiseRaised.Rows[i].Cells[4].Value?.ToString() ?? "";
                var impact            = dataGridViewSolutionRaiseRaised.Rows[i].Cells[5].Value?.ToString() ?? "";
                var priority          = dataGridViewSolutionRaiseRaised.Rows[i].Cells[6].Value?.ToString() ?? "";
                var action            = dataGridViewSolutionRaiseRaised.Rows[i].Cells[7].Value?.ToString() ?? "";
                var owner             = dataGridViewSolutionRaiseRaised.Rows[i].Cells[8].Value?.ToString() ?? "";
                var outcome           = dataGridViewSolutionRaiseRaised.Rows[i].Cells[9].Value?.ToString() ?? "";
                var dateBeingResolved = dataGridViewSolutionRaiseRaised.Rows[i].Cells[10].Value?.ToString() ?? "";
                var dateResolved      = dataGridViewSolutionRaiseRaised.Rows[i].Cells[11].Value?.ToString() ?? "";

                issueEntry.ID                = (id);
                issueEntry.DateRaised        = dateRaised;
                issueEntry.RaisedBy          = raisedBy;
                issueEntry.ReceivedBy        = receivedBy;
                issueEntry.Description       = description;
                issueEntry.Impact            = impact;
                issueEntry.Priority          = priority;
                issueEntry.Action            = action;
                issueEntry.Owner             = owner;
                issueEntry.Outcome           = outcome;
                issueEntry.DateForResolution = dateBeingResolved;
                issueEntry.DateResolved      = dateResolved;
                issueEntries.Add(issueEntry);
            }

            newIssueRegisterModel.IssueEntries = issueEntries;
            List <VersionControl <IssueRegisterModel> .DocumentModel> documentModels = versionControl.DocumentModels;

            if (!versionControl.isEqual(currentIssueRegisterModel, newIssueRegisterModel))
            {
                VersionControl <IssueRegisterModel> .DocumentModel documentModel = new VersionControl <IssueRegisterModel> .DocumentModel(newIssueRegisterModel, DateTime.Now, VersionControl <IssueRegisterModel> .generateID());

                documentModels.Add(documentModel);
                string json = JsonConvert.SerializeObject(versionControl);
                currentIssueRegisterModel = JsonConvert.DeserializeObject <IssueRegisterModel>(JsonConvert.SerializeObject(newIssueRegisterModel));
                JsonHelper.saveDocument(json, Settings.Default.ProjectID, "IssueRegister");
                MessageBox.Show("Issue Register saved successfully", "save", MessageBoxButtons.OK);
            }
            else
            {
                MessageBox.Show("No changes were made.", "save", MessageBoxButtons.OK);
            }
        }
        public void saveCurrentDocument()
        {
            IssueFormModel tempIssueFormModel = new IssueFormModel();

            tempIssueFormModel.ProjectName             = projectModel.ProjectName;
            tempIssueFormModel.ProjectManagerName      = txtProjectManagerName.Text;
            tempIssueFormModel.IssueID                 = txtIssueID.Text;
            tempIssueFormModel.RaisedBy                = txtRaisedBy.Text;
            tempIssueFormModel.DateRaised              = dateTimePicker1.Value.ToString();
            tempIssueFormModel.IssueDescription        = txtIssueDescription.Text;
            tempIssueFormModel.IssueImpact             = txtIssueImpact.Text;
            tempIssueFormModel.IssueResolution         = txtIssueResolution.Text;
            tempIssueFormModel.SupportingDocumentation = txtSupportingDocumentation.Text;

            IssueRegisterModel.IssueEntry issueEntry = new IssueRegisterModel.IssueEntry();
            issueEntry.ID          = (cmbIssueForms.SelectedIndex + 1).ToString();
            issueEntry.DateRaised  = dateTimePicker1.Value.ToString();
            issueEntry.RaisedBy    = txtRaisedBy.Text;
            issueEntry.ReceivedBy  = txtProjectManagerName.Text;
            issueEntry.Description = txtIssueDescription.Text;
            issueEntry.Impact      = txtIssueImpact.Text;
            issueEntry.Action      = txtIssueResolution.Text;


            newIssueFormModel[cmbIssueForms.SelectedIndex]             = tempIssueFormModel;
            newRegisterModel.IssueEntries[cmbIssueForms.SelectedIndex] = issueEntry;

            List <VersionControl <List <IssueFormModel> > .DocumentModel> documentModels    = versionControl.DocumentModels;
            List <VersionControl <IssueRegisterModel> .DocumentModel>     documentModelsReg = versionControlRegister.DocumentModels;

            if (!versionControl.isEqual(currentIssueFormModel, newIssueFormModel))
            {
                VersionControl <List <IssueFormModel> > .DocumentModel documentModel = new VersionControl <List <IssueFormModel> >
                                                                                       .DocumentModel(newIssueFormModel, DateTime.Now, VersionControl <List <IssueFormModel> >
                                                                                                      .generateID());

                VersionControl <IssueRegisterModel> .DocumentModel documentModelReg = new VersionControl <IssueRegisterModel>
                                                                                      .DocumentModel(newRegisterModel, DateTime.Now, VersionControl <IssueRegisterModel>
                                                                                                     .generateID());


                documentModels.Add(documentModel);
                versionControl.DocumentModels = documentModels;
                string jsonIssueForm = JsonConvert.SerializeObject(versionControl);
                currentIssueFormModel = JsonConvert
                                        .DeserializeObject <List <IssueFormModel> >(JsonConvert.SerializeObject(newIssueFormModel));
                JsonHelper.saveDocument(jsonIssueForm, Settings.Default.ProjectID, "IssueForm");

                documentModelsReg.Add(documentModelReg);
                versionControlRegister.DocumentModels = documentModelsReg;
                string jsonIssueRegister = JsonConvert.SerializeObject(versionControlRegister);
                JsonHelper.saveDocument(jsonIssueRegister, Settings.Default.ProjectID, "IssueRegister");
                currentIssueFormModel = JsonConvert
                                        .DeserializeObject <List <IssueFormModel> >(JsonConvert.SerializeObject(newIssueFormModel));
                MessageBox.Show("Issue Form saved successfully", "save", MessageBoxButtons.OK);
            }
            else
            {
                MessageBox.Show("No changes was made!", "save", MessageBoxButtons.OK);
            }
        }