public async Task <bool> UserHasAppartaments(string userId) { UserAppartament appartaments = await _unitOfWork.Repository <UserAppartament>() .GetAll() .FirstOrDefaultAsync(a => a.UserId == userId); return(appartaments != null); }
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); }