public void Copy(Inspection inspection) { if (inspection == null) { throw new ArgumentNullException("inspection"); } if (inspection.IsClosesOnModified) { ClosesOn = inspection.ClosesOn; } if (inspection.IsOpensOnModified) { OpensOn = inspection.OpensOn; } }
public void Copy(Listing newListing) { if (newListing == null) { throw new ArgumentNullException("newListing"); } if (!newListing.IsModified) { return; } base.Copy(newListing); if (newListing.IsAgencyIdModified) { AgencyId = newListing.AgencyId; } if (newListing.IsStatusTypeModified) { StatusType = newListing.StatusType; } if (newListing.IsCreatedOnModified) { CreatedOn = newListing.CreatedOn; } if (newListing.IsTitleModified) { Title = newListing.Title; } if (newListing.IsDescriptionModified) { Description = newListing.Description; } if (newListing.IsAddressModified) { if (newListing.Address == null) { Address = null; } else { if (Address == null) { Address = new Address(); } if (newListing.Address.IsModified) { Address.Copy(newListing.Address); } IsAddressModified = true; } } if (newListing.IsAgentsModified) { if (newListing.Agents == null) { Agents = null; } else { Agents = new List<ListingAgent>(); foreach (var newAgent in newListing.Agents) { var agent = new ListingAgent(); agent.Copy(newAgent); Agents.Add(agent); } } } if (newListing.IsImagesModified) { if (newListing.Images == null) { Images = null; } else { Images = new List<Media>(); foreach (var newImage in newListing.Images) { var image = new Media(); image.Copy(newImage); Images.Add(image); } } } if (newListing.IsFloorPlansModified) { if (newListing.FloorPlans == null) { FloorPlans = null; } else { FloorPlans = new List<Media>(); foreach (var newFloorPlan in newListing.FloorPlans) { var floorPlan = new Media(); floorPlan.Copy(newFloorPlan); FloorPlans.Add(floorPlan); } } } if (newListing.IsVideosModified) { if (newListing.Videos == null) { Videos = null; } else { Videos = new List<Media>(); foreach (var newVideo in newListing.Videos) { var video = new Media(); video.Copy(newVideo); Videos.Add(video); } } } if (newListing.IsInspectionsModified) { if (newListing.Inspections == null) { Inspections = null; } else { Inspections = new List<Inspection>(); foreach (var newInspection in newListing.Inspections) { var inspection = new Inspection(); inspection.Copy(newInspection); Inspections.Add(inspection); } } } if (newListing.IsLandDetailsModified) { if (newListing.LandDetails == null) { LandDetails = null; } else { if (LandDetails == null) { LandDetails = new LandDetails(); } if (newListing.LandDetails.IsModified) { LandDetails.Copy(newListing.LandDetails); } IsLandDetailsModified = true; } } if (newListing.IsFeaturesModified) { if (newListing.Features == null) { Features = null; } else { if (Features == null) { Features = new Features(); } if (newListing.Features.IsModified) { Features.Copy(newListing.Features); } IsFeaturesModified = true; } } if (newListing.IsLinksModified) { Links = newListing.Links == null ? null : new List<string>(newListing.Links); } }
public void Copy(Listing newListing) { if (newListing == null) { throw new ArgumentNullException("newListing"); } if (!newListing.IsModified) { return; } base.Copy(newListing); if (newListing.IsAgencyIdModified) { AgencyId = newListing.AgencyId; } if (newListing.IsStatusTypeModified) { StatusType = newListing.StatusType; } if (newListing.IsCreatedOnModified) { CreatedOn = newListing.CreatedOn; } if (newListing.IsTitleModified) { Title = newListing.Title; } if (newListing.IsDescriptionModified) { Description = newListing.Description; } if (newListing.IsAddressModified) { if (newListing.Address == null) { Address = null; } else { if (Address == null) { Address = new Address(); } if (newListing.Address.IsModified) { Address.Copy(newListing.Address); } IsAddressModified = true; } } if (newListing.IsAgentsModified) { if (newListing.Agents == null) { Agents = null; } else { Agents = new List <ListingAgent>(); foreach (var newAgent in newListing.Agents) { var agent = new ListingAgent(); agent.Copy(newAgent); Agents.Add(agent); } } } if (newListing.IsImagesModified) { if (newListing.Images == null) { Images = null; } else { Images = new List <Media>(); foreach (var newImage in newListing.Images) { var image = new Media(); image.Copy(newImage); Images.Add(image); } } } if (newListing.IsFloorPlansModified) { if (newListing.FloorPlans == null) { FloorPlans = null; } else { FloorPlans = new List <Media>(); foreach (var newFloorPlan in newListing.FloorPlans) { var floorPlan = new Media(); floorPlan.Copy(newFloorPlan); FloorPlans.Add(floorPlan); } } } if (newListing.IsVideosModified) { if (newListing.Videos == null) { Videos = null; } else { Videos = new List <Media>(); foreach (var newVideo in newListing.Videos) { var video = new Media(); video.Copy(newVideo); Videos.Add(video); } } } if (newListing.IsInspectionsModified) { if (newListing.Inspections == null) { Inspections = null; } else { Inspections = new List <Inspection>(); foreach (var newInspection in newListing.Inspections) { var inspection = new Inspection(); inspection.Copy(newInspection); Inspections.Add(inspection); } } } if (newListing.IsLandDetailsModified) { if (newListing.LandDetails == null) { LandDetails = null; } else { if (LandDetails == null) { LandDetails = new LandDetails(); } if (newListing.LandDetails.IsModified) { LandDetails.Copy(newListing.LandDetails); } IsLandDetailsModified = true; } } if (newListing.IsFeaturesModified) { if (newListing.Features == null) { Features = null; } else { if (Features == null) { Features = new Features(); } if (newListing.Features.IsModified) { Features.Copy(newListing.Features); } IsFeaturesModified = true; } } if (newListing.IsLinksModified) { Links = newListing.Links == null ? null : new List <string>(newListing.Links); } }
private static IList<Inspection> ExtractInspectionTimes(XElement document) { document.ShouldNotBe(null); var inspectionTimes = document.Element("inspectionTimes"); if (inspectionTimes == null) { return null; } var inspectionElements = inspectionTimes.Elements("inspection").ToList(); if (!inspectionElements.Any()) { return null; } var inspections = new List<Inspection>(); foreach (var inspectionElement in inspectionElements) { // -Some- xml data only contains empty inspects. (eg. RentalExpress). if (inspectionElement == null || inspectionElement.IsEmpty || string.IsNullOrWhiteSpace(inspectionElement.Value)) { continue; } // Only the following format is accepted as valid: DD-MON-YYYY hh:mm[am|pm] to hh:mm[am|pm] // REF: http://reaxml.realestate.com.au/docs/reaxml1-xml-format.html#inspection var data = inspectionElement.Value.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries); if (data.Length < 4) { throw new Exception("Inspection element has an invald Date/Time value. Element: " + inspectionElement); } DateTime inspectionStartsOn, inspectionEndsOn; DateTime.TryParse(string.Format("{0} {1}", data[0], data[1]), out inspectionStartsOn); DateTime.TryParse(string.Format("{0} {1}", data[0], data[3]), out inspectionEndsOn); if (inspectionStartsOn == DateTime.MinValue || inspectionEndsOn == DateTime.MinValue) { throw new Exception("Inspection element has an invalid Date/Time value. Element: " + inspectionElement); } var newInspection = new Inspection { OpensOn = inspectionStartsOn, ClosesOn = inspectionEndsOn == inspectionStartsOn ? (DateTime?) null : inspectionEndsOn }; // Just to be safe, lets make sure do get dupes. if (!inspections.Contains(newInspection)) { inspections.Add(newInspection); } } return inspections.Any() ? inspections.OrderBy(x => x.OpensOn).ToList() : null; }