public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer) { if (dictionary != null) { var customField = new IssueCustomField(); customField.Id = dictionary.GetValue<int>(RedmineKeys.ID); customField.Name = dictionary.GetValue<string>(RedmineKeys.NAME); customField.Multiple = dictionary.GetValue<bool>(RedmineKeys.MULTIPLE); var val = dictionary.GetValue<object>(RedmineKeys.VALUE); if (val != null) { if (customField.Values == null) customField.Values = new List<CustomFieldValue>(); var list = val as ArrayList; if (list != null) { foreach (string value in list) { customField.Values.Add(new CustomFieldValue { Info = value }); } } else { customField.Values.Add(new CustomFieldValue { Info = val as string }); } } return customField; } return null; }
public object Deserialize(JObject obj, JsonSerializer serializer) { if (obj == null) return null; var customField = new IssueCustomField { Id = obj.Value<int>(RedmineKeys.ID), Name = obj.Value<string>(RedmineKeys.NAME), Multiple = obj.Value<bool>(RedmineKeys.MULTIPLE) }; var val = obj.Value<object>(RedmineKeys.VALUE); var items = serializer.Deserialize(new JTokenReader(val.ToString()), typeof(List<CustomFieldValue>)) as List<CustomFieldValue>; customField.Values = items; if (items == null) return customField; if (customField.Values == null) customField.Values = new List<CustomFieldValue>(); var list = val as ArrayList; if (list != null) { foreach (string value in list) { customField.Values.Add(new CustomFieldValue {Info = value}); } } else { customField.Values.Add(new CustomFieldValue {Info = val as string}); } return customField; }
public override object Deserialize( IDictionary <string, object> dictionary, Type type, JavaScriptSerializer serializer) { if (dictionary == null) { return(null); } var customField = new IssueCustomField { Id = dictionary.GetValue <int>("id"), Name = dictionary.GetValue <string>("name"), Multiple = dictionary.GetValue <bool>("multiple") }; var val = dictionary.GetValue <object>("value"); if (val == null) { return(customField); } if (customField.Values == null) { customField.Values = new List <CustomFieldValue>(); } var list = val as ArrayList; if (list != null) { foreach (string value in list) { customField.Values.Add( new CustomFieldValue { Info = value }); } } else { customField.Values.Add( new CustomFieldValue { Info = val as string }); } return(customField); }
public object Deserialize(JObject obj, JsonSerializer serializer) { if (obj == null) { return(null); } var customField = new IssueCustomField { Id = obj.Value <int>(RedmineKeys.ID), Name = obj.Value <string>(RedmineKeys.NAME), Multiple = obj.Value <bool>(RedmineKeys.MULTIPLE) }; var val = obj.Value <object>(RedmineKeys.VALUE); var items = serializer.Deserialize(new JTokenReader(val.ToString()), typeof(List <CustomFieldValue>)) as List <CustomFieldValue>; customField.Values = items; if (items == null) { return(customField); } if (customField.Values == null) { customField.Values = new List <CustomFieldValue>(); } var list = val as ArrayList; if (list != null) { foreach (string value in list) { customField.Values.Add(new CustomFieldValue { Info = value }); } } else { customField.Values.Add(new CustomFieldValue { Info = val as string }); } return(customField); }
/// <summary> /// When overridden in a derived class, converts the provided dictionary into an object of the specified type. /// </summary> /// <param name="dictionary"> /// An <see cref="T:System.Collections.Generic.IDictionary`2" /> instance of property data stored /// as name/value pairs. /// </param> /// <param name="type">The type of the resulting object.</param> /// <param name="serializer">The <see cref="T:System.Web.Script.Serialization.JavaScriptSerializer" /> instance.</param> /// <returns> /// The deserialized object. /// </returns> public override object Deserialize(IDictionary <string, object> dictionary, Type type, JavaScriptSerializer serializer) { if (dictionary != null) { var customField = new IssueCustomField(); customField.Id = dictionary.GetValue <int>(RedmineKeys.ID); customField.Name = dictionary.GetValue <string>(RedmineKeys.NAME); customField.Multiple = dictionary.GetValue <bool>(RedmineKeys.MULTIPLE); var val = dictionary.GetValue <object>(RedmineKeys.VALUE); if (val != null) { if (customField.Values == null) { customField.Values = new List <CustomFieldValue>(); } var list = val as ArrayList; if (list != null) { foreach (var value in list) { customField.Values.Add(new CustomFieldValue { Info = Convert.ToString(value) }); } } else { customField.Values.Add(new CustomFieldValue { Info = Convert.ToString(val) }); } } return(customField); } return(null); }
/// <summary> /// Method to create the a time entry from the info object /// </summary> /// <param name="item">the time entry info to update the infos from</param> /// <returns>the time entry which can be sent to redmine</returns> internal TimeEntry CreateTimeEntryFromInfoObject(TimeEntryInfo item) { // get base info var user = this.GetCurrentUser(); var activityInfo = item.ActivityInfo; var issueInfo = item.IssueInfo; // create new time entry for redmine var timeEntry = new TimeEntry { Activity = new IdentifiableName { Id = activityInfo.Id.Value, Name = activityInfo.Name }, Issue = new IdentifiableName { Id = issueInfo.Id.Value, Name = issueInfo.Name }, User = new IdentifiableName { Id = user.Id.Value }, Comments = item.Name, CreatedOn = DateTime.Now, UpdatedOn = item.UpdateTime, SpentOn = item.StartDateTime.Date, Hours = 0 }; // create start and end time custom fields var startTimeField = new IssueCustomField { Name = "Start", Id = 1 }; var startTimeValue = new CustomFieldValue { Info = item.StartDateTime.ToString("HH:mm") }; startTimeField.Values = new List <CustomFieldValue> { startTimeValue }; timeEntry.CustomFields = new List <IssueCustomField> { startTimeField }; var endTimeField = new IssueCustomField { Name = "End", Id = 2 }; var endTimeValue = new CustomFieldValue { Info = item.EndDateTime.ToString("HH:mm") }; endTimeField.Values = new List <CustomFieldValue> { endTimeValue }; timeEntry.CustomFields.Add(endTimeField); // set the hours if (issueInfo.Id != Settings.Default.RedmineUseOvertimeIssue) { timeEntry.Hours = (decimal)(item.EndDateTime - item.StartDateTime).TotalHours; } // set the Id if there is already one if (item.Id != null) { timeEntry.Id = item.Id.Value; } return(timeEntry); }