public async Task Update(eFormRentableItemPnDbContext dbContext)
        {
            RentableItem rentableItem = await dbContext.RentableItem.FirstOrDefaultAsync(x => x.Id == Id);

            if (rentableItem == null)
            {
                throw new NullReferenceException($"Could not find RentableItem with id {Id}");
            }

            rentableItem.Brand            = Brand;
            rentableItem.ModelName        = ModelName;
            rentableItem.RegistrationDate = RegistrationDate;
            rentableItem.VinNumber        = VinNumber;
            rentableItem.SerialNumber     = SerialNumber;
            rentableItem.PlateNumber      = PlateNumber;
            rentableItem.eFormId          = eFormId;

            if (dbContext.ChangeTracker.HasChanges())
            {
                rentableItem.UpdatedAt       = DateTime.Now;
                rentableItem.UpdatedByUserId = UpdatedByUserId;
                rentableItem.Version        += 1;

                await dbContext.RentableItemsVersion.AddAsync(MapVersion(rentableItem));

                await dbContext.SaveChangesAsync();
            }
        }
        public async Task Delete(eFormRentableItemPnDbContext dbContext)
        {
            RentableItem rentableItem = await dbContext.RentableItem.FirstOrDefaultAsync(x => x.Id == Id);

            if (rentableItem == null)
            {
                throw new NullReferenceException($"Could not find RentableItem with id {Id}");
            }

            rentableItem.WorkflowState = Constants.WorkflowStates.Removed;

            if (dbContext.ChangeTracker.HasChanges())
            {
                rentableItem.UpdatedAt       = DateTime.Now;
                rentableItem.UpdatedByUserId = UpdatedByUserId;
                rentableItem.Version        += 1;

                await dbContext.RentableItemsVersion.AddAsync(MapVersion(rentableItem));

                await dbContext.SaveChangesAsync();
            }
        }
        private RentableItemVersion MapVersion(RentableItem rentableItem)
        {
            RentableItemVersion rentableItemVersion = new RentableItemVersion
            {
                Brand            = rentableItem.Brand,
                ModelName        = rentableItem.ModelName,
                RegistrationDate = rentableItem.RegistrationDate,
                VinNumber        = rentableItem.VinNumber,
                SerialNumber     = rentableItem.SerialNumber,
                PlateNumber      = rentableItem.PlateNumber,
                CreatedAt        = rentableItem.CreatedAt,
                CreatedByUserId  = rentableItem.CreatedByUserId,
                UpdatedAt        = rentableItem.UpdatedAt,
                UpdatedByUserId  = rentableItem.UpdatedByUserId,
                Version          = rentableItem.Version,
                WorkflowState    = rentableItem.WorkflowState,
                RentableItemId   = rentableItem.Id,
                eFormID          = rentableItem.eFormId
            };

            return(rentableItemVersion);
        }