public static async Task <ProjectPlanModel> OpenProjectPlanAsync(string filename) { if (File.Exists(filename)) { using StreamReader reader = File.OpenText(filename); string content = await reader.ReadToEndAsync().ConfigureAwait(true); JObject json = JObject.Parse(content); string version = json.GetValue(nameof(ProjectPlanModel.Version), StringComparison.OrdinalIgnoreCase)?.ToString(); string jsonString = json.ToString(); ProjectPlanModel projectPlan = null; version.ValueSwitchOn() .Case(Versions.v0_1_0_original, x => { projectPlan = Data.ProjectPlan.Converter.Upgrade(JsonConvert.DeserializeObject <Data.ProjectPlan.v0_1_0.ProjectPlanModel>(jsonString)); }) .Case(Versions.v0_1_0, x => { projectPlan = Data.ProjectPlan.Converter.Upgrade(JsonConvert.DeserializeObject <Data.ProjectPlan.v0_1_0.ProjectPlanModel>(jsonString)); }) .Case(Versions.v0_2_0, x => { projectPlan = Data.ProjectPlan.Converter.Upgrade(JsonConvert.DeserializeObject <Data.ProjectPlan.v0_2_0.ProjectPlanModel>(jsonString)); }) .Default(x => throw new InvalidOperationException($@"Cannot process version ""{x}"".")); return(projectPlan); } return(null); }
public static void SaveProjectPlan( ProjectPlanModel state, string fileName) { using StreamWriter writer = File.CreateText(fileName); var jsonSerializer = JsonSerializer.Create( new JsonSerializerSettings { Formatting = Formatting.Indented, NullValueHandling = NullValueHandling.Ignore, }); Data.ProjectPlan.v0_2_0.ProjectPlanModel output = Data.ProjectPlan.Converter.Format(state); jsonSerializer.Serialize(writer, output, output.GetType()); }
private void loadDocument(ProjectPlanModel projectPlanModel) { List<string[]> documentInfo = new List<string[]>(); documentInfo.Add(new string[] { "Document ID", projectPlanModel.DocumentID }); documentInfo.Add(new string[] { "Document Owner", projectPlanModel.DocumentOwner }); documentInfo.Add(new string[] { "Issue Date", projectPlanModel.IssueDate }); documentInfo.Add(new string[] { "Last Save Date", projectPlanModel.LastSavedDate }); documentInfo.Add(new string[] { "File Name", projectPlanModel.FileName }); documentInformation.Rows.Clear(); foreach (var row in documentInfo) { documentInformation.Rows.Add(row); } documentInformation.AllowUserToAddRows = false; documentHistoryDataGridView.Rows.Clear(); foreach (var row in projectPlanModel.DocumentHistories) { documentHistoryDataGridView.Rows.Add(new string[] { row.Version, row.IssueDate, row.Changes }); } documentApprovalsDataGridView.Rows.Clear(); foreach (var row in projectPlanModel.DocumentApprovals) { documentApprovalsDataGridView.Rows.Add(new string[] { row.Role, row.Name, "", row.DateApproved }); } phasesDataGridView.Rows.Clear(); foreach (var row in projectPlanModel.Phases) { phasesDataGridView.Rows.Add(new string[] { row.PhaseTitle, row.PhaseDescription, row.PhaseSequence }); } activitiesDataGridView.Rows.Clear(); foreach (var row in projectPlanModel.Activities) { activitiesDataGridView.Rows.Add(new string[] { row.PhaseTitle, row.ActivityTitle, row.ActivityDescription, row.ActivitySequence }); } tasksDataGridView.Rows.Clear(); foreach (var row in projectPlanModel.Tasks) { tasksDataGridView.Rows.Add(new string[] { row.ActivityTitle, row.TaskTitle, row.TaskDescription, row.TaskSequence }); } milestonesDataGridView.Rows.Clear(); foreach (var row in projectPlanModel.Milestones) { milestonesDataGridView.Rows.Add(new string[] { row.MilestoneTitle, row.MilestoneDescription, row.MilestoneDate }); } effortDataGridView.Rows.Clear(); foreach (var row in projectPlanModel.Efforts) { effortDataGridView.Rows.Add(new string[] { row.TaskTitle, row.Resource, row.EffortMade }); } dependenciesDataGridView.Rows.Clear(); foreach (var row in projectPlanModel.Dependencies) { dependenciesDataGridView.Rows.Add(new string[] { row.ActivityTitle, row.DependsOn, row.DependencyType }); } assumptionsTxt.Text = projectPlanModel.Asssumptions; constrainsTxt.Text = projectPlanModel.Constraints; }
private void cmbVersions_SelectedIndexChanged(object sender, EventArgs e) { ProjectPlanModel currentVersion = versionControl.DocumentModels[cmbVersions.SelectedIndex].DocumentObject; loadDocument(currentVersion); }
public void saveDocument() { newProjectPlanModel.DocumentID = documentInformation.Rows[0].Cells[1].Value.ToString(); newProjectPlanModel.DocumentOwner = documentInformation.Rows[1].Cells[1].Value.ToString(); newProjectPlanModel.IssueDate = documentInformation.Rows[2].Cells[1].Value.ToString(); newProjectPlanModel.LastSavedDate = documentInformation.Rows[3].Cells[1].Value.ToString(); newProjectPlanModel.FileName = documentInformation.Rows[4].Cells[1].Value.ToString(); List <ProjectPlanModel.DocumentHistory> documentHistories = new List <ProjectPlanModel.DocumentHistory>(); int versionRowsCount = documentHistoryDataGridView.Rows.Count; for (int i = 0; i < versionRowsCount - 1; i++) { ProjectPlanModel.DocumentHistory documentHistoryModel = new ProjectPlanModel.DocumentHistory(); var version = documentHistoryDataGridView.Rows[i].Cells[0].Value?.ToString() ?? ""; var issueDate = documentHistoryDataGridView.Rows[i].Cells[1].Value?.ToString() ?? ""; var changes = documentHistoryDataGridView.Rows[i].Cells[2].Value?.ToString() ?? ""; documentHistoryModel.Version = version; documentHistoryModel.IssueDate = issueDate; documentHistoryModel.Changes = changes; documentHistories.Add(documentHistoryModel); } newProjectPlanModel.DocumentHistories = documentHistories; List <ProjectPlanModel.DocumentApproval> documentApprovalsModel = new List <ProjectPlanModel.DocumentApproval>(); int approvalRowsCount = documentApprovalsDataGridView.Rows.Count; for (int i = 0; i < approvalRowsCount - 1; i++) { ProjectPlanModel.DocumentApproval documentApproval = new ProjectPlanModel.DocumentApproval(); var role = documentApprovalsDataGridView.Rows[i].Cells[0].Value?.ToString() ?? ""; var name = documentApprovalsDataGridView.Rows[i].Cells[1].Value?.ToString() ?? ""; var signature = documentApprovalsDataGridView.Rows[i].Cells[2].Value?.ToString() ?? ""; var date = documentApprovalsDataGridView.Rows[i].Cells[3].Value?.ToString() ?? ""; documentApproval.Role = role; documentApproval.Name = name; documentApproval.Signature = signature; documentApproval.DateApproved = date; documentApprovalsModel.Add(documentApproval); } newProjectPlanModel.DocumentApprovals = documentApprovalsModel; List <ProjectPlanModel.Phase> phases = new List <ProjectPlanModel.Phase>(); int phaseRowsCount = phasesDataGridView.Rows.Count; for (int i = 0; i < phaseRowsCount - 1; i++) { ProjectPlanModel.Phase phase = new ProjectPlanModel.Phase(); var phaseTitle = phasesDataGridView.Rows[i].Cells[0].Value?.ToString() ?? ""; var phaseDescription = phasesDataGridView.Rows[i].Cells[1].Value?.ToString() ?? ""; var phaseSequence = phasesDataGridView.Rows[i].Cells[2].Value?.ToString() ?? ""; phase.PhaseTitle = phaseTitle; phase.PhaseDescription = phaseDescription; phase.PhaseSequence = phaseSequence; phases.Add(phase); } newProjectPlanModel.Phases = phases; List <ProjectPlanModel.Activity> activities = new List <ProjectPlanModel.Activity>(); int activityRowsCount = activitiesDataGridView.Rows.Count; for (int i = 0; i < activityRowsCount - 1; i++) { ProjectPlanModel.Activity activity = new ProjectPlanModel.Activity(); var phaseTitle = activitiesDataGridView.Rows[i].Cells[0].Value?.ToString() ?? ""; var activityTitle = activitiesDataGridView.Rows[i].Cells[1].Value?.ToString() ?? ""; var activityDescription = activitiesDataGridView.Rows[i].Cells[2].Value?.ToString() ?? ""; var activitySequence = activitiesDataGridView.Rows[i].Cells[3].Value?.ToString() ?? ""; activity.PhaseTitle = phaseTitle; activity.ActivityTitle = activityTitle; activity.ActivityDescription = activityDescription; activity.ActivitySequence = activitySequence; activities.Add(activity); } newProjectPlanModel.Activities = activities; List <ProjectPlanModel.Task> tasks = new List <ProjectPlanModel.Task>(); int tasksRowsCount = tasksDataGridView.Rows.Count; for (int i = 0; i < tasksRowsCount - 1; i++) { ProjectPlanModel.Task task = new ProjectPlanModel.Task(); var activityTitle = tasksDataGridView.Rows[i].Cells[0].Value?.ToString() ?? ""; var taskTitle = tasksDataGridView.Rows[i].Cells[1].Value?.ToString() ?? ""; var taskDescription = tasksDataGridView.Rows[i].Cells[2].Value?.ToString() ?? ""; var taskSequence = tasksDataGridView.Rows[i].Cells[3].Value?.ToString() ?? ""; task.ActivityTitle = activityTitle; task.TaskTitle = taskTitle; task.TaskDescription = taskDescription; task.TaskSequence = taskSequence; tasks.Add(task); } newProjectPlanModel.Tasks = tasks; List <ProjectPlanModel.Milestone> milestones = new List <ProjectPlanModel.Milestone>(); int milestoneRowsCount = milestonesDataGridView.Rows.Count; for (int i = 0; i < milestoneRowsCount - 1; i++) { ProjectPlanModel.Milestone milestone = new ProjectPlanModel.Milestone(); var milestoneTitle = milestonesDataGridView.Rows[i].Cells[0].Value?.ToString() ?? ""; var milestoneDescription = milestonesDataGridView.Rows[i].Cells[1].Value?.ToString() ?? ""; var milestoneDate = milestonesDataGridView.Rows[i].Cells[2].Value?.ToString() ?? ""; milestone.MilestoneTitle = milestoneTitle; milestone.MilestoneDescription = milestoneDescription; milestone.MilestoneDate = milestoneDate; milestones.Add(milestone); } newProjectPlanModel.Milestones = milestones; List <ProjectPlanModel.Effort> efforts = new List <ProjectPlanModel.Effort>(); int effortRowsCount = effortDataGridView.Rows.Count; for (int i = 0; i < effortRowsCount - 1; i++) { ProjectPlanModel.Effort effort = new ProjectPlanModel.Effort(); var taskTitle = effortDataGridView.Rows[i].Cells[0].Value?.ToString() ?? ""; var resource = effortDataGridView.Rows[i].Cells[1].Value?.ToString() ?? ""; var effortMade = effortDataGridView.Rows[i].Cells[2].Value?.ToString() ?? ""; effort.TaskTitle = taskTitle; effort.Resource = resource; effort.EffortMade = effortMade; efforts.Add(effort); } newProjectPlanModel.Efforts = efforts; List <ProjectPlanModel.Dependency> dependencies = new List <ProjectPlanModel.Dependency>(); int dependenciesRowsCount = dependenciesDataGridView.Rows.Count; for (int i = 0; i < dependenciesRowsCount - 1; i++) { ProjectPlanModel.Dependency dependency = new ProjectPlanModel.Dependency(); var activityTitle = dependenciesDataGridView.Rows[i].Cells[0].Value?.ToString() ?? ""; var dependsOn = dependenciesDataGridView.Rows[i].Cells[1].Value?.ToString() ?? ""; var dependencyType = dependenciesDataGridView.Rows[i].Cells[2].Value?.ToString() ?? ""; dependency.ActivityTitle = activityTitle; dependency.DependsOn = dependsOn; dependency.DependencyType = dependencyType; dependencies.Add(dependency); } newProjectPlanModel.Dependencies = dependencies; newProjectPlanModel.Asssumptions = assumptionsTxt.Text; newProjectPlanModel.Constraints = constrainsTxt.Text; List <VersionControl <ProjectPlanModel> .DocumentModel> documentModels = versionControl.DocumentModels; if (!versionControl.isEqual(currentProjectPlanModel, newProjectPlanModel)) { VersionControl <ProjectPlanModel> .DocumentModel documentModel = new VersionControl <ProjectPlanModel> .DocumentModel(newProjectPlanModel, DateTime.Now, VersionControl <ProjectModel> .generateID()); documentModels.Add(documentModel); versionControl.DocumentModels = documentModels; string json = JsonConvert.SerializeObject(versionControl); currentProjectPlanModel = JsonConvert.DeserializeObject <ProjectPlanModel>(JsonConvert.SerializeObject(newProjectPlanModel)); newProjectPlanModel = new ProjectPlanModel(); JsonHelper.saveDocument(json, Settings.Default.ProjectID, "ProjectPlan"); MessageBox.Show("Project plan 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, "ProjectPlan"); List <string[]> documentInfo = new List <string[]>(); newProjectPlanModel = new ProjectPlanModel(); currentProjectPlanModel = new ProjectPlanModel(); if (json != "") { versionControl = JsonConvert.DeserializeObject <VersionControl <ProjectPlanModel> >(json); newProjectPlanModel = JsonConvert.DeserializeObject <ProjectPlanModel>(versionControl.getLatest(versionControl.DocumentModels)); currentProjectPlanModel = JsonConvert.DeserializeObject <ProjectPlanModel>(versionControl.getLatest(versionControl.DocumentModels)); documentInfo.Add(new string[] { "Document ID", currentProjectPlanModel.DocumentID }); documentInfo.Add(new string[] { "Document Owner", currentProjectPlanModel.DocumentOwner }); documentInfo.Add(new string[] { "Issue Date", currentProjectPlanModel.IssueDate }); documentInfo.Add(new string[] { "Last Save Date", currentProjectPlanModel.LastSavedDate }); documentInfo.Add(new string[] { "File Name", currentProjectPlanModel.FileName }); foreach (var row in documentInfo) { documentInformation.Rows.Add(row); } documentInformation.AllowUserToAddRows = false; foreach (var row in currentProjectPlanModel.DocumentHistories) { documentHistoryDataGridView.Rows.Add(new string[] { row.Version, row.IssueDate, row.Changes }); } foreach (var row in currentProjectPlanModel.DocumentApprovals) { documentApprovalsDataGridView.Rows.Add(new string[] { row.Role, row.Name, "", row.DateApproved }); } foreach (var row in currentProjectPlanModel.Phases) { phasesDataGridView.Rows.Add(new string[] { row.PhaseTitle, row.PhaseDescription, row.PhaseSequence }); } foreach (var row in currentProjectPlanModel.Activities) { activitiesDataGridView.Rows.Add(new string[] { row.PhaseTitle, row.ActivityTitle, row.ActivityDescription, row.ActivitySequence }); } foreach (var row in currentProjectPlanModel.Tasks) { tasksDataGridView.Rows.Add(new string[] { row.ActivityTitle, row.TaskTitle, row.TaskDescription, row.TaskSequence }); } foreach (var row in currentProjectPlanModel.Milestones) { milestonesDataGridView.Rows.Add(new string[] { row.MilestoneTitle, row.MilestoneDescription, row.MilestoneDate }); } foreach (var row in currentProjectPlanModel.Efforts) { effortDataGridView.Rows.Add(new string[] { row.TaskTitle, row.Resource, row.EffortMade }); } foreach (var row in currentProjectPlanModel.Dependencies) { dependenciesDataGridView.Rows.Add(new string[] { row.ActivityTitle, row.DependsOn, row.DependencyType }); } assumptionsTxt.Text = currentProjectPlanModel.Asssumptions; constrainsTxt.Text = currentProjectPlanModel.Constraints; } else { versionControl = new VersionControl <ProjectPlanModel>(); versionControl.DocumentModels = new List <VersionControl <ProjectPlanModel> .DocumentModel>(); newProjectPlanModel = new ProjectPlanModel(); 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) { documentInformation.Rows.Add(row); } documentInformation.AllowUserToAddRows = false; } }