public IActionResult ChangeRoomHangingStatus(
            ChangeRoomHangingStatusModel model)
        {
            Room entity = null;

            if (model.Code != null)
            {
                entity = _service.Rooms.Code(model.Code).FirstOrDefault();
                if (entity == null)
                {
                    return(NotFound(AppResult.NotFound()));
                }
            }
            var validationData = _service.ValidateChargeRoomHangingStatus(User, entity, model);

            if (!validationData.IsValid)
            {
                return(BadRequest(AppResult.FailValidation(data: validationData)));
            }
            if (entity != null && _service.ChangeRoomHangingStatus(entity, model.Hanging, UserId))
            {
                context.SaveChanges();
            }
            else
            {
                _service.ReleaseHangingRoomByHangingUserId(model.ReleaseHangingUserId);
                context.SaveChanges();
            }
            return(NoContent());
        }
        public ValidationData ValidateChargeRoomHangingStatus(
            ClaimsPrincipal principal,
            Room entity, ChangeRoomHangingStatusModel model)
        {
            var validationData = new ValidationData();
            var userId         = principal.Identity.Name;
            var now            = DateTime.UtcNow;

            if (entity != null)
            {
                if (entity.HangingEndTime > now && model.Hanging)
                {
                    validationData.Fail(mess: "Room is already hanged", AppResultCode.FailValidation);
                }
            }
            return(validationData);
        }