Esempio n. 1
0
        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);
            }
        }
Esempio n. 3
0
        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);
        }