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;
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        /// <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);
        }
Example #6
0
        /// <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);
        }