/// <summary> /// Deserializes the specified dictionary. /// </summary> /// <param name="dictionary">The dictionary.</param> /// <param name="type">The type.</param> /// <param name="serializer">The serializer.</param> /// <returns></returns> public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer) { if (dictionary != null) { var customField = new CustomField(); customField.Id = dictionary.GetValue<int>(RedmineKeys.ID); customField.Name = dictionary.GetValue<string>(RedmineKeys.NAME); customField.CustomizedType = dictionary.GetValue<string>(RedmineKeys.CUSTOMIZED_TYPE); customField.FieldFormat = dictionary.GetValue<string>(RedmineKeys.FIELD_FORMAT); customField.Regexp = dictionary.GetValue<string>(RedmineKeys.REGEXP); customField.MinLength = dictionary.GetValue<int?>(RedmineKeys.MIN_LENGTH); customField.MaxLength = dictionary.GetValue<int?>(RedmineKeys.MAX_LENGTH); customField.IsRequired = dictionary.GetValue<bool>(RedmineKeys.IS_REQUIRED); customField.IsFilter = dictionary.GetValue<bool>(RedmineKeys.IS_FILTER); customField.Searchable = dictionary.GetValue<bool>(RedmineKeys.SEARCHABLE); customField.Multiple = dictionary.GetValue<bool>(RedmineKeys.MULTIPLE); customField.DefaultValue = dictionary.GetValue<string>(RedmineKeys.DEFAULT_VALUE); customField.Visible = dictionary.GetValue<bool>(RedmineKeys.VISIBLE); customField.PossibleValues = dictionary.GetValueAsCollection<CustomFieldPossibleValue>(RedmineKeys.POSSIBLE_VALUES); customField.Trackers = dictionary.GetValueAsCollection<TrackerCustomField>(RedmineKeys.TRACKERS); customField.Roles = dictionary.GetValueAsCollection<CustomFieldRole>(RedmineKeys.ROLES); return customField; } return null; }
public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer) { if (dictionary != null) { var customField = new CustomField(); customField.Id = dictionary.GetValue<int>("id"); customField.Name = dictionary.GetValue<string>("name"); customField.CustomizedType = dictionary.GetValue<string>("customized_type"); customField.FieldFormat = dictionary.GetValue<string>("field_format"); customField.Regexp = dictionary.GetValue<string>("regexp"); customField.MinLength = dictionary.GetValue<int?>("min_length"); customField.MaxLength = dictionary.GetValue<int?>("max_length"); customField.IsRequired = dictionary.GetValue<bool>("is_required"); customField.IsFilter = dictionary.GetValue<bool>("is_filter"); customField.Searchable = dictionary.GetValue<bool>("searchable"); customField.Multiple = dictionary.GetValue<bool>("multiple"); customField.DefaultValue = dictionary.GetValue<string>("default_value"); customField.Visible = dictionary.GetValue<bool>("visible"); customField.PossibleValues = dictionary.GetValueAsCollection<CustomFieldPossibleValue>("possible_values"); customField.Trackers = dictionary.GetValueAsCollection<TrackerCustomField>("trackers"); customField.Roles = dictionary.GetValueAsCollection<CustomFieldRole>("roles"); return customField; } return null; }
private void updateIssue(object sender, EventArgs e) { this.Enabled = false; try { var upload = Program.redmine.uploadFile(this.filesource.Text); if (upload == null) { throw new Exception("Tracker, Upload and Project needs to be set!"); } upload.FileName = this.filename.Text; upload.ContentType = "application/octet-stream"; upload.Description = this.description.Text; var updateIssue = Program.redmine.getIssue(this.getSelectedIssueId(this.oldIssue)); if (updateIssue.Uploads == null) { updateIssue.Uploads = new List<Upload>(); } updateIssue.Uploads.Add(upload); if (this.issueNote.Text.Length > 0) { updateIssue.Notes = this.issueNote.Text; } if (oldissuePriority.SelectedValue != null && (int)oldissuePriority.SelectedValue != 0 ) { updateIssue.Priority = new IdentifiableName{Id = (int)oldissuePriority.SelectedValue}; } if (oldissueAssignee.SelectedValue != null && (int)oldissueAssignee.SelectedValue != 0 ) { updateIssue.AssignedTo = new IdentifiableName{Id = (int)oldissueAssignee.SelectedValue}; } if (oldissueStatus.SelectedValue != null && (int)oldissueStatus.SelectedValue != 0 ) { updateIssue.Status = new IdentifiableName{Id = (int)oldissueStatus.SelectedValue}; } if (oldIssueCategory.SelectedValue != null && (int)oldIssueCategory.SelectedValue != 0) { updateIssue.Category = new IdentifiableName{Id = (int)oldIssueCategory.SelectedValue}; } if (oldIssueVersion.SelectedValue != null && (int)oldIssueVersion.SelectedValue != 0) { updateIssue.FixedVersion = new IdentifiableName{Id = (int)oldIssueVersion.SelectedValue}; } if (oldIssueTracker.SelectedValue != null && (int)oldIssueTracker.SelectedValue != 0) { updateIssue.Tracker = new IdentifiableName{Id = (int)oldIssueTracker.SelectedValue}; } if (updateIssue.CustomFields == null) { updateIssue.CustomFields = new List<CustomField>(); } for (int i = 0;i < customFieldsUpdate.Length;i++) { CustomField item = new CustomField(); item.Id = customFieldDefinitions[i].id; item.Multiple = false; item.Name = customFieldDefinitions[i].name; for (int y = 0;y < updateIssue.CustomFields.Count;y++) { if (updateIssue.CustomFields[y].Id == item.Id) { updateIssue.CustomFields.Remove(updateIssue.CustomFields[y]); break; } } CustomFieldValue customFieldValue = new CustomFieldValue(); customFieldValue.Info = customFieldsUpdate[i].Text; item.Values = new List<CustomFieldValue>(); item.Values.Add(customFieldValue); updateIssue.CustomFields.Add(item); } Program.redmine.updateIssue(updateIssue); DialogResult messageBoxResult = MessageBox.Show( String.Concat("Issue #",updateIssue.Id," succesfully updated.\nOpen Issue now?"), "Success!", MessageBoxButtons.YesNo ); if (messageBoxResult.ToString() == "Yes") { String uri = new UriBuilder(Program.redmine.buffer.host).Uri.ToString(); System.Diagnostics.Process.Start(String.Concat(uri ,"issues/",updateIssue.Id)); } if (Program.redmine.buffer.closeAfterUpload) { Application.Exit(); } } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message,"Error while updating issue."); } this.Enabled = true; }
private void newIssue(object sender, EventArgs e) { this.Enabled = false; try { var upload = Program.redmine.uploadFile(this.filesource.Text); //Create a issue. if (issueTracker.SelectedValue == null || upload == null || projectList.SelectedValue == null) { throw new Exception("Tracker, Upload and Project needs to be set!"); } upload.FileName = this.filename.Text; upload.ContentType = "application/octet-stream"; upload.Description = this.description.Text; IList<Upload> uploads = new List<Upload>(); uploads.Add(upload); var newIssue = new Issue { Subject = this.issueSubject.Text, Project = new IdentifiableName{Id = (int)projectList.SelectedValue}, Tracker = new IdentifiableName{Id = (int)issueTracker.SelectedValue}, Description = this.issueDescription.Text, Uploads = uploads }; string parentIssue = this.getSelectedIssueId(this.parentIssue); if (parentIssue != "") { newIssue.ParentIssue = new IdentifiableName{Id = int.Parse(parentIssue)}; } if (issuePriority.SelectedValue != null && (int)issuePriority.SelectedValue != 0 ) { newIssue.Priority = new IdentifiableName{Id = (int)issuePriority.SelectedValue}; } if (issueAssignee.SelectedValue != null && (int)issueAssignee.SelectedValue != 0 ) { newIssue.AssignedTo = new IdentifiableName{Id = (int)issueAssignee.SelectedValue}; } if (issueCategory.SelectedValue != null && (int)issueCategory.SelectedValue != 0) { newIssue.Category = new IdentifiableName{Id = (int)issueCategory.SelectedValue}; } if (issueVersion.SelectedValue != null && (int)issueVersion.SelectedValue != 0) { newIssue.FixedVersion = new IdentifiableName{Id = (int)issueVersion.SelectedValue}; } for (int i = 0;i < customFieldsNew.Length;i++) { CustomField item = new CustomField(); item.Id = customFieldDefinitions[i].id; item.Multiple = false; item.Name = customFieldDefinitions[i].name; CustomFieldValue customFieldValue = new CustomFieldValue(); customFieldValue.Info = customFieldsNew[i].Text; item.Values = new List<CustomFieldValue>(); item.Values.Add(customFieldValue); newIssue.CustomFields = new List<CustomField>(); newIssue.CustomFields.Add(item); } newIssue = Program.redmine.createIssue(newIssue); DialogResult messageBoxResult = MessageBox.Show( String.Concat("Issue #",newIssue.Id," succesfully created.\nOpen Issue now?"), "Success!", MessageBoxButtons.YesNo ); if (messageBoxResult.ToString() == "Yes") { String uri = new UriBuilder(Program.redmine.buffer.host).Uri.ToString(); System.Diagnostics.Process.Start(String.Concat(uri ,"issues/",newIssue.Id)); } if (Program.redmine.buffer.closeAfterUpload) { Application.Exit(); } } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message,"Error while creating issue."); } this.Enabled = true; }
private void CreateSalonsIssuesAsync(object sender, DoWorkEventArgs e) { var iss = new List<Issue>(); using (var stream = new StreamReader("Configs/Salons.txt")) { var project = _projectService.GetProjects("Migration from PCC to Online", "dvi-migration", null).First(p => p.Identifier == "dvi-migration"); var issues = _issueService.GetIssues(project.Id.ToString(), string.Empty, string.Empty); var customFields = issues.First().CustomFields; string line = string.Empty; while ((line = stream.ReadLine()) != null) { if (!string.IsNullOrEmpty(line)) { var idAndSalon = line.Split(','); if (issues.Any(i => i.Subject == idAndSalon[1] || (i.Subject == (idAndSalon[0] + " - " + idAndSalon[1])))) { continue; } var cf = new List<CustomField>(); foreach (var field in customFields) { var newCf = new CustomField { Id = field.Id, Multiple = field.Multiple, Name = field.Name }; newCf.Values = new List<CustomFieldValue>(); foreach (var val in field.Values) { newCf.Values.Add(new CustomFieldValue { Info = val.Info }); } cf.Add(newCf); } cf[0].Values[0].Info = idAndSalon[0]; iss.Add(new Issue { Subject = idAndSalon[0] + " - " + idAndSalon[1], Project = project, CustomFields = cf }); } } } _issueService.CreateDeploymentIssue(iss); Messenger.Default.Send("Successfully created issues."); }