/// <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;
        }
Ejemplo n.º 3
0
        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;
        }     
Ejemplo n.º 4
0
        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;
        }
Ejemplo n.º 5
0
        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.");
        }