public async Task UpdateBankHolidaysAsync() { var client = new RestClient(_config.Url); var request = new RestRequest(); var response = await client.ExecuteTaskAsync <BankHolidays.BankHolidaysData>(request); if (!response.IsSuccessful) { throw new Exception($"Error getting list of bank holidays from url:{_config.Url}. Error:{response.ErrorMessage}"); } if (!response.Data.EnglandAndWales.Events.Any()) { throw new Exception($"Expected a non-empty list of bank holidays from url:{_config.Url}"); } var bankHolidaysFromApi = new BankHolidays { Data = response.Data }; if (await HasBankHolidayDataChanged(bankHolidaysFromApi)) { await _referenceDataWriter.UpsertReferenceData(bankHolidaysFromApi); _logger.LogInformation($"Upserted bank holidays into ReferenceData store. Last England and Wales date:{bankHolidaysFromApi.Data.EnglandAndWales.Events.Last().Date}"); } else { _logger.LogInformation("ReferenceData not updated as there is no change."); } }
private async Task <bool> HasBankHolidayDataChanged(BankHolidays bankHolidaysFromApi) { var bankHolidaysFromDb = await _referenceDataReader.GetReferenceData <BankHolidays>(); if (bankHolidaysFromDb == null) { return(true); } var bankHolidaysFromApiJson = JsonConvert.SerializeObject(bankHolidaysFromApi.Data); var bankHolidaysFromDbJson = JsonConvert.SerializeObject(bankHolidaysFromDb.Data); var areEqual = JToken.DeepEquals(bankHolidaysFromApiJson, bankHolidaysFromDbJson); return(!areEqual); }