Ejemplo n.º 1
0
        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);
        }