public async Task BlockMatch(string profileId, string matchId) { var match = await _matchesRepository.GetMatch(matchId); var matchProfileId = match.ProfileMatches.FirstOrDefault(pm => pm.ProfileId != profileId)?.ProfileId ?? string.Empty; var pairing = await _pairingsRepository.GetPairing(profileId, matchProfileId); if (pairing != null) { pairing.UpdatedAt = DateTime.UtcNow; pairing.IsLiked = false; pairing.IsBlocked = true; await _pairingsRepository.UpsertPairingData(pairing); } else { var newPairing = new PairingEntity { Id = Guid.NewGuid().ToString(), ProfileId = profileId, PairedProfileId = matchProfileId, IsLiked = false, IsBlocked = true, UpdatedAt = DateTime.UtcNow }; pairing = newPairing; } await _matchesRepository.DeleteMatch(matchId); await _pairingsRepository.UpsertPairingData(pairing); }
public async Task BlockPairing(string profileId, string pairedProfileId) { var existingPairing = await _pairingsRepository.GetPairing(profileId, pairedProfileId); if (existingPairing != null) { existingPairing.UpdatedAt = DateTime.UtcNow; existingPairing.IsLiked = false; existingPairing.IsBlocked = true; await _pairingsRepository.UpsertPairingData(existingPairing); } else { var newPairing = new PairingEntity { Id = Guid.NewGuid().ToString(), ProfileId = profileId, PairedProfileId = pairedProfileId, IsLiked = false, IsBlocked = true, UpdatedAt = DateTime.UtcNow }; await _pairingsRepository.UpsertPairingData(newPairing); } }
public async Task <PairingEntity> UpsertPairingData(PairingEntity entity) { var pairing = await _db.FindAsync <PairingEntity>(entity.Id); if (pairing == null) { _db.Add <PairingEntity>(entity); } else { _db.Update <PairingEntity>(entity); } await _db.SaveChangesAsync(); return(entity); }
public async Task <MatchResult> SetPairingDescision(string profileId, string pairedProfileId, PairingDecision decision) { var existingPairing = await _pairingsRepository.GetPairing(profileId, pairedProfileId); if (existingPairing != null) { existingPairing.UpdatedAt = DateTime.UtcNow; existingPairing.IsLiked = decision == PairingDecision.Liked; await _pairingsRepository.UpsertPairingData(existingPairing); } else { var newPairing = new PairingEntity { Id = Guid.NewGuid().ToString(), ProfileId = profileId, PairedProfileId = pairedProfileId, IsLiked = decision == PairingDecision.Liked, UpdatedAt = DateTime.UtcNow }; await _pairingsRepository.UpsertPairingData(newPairing); } var isMatch = await _pairingsRepository.CheckIfMatch(profileId, pairedProfileId); if (isMatch) { var existingMatch = (await _matchesRepository.FindMatch(profileId, pairedProfileId)); if (existingMatch == null) { var matchGuid = Guid.NewGuid().ToString(); var match = new MatchEntity { Id = matchGuid, MatchedAt = DateTime.UtcNow, ProfileMatches = new List <ProfileMatchEntity> { new ProfileMatchEntity { ProfileId = profileId, MatchId = matchGuid }, new ProfileMatchEntity { ProfileId = pairedProfileId, MatchId = matchGuid } }, MatchContactPreferences = new List <MatchContactPreferenceEntity> { new MatchContactPreferenceEntity { Id = Guid.NewGuid().ToString(), MatchId = matchGuid, ProfileId = profileId }, new MatchContactPreferenceEntity { Id = Guid.NewGuid().ToString(), MatchId = matchGuid, ProfileId = pairedProfileId } } }; await _matchesRepository.UpsertMatch(match); } } var matchResult = new MatchResult { ProfileId = profileId, PairedProfileId = pairedProfileId, IsMatch = isMatch }; return(matchResult); }