/// <summary>
        ///
        /// </summary>
        /// <param name="feedback"></param>
        /// <returns></returns>
        public async Task <Feedback> SaveFeedbackAsync(Feedback feedback)
        {
            if (feedback == null)
            {
                throw new FriendlyException(FriendlyExceptionType.InvalidModelState);
            }
            Logger.WriteDebug("Feedback:" + JsonConvert.SerializeObject(feedback));
            if (!LoggedIn)
            {
                var restroom = await RestroomUnitOfWork.GetRestroomAsync(feedback.RestroomId);

                if (!restroom.IsPublic)
                {
                    throw new FriendlyException(FriendlyExceptionType.AccessDenied);
                }
            }

            if (LoggedIn && feedback.Badge != ClaimsPrincipal.Current.Identity.Name)
            {
                throw new UnauthorizedAccessException("You can't post a feedback for someone else.");
            }
            if (feedback.Rating < 3 && string.IsNullOrWhiteSpace(feedback.FeedbackText))
            {
                throw new FriendlyException(FriendlyExceptionType.FeedbackTextRequired);
            }
            var result = await RestroomUnitOfWork.SaveFeedbackAsync(feedback.ToDataAccess());

            return(Feedback.FromDataAccess(result));
        }