public async Task <bool> UserHasAppartaments(string userId)
        {
            UserAppartament appartaments = await _unitOfWork.Repository <UserAppartament>()
                                           .GetAll()
                                           .FirstOrDefaultAsync(a => a.UserId == userId);

            return(appartaments != null);
        }
Exemple #2
0
        public async Task <bool> SellAppartament(int id, ClaimsPrincipal claims)
        {
            User user = await _userManager.FindByEmailFromClaimsPrincipals(claims);

            UserAppartament appartament = await _userAppartamentRepo.GetAll()
                                          .Include(x => x.Appartament)
                                          .FirstOrDefaultAsync(x => x.AppartamentId == id);

            return(await _buildingService.SellAppartament(user, appartament));
        }
        public async Task <bool> SellAppartament(User user, UserAppartament appartament)
        {
            if (!await _userService.RecalculateMoney(user, appartament.Appartament.Cost))
            {
                return(false);
            }
            ;

            _unitOfWork.Repository <UserAppartament>().Delete(appartament);

            return(await _unitOfWork.Complete());
        }
        public async Task <ResultWithMessage> BuyAppartamentsAsync(User user, int appartamentId)
        {
            ResultWithMessage result = new ResultWithMessage(false);

            IGenericRepository <Appartament> appartamentRepo = _unitOfWork.Repository <Appartament>();

            AppartamentWithUsersSpecification appartamentSpec = new AppartamentWithUsersSpecification(appartamentId);

            Appartament appartament = await appartamentRepo.GetEntityWithSpec(appartamentSpec);

            if (appartament.Cost > user.Money)
            {
                result.Message = "You can`t buy this appartament. You need more money";
                return(result);
            }

            if (!await _userService.RecalculateMoney(user, appartament.Cost))
            {
                result.Message = "Cannot recalculate money";
                return(result);
            }

            UserAppartament ownerAppartament = new UserAppartament
            {
                UserId        = user.Id,
                AppartamentId = appartamentId
            };

            _unitOfWork.Repository <UserAppartament>()
            .Add(ownerAppartament);

            if (!await _unitOfWork.Complete())
            {
                result.Message = "Cannot complete operation please try later";
                return(result);
            }

            result.IsSuccess = true;
            result.Message   = "Congratulations! You bought new appartament";

            return(result);
        }