private static void SetFileAssignmentAttributes(XElement settingsGroup, FileAssignmentInfo fileAssignmentInfo) { foreach (var setting in settingsGroup.Elements()) { if (string.Compare(setting.Name.LocalName, "Setting", StringComparison.InvariantCultureIgnoreCase) == 0) { if (!setting.HasAttributes) { continue; } foreach (var attribute in setting.Attributes()) { if (string.Compare(attribute.Name.LocalName, "Id", StringComparison.InvariantCultureIgnoreCase) == 0 && string.Compare(attribute.Value, "AssignedAt", StringComparison.InvariantCultureIgnoreCase) == 0) { DateTime.TryParse(setting.Value, CultureInfo.CreateSpecificCulture("en-US"), DateTimeStyles.AssumeUniversal, out var assignedAt); fileAssignmentInfo.AssignedAt = assignedAt; } if (string.Compare(attribute.Name.LocalName, "Id", StringComparison.InvariantCultureIgnoreCase) == 0 && string.Compare(attribute.Value, "DueDate", StringComparison.InvariantCultureIgnoreCase) == 0) { DateTime.TryParse(setting.Value, CultureInfo.CreateSpecificCulture("en-US"), DateTimeStyles.AssumeUniversal, out var dueDate); fileAssignmentInfo.DueDate = dueDate; } if (string.Compare(attribute.Name.LocalName, "Id", StringComparison.InvariantCultureIgnoreCase) == 0 && string.Compare(attribute.Value, "AssignedBy", StringComparison.InvariantCultureIgnoreCase) == 0) { fileAssignmentInfo.AssignedBy = setting.Value; } if (string.Compare(attribute.Name.LocalName, "Id", StringComparison.InvariantCultureIgnoreCase) == 0 && string.Compare(attribute.Value, "IsCurrentAssignment", StringComparison.InvariantCultureIgnoreCase) == 0) { bool.TryParse(setting.Value, out var isCurrentAssignment); fileAssignmentInfo.IsCurrentAssignment = isCurrentAssignment; } if (string.Compare(attribute.Name.LocalName, "Id", StringComparison.InvariantCultureIgnoreCase) == 0 && string.Compare(attribute.Value, "Assignees", StringComparison.InvariantCultureIgnoreCase) == 0) { var regexAssigned = new Regex(@"<string>(?<assigned>.*?)<\/string>", RegexOptions.IgnoreCase | RegexOptions.Singleline); var matches = regexAssigned.Matches(setting.ToString()); foreach (Match match in matches) { var assigned = match.Groups["assigned"].Value.Trim(); if (!fileAssignmentInfo.Assignees.Contains(assigned)) { fileAssignmentInfo.Assignees.Add(assigned); } } } } } } }
private static FileAssignmentInfo GetFileAssignmentInfo(XElement settingsGroup, FileStateInfo fileStateInfo) { var settingsBundleId = GetSettingsBundleAttributeValue(settingsGroup, "Id"); if (settingsBundleId == "LanguageFileServerStateSettings") { return(null); } var fileAssignmentInfo = new FileAssignmentInfo { FileStateInfo = fileStateInfo, Phase = GetFileAssignmentPhase(settingsBundleId) }; if (string.IsNullOrEmpty(fileAssignmentInfo.Phase)) { return(fileAssignmentInfo); } SetFileAssignmentAttributes(settingsGroup, fileAssignmentInfo); return(fileAssignmentInfo); }