/// <summary> /// /// </summary> /// <param name="element"></param> /// <param name="client"></param> public ProjectNotification(XElement element, ContentAPI client) : this() { if (element != null) { this.ProjectID = element.GetChildValueAsInt32("ProjectID"); this.Status = element.GetChildValue("Status"); this.URL = new Uri(element.GetChildValue("URL")); this.CreationDate = element.GetChildValueAsDateTime("CreationDate"); this.DueDate = element.GetChildValueAsDateTime("DueDate"); this.CompletionDate = element.GetChildValueAsDateTime("CompletionDate"); XElement errors = element.Element("Errors"); if (errors != null) { foreach (XElement error in errors.Elements("Error")) { this.ErrorsList.Add(error.Value); } } XElement sourceLanguage = element.Element("SourceLanguage"); if (sourceLanguage != null) { this.SourceLanguage = sourceLanguage.GetChildValue("LanguageCode"); } XElement targetLanguages = element.Element("TargetLanguages"); if (targetLanguages != null) { foreach (XElement targetLanguage in targetLanguages.Descendants("LanguageCode")) { this.TargetLanguagesList.Add(targetLanguage.Value); } } XElement products = element.Element("Products"); if (products != null) { this.Products = Product.CreateEnumerable(products, client); } XElement files = element.Element("Files"); if (files != null) { this.Files = File.CreateEnumerable(files, client); } } }
/// <summary> /// Update the Project from XML /// </summary> /// <param name="element"></param> internal void UpdateFromXElement(XElement element) { if (element != null) { this.ProjectID = element.GetChildValueAsInt32("ProjectID"); this.ServiceID = element.GetChildValueAsInt32("ServiceID"); this.Status = element.GetChildValue("Status"); this.URL = element.GetChildValueAsUri("ProjectURL"); this.Name = element.GetChildValue("ProjectName"); this.Price = element.GetChildValueAsDecimal("Price"); this.Currency = element.GetChildValue("Currency"); this.CreationDate = element.GetChildValueAsDateTime("CreationDate"); this.DueDate = element.GetChildValueAsDateTime("ProjectDueDate"); this.DueDate = (this.DueDate == DateTime.MinValue) ? element.GetChildValueAsDateTime("DueDate") : this.DueDate; this.CompletionDate = element.GetChildValueAsDateTime("CompletionDate"); XElement sourceLanguage = element.Element("SourceLanguage"); if (element.Element("SourceLanguage") != null) { this.SourceLanguage = sourceLanguage.GetChildValue("LanguageCode"); } XElement targetLanguages = element.Element("TargetLanguages"); this.TargetLanguagesList = new List <string>(); if (targetLanguages != null) { foreach (XElement targetLanguage in targetLanguages.Descendants("LanguageCode")) { this.TargetLanguagesList.Add(targetLanguage.Value); } } if (element.Element("Products") != null) { this.ProductsList = new List <Product>(Product.CreateEnumerable(element.Element("Products"), this.Client)); } if (element.Element("Files") != null) { if (this.FilesList != null && this.FilesList.Count == element.Descendants("File").Count()) { for (int i = 0; i < this.FilesList.Count; i++) { this.FilesList[i].UpdateFromXElement(element.Descendants("File").InDocumentOrder().ElementAt(i)); } } else { this.FilesList = new List <File>(File.CreateEnumerable(element.Element("Files"), this.Client)); } } if (element.Element("ReferenceFiles") != null) { if (this.ReferenceFilesList != null && this.ReferenceFilesList.Count == element.Descendants("ReferenceFile").Count()) { for (int i = 0; i < this.ReferenceFilesList.Count; i++) { this.ReferenceFilesList[i].UpdateFromXElement(element.Descendants("ReferenceFile").InDocumentOrder().ElementAt(i)); } } else { this.ReferenceFilesList = new List <File>(File.CreateEnumerable(element.Element("ReferenceFiles"), this.Client)); } } } }