public virtual async Task UpgradeCustomerUserGroupAsync(string userId, TblUserGroups userGroup, DateTime?startDate = null) { if (startDate == null) { startDate = DateTime.Now; } var subscriptionExpireDate = startDate?.AddTimePeriodToDateTime(userGroup.SubscriptionExpirationPeriodType, userGroup.SubscriptionExpirationTime); await _dbContext.Users.Where(p => p.Id == userId).UpdateAsync(p => new TblUsers() { SubscriptionDate = startDate, SubscriptionExpireDate = subscriptionExpireDate, UserGroupId = userGroup.Id }); _eventPublisher.Publish(new CustomerUserGroupChangeEvent(userId, userGroup, startDate)); }