//[AuthorizeRbac("accounts:read")]
 public async Task <IActionResult> GetSubscription(int accountId, int subscriptionId, [FromBody] UpdateSubscriptionDto subscriptionDto)
 {
     return(Ok(await _updateSubscription.UpdateSubscriptionAsync(accountId, subscriptionId, subscriptionDto)));
 }
        public virtual async Task <SubscriptionDto> UpdateSubscriptionAsync(int accountId, int subscriptionId, UpdateSubscriptionDto subscriptionDto)
        {
            var validationErrors = new List <ValidationResult>();

            Utils.ValidateDto(subscriptionDto, validationErrors);

            try
            {
                var subscription = await Utils.GetSubscriptionAsync(_db, accountId, subscriptionId);

                subscription.Name = !string.IsNullOrEmpty(subscriptionDto.SubscriptionName)
                    ? subscriptionDto.SubscriptionName
                    : subscription.Name;

                subscription.Description = !string.IsNullOrEmpty(subscriptionDto.Description)
                    ? subscriptionDto.Description
                    : subscription.Description;

                subscription.Tags = subscriptionDto.Tags != null
                    ? JsonConvert.SerializeObject(subscriptionDto.Tags)
                    : subscription.Description;

                subscription.OrganizationalUnit = !string.IsNullOrEmpty(subscriptionDto.OrganizationalUnit)
                    ? subscriptionDto.OrganizationalUnit
                    : subscription.OrganizationalUnit;

                _db.Entry(subscription).State = EntityState.Modified;

                await _db.SaveChangesAsync();

                return(_mapper.Map <SubscriptionDto>(subscription));
            }
            catch (DbException e)
            {
                throw new PersistenceException($"An error occurred while reading an IdentityProvider ({nameof(accountId)} = {accountId}, {nameof(subscriptionId)} = {subscriptionId}, {nameof(subscriptionDto)} = {JsonConvert.SerializeObject(subscriptionDto)})", e);
            }
        }