protected override Task ProcessHotelWorkItem(HotelWorkItem workItem, CancellationToken cancellationToken) { //1. Get the activities from the appacitive using the hotel article id. //2. Get the activities from the client database using the hotelid and supplierfamily //3. Compare two above list and detect which all activities are added/deleted/updated //4. Update/delete/add activities into the client database. IKey hotelKey = new AppacitiveDAL.HotelKey() { HotelArticleId = workItem.ArticleId, HotelId = Convert.ToInt64(workItem.HotelId), SupplierFamily = workItem.SupplierFamily }; IActivityDataProvider activityDataProvider = new ActivityDataProvider(); // Get Appacitive activities by HotelArticleId List <HotelActivity> sourceActivities = new AppacitiveDAL.DatabaseManager().GetHotelActivities(hotelKey); // Get Client DB activities by HotelArticleId List <HotelActivity> destinationActivities = activityDataProvider.GetHotelActivities(hotelKey); foreach (var sourceActivity in sourceActivities) { HotelActivity activity = destinationActivities.Find(x => x.Equals(sourceActivity)); if (activity == null) { // New Hotel Activity activityDataProvider.InsertHotelActivity(hotelKey, sourceActivity); } else { // Old Hotel Activity if (!activity.IsUpdated(sourceActivity)) { activityDataProvider.UpdateHotelActivity(hotelKey, sourceActivity); } destinationActivities.Remove(activity); } } destinationActivities.ForEach(x => activityDataProvider.DeleteHotelActivity(hotelKey, x)); return(null); }
protected override Task ProcessHotelWorkItem(HotelWorkItem workItem, CancellationToken cancellationToken) { IKey hotelKey = new AppacitiveDAL.HotelKey() { HotelArticleId = workItem.ArticleId, HotelId = Convert.ToInt64(workItem.HotelId), SupplierFamily = workItem.SupplierFamily }; IDescriptionDataProvider descriptionDataProvider = new DescriptionDataProvider(); // Get Appacitive descriptions by HotelArticleId List <HotelDescription> sourceDescriptions = new AppacitiveDAL.DatabaseManager().GetHotelDescriptions(hotelKey); // Get Client DB descriptions by HotelArticleId List <HotelDescription> destinationDescriptions = descriptionDataProvider.GetHotelDescriptions(hotelKey); foreach (var sourceDescription in sourceDescriptions) { HotelDescription description = destinationDescriptions.Find(x => x.Equals(sourceDescription)); if (description == null) { // New Hotel description descriptionDataProvider.InsertHotelDescription(hotelKey, sourceDescription); } else { // Old Hotel description if (!description.IsUpdated(sourceDescription)) { descriptionDataProvider.UpdateHotelDescription(hotelKey, sourceDescription); } destinationDescriptions.Remove(description); } } destinationDescriptions.ForEach(x => descriptionDataProvider.DeleteHotelDescription(hotelKey, x)); return(null); }
protected override Task ProcessHotelWorkItem(HotelWorkItem workItem, CancellationToken cancellationToken) { IKey hotelKey = new AppacitiveDAL.HotelKey() { HotelArticleId = workItem.ArticleId, HotelId = Convert.ToInt64(workItem.HotelId), SupplierFamily = workItem.SupplierFamily }; ISupplierHotelDataProvider supplierHotelDataProvider = new SupplierHotelDataProvider(); List <SupplierHotel> sourceSupplierHotels = new AppacitiveDAL.DatabaseManager().GetSupplierHotelIdsByHotelIdSupplierFamily(hotelKey); List <SupplierHotel> destinationSupplierHotels = supplierHotelDataProvider.GetSupplierHotels(hotelKey); foreach (var sourceSupplierHotel in sourceSupplierHotels) { SupplierHotel supplierHotel = destinationSupplierHotels.Find(x => x.Equals(sourceSupplierHotel)); if (supplierHotel == null) { // New Hotel SupplierHotel supplierHotelDataProvider.InsertSupplierHotel(hotelKey, sourceSupplierHotel); } else { // Old Hotel SupplierHotel if (!supplierHotel.IsUpdated(sourceSupplierHotel)) { supplierHotelDataProvider.UpdateSupplierHotel(hotelKey, sourceSupplierHotel); } destinationSupplierHotels.Remove(supplierHotel); } } destinationSupplierHotels.ForEach(x => supplierHotelDataProvider.DeleteSupplierHotel(hotelKey, x)); return(null); }