public async Task ApplyDepreciationToInventoryItems() { var currentTime = _timeService.GetCurrentTime(); _logger.LogInformation("ApplyDepreciationToInventoryItems() was initiated at " + currentTime); var allCurrentlyUsedInventoryItems = await _inventoryItemRepository.GetByStatus(false); var inventoryItemsToDepreciate = allCurrentlyUsedInventoryItems.Where(item => item.InventoryCategoryId != licenseCategoryId); try { foreach (var item in inventoryItemsToDepreciate) { var category = await _inventoryCategoryRepository.GetById(item.InventoryCategoryId); var serviceLifeInYears = (int)category.Deprecation; var serviceLifeInDays = _timeService.ConvertYearsToDays(serviceLifeInYears); var dailyDepreciation = (item.OriginalPrice - 1) / serviceLifeInDays; item.CurrentPrice -= (decimal)dailyDepreciation; await _inventoryItemRepository.Update(item); } } catch (Exception exception) { _logger.LogInformation(exception.ToString() + " occurred in ApplyDepreciationToInventoryItems() at " + currentTime); } _logger.LogInformation("ApplyDepreciationToInventoryItems() ended at " + currentTime); }