public async Task <IActionResult> CreateMessage(int propertyId, MessageForCreationDto messageForCreationDto)
        {
            messageForCreationDto.PropertyId = propertyId;

            var sender = await _repo.GetUser(messageForCreationDto.SenderId);

            if (sender == null)
            {
                return(BadRequest("Cound not find sender"));
            }

            var property = await _repo.GetProperty(messageForCreationDto.PropertyId);

            if (property == null)
            {
                return(BadRequest("Cound not find property"));
            }

            var message = _mapper.Map <Message>(messageForCreationDto);

            message.Sender = sender;

            _repo.Add(message);

            if (await _repo.SaveAll())
            {
                var messageToRetun = _mapper.Map <MessageToReturnDto>(message);
                return(CreatedAtRoute("GetMessage", new { propertyId, id = message.Id }, messageToRetun));
            }

            throw new Exception("Creation the message failed on save");
        }
        public async Task <IActionResult> RentProperty(int id, int userId)
        {
            var rent = await _repo.GetRent(userId, id);

            if (rent != null)
            {
                return(BadRequest("You already rent this property"));
            }

            if (await _repo.GetUser(userId) == null)
            {
                return(NotFound());
            }

            rent = new Models.Rent
            {
                UserId     = userId,
                PropertyId = id
            };

            _repo.Add <Models.Rent>(rent);

            if (await _repo.SaveAll())
            {
                return(Ok());
            }

            return(BadRequest("Failed to rent property"));
        }