public async Task <IActionResult> OnGetAsync(string data1, string data2)
        {
            if (string.IsNullOrEmpty(data1) || string.IsNullOrEmpty(data2))
            {
                return(RedirectToPage("/Index"));
            }
            var ownerId = CryptHelper.Rijndael.Decrypt(data1, _configuration["QrCode:Key"]);
            var userId  = CryptHelper.Rijndael.Decrypt(data2, _configuration["QrCode:Key"]);

            var owner = await _userManager.FindByIdAsync(ownerId);

            var user = await _userManager.FindByIdAsync(userId);

            if (user == null || owner == null)
            {
                return(NotFound($"Unable to load user with ID '{userId}'."));
            }

            var contact = await _UnitOfWork.ContactRepository.GetContact(ownerId, userId);

            contact.DateAccepted = DateTime.Now;
            contact.UserAccepted = EnumUserAccepted.ACCEPTED;
            await _UnitOfWork.ContactRepository.Update(contact);

            var invitation = await _UnitOfWork.InvitationRepository.GetInvitation(ownerId, userId);

            await _eventTrackingService.Create(new Shared.Functional.EventTrackingItem
            {
                Id          = Guid.NewGuid(),
                CreatedDate = DateTime.UtcNow,
                Category    = "contact",
                Key         = "confirmContact",
                UserId      = contact.OwnerId
            });

            if (invitation != null)
            {
                invitation.InvitationStat = (int)EnumUserAccepted.ACCEPTED;
                await _UnitOfWork.InvitationRepository.Update(invitation);
            }

            var contact2 = await _UnitOfWork.ContactRepository.GetContact(userId, ownerId);

            if (contact2 == null)
            {
                contact2              = new Contact();
                contact2.OwnerId      = contact.UserId;
                contact2.UserId       = contact.OwnerId;
                contact2.DateAccepted = DateTime.Now;
                contact2.UserAccepted = EnumUserAccepted.ACCEPTED;
                await _UnitOfWork.ContactRepository.Add(contact2);

                var invitation2 = await _UnitOfWork.InvitationRepository.GetInvitation(userId, ownerId);

                if (invitation2 != null)
                {
                    invitation.InvitationStat = (int)EnumUserAccepted.ACCEPTED;
                    await _UnitOfWork.InvitationRepository.Update(invitation);
                }
                else
                {
                    invitation2 = new Shared.Functional.Invitation
                    {
                        OwnedId        = contact.UserId,
                        ContactId      = contact.OwnerId,
                        CreatedDate    = DateTime.UtcNow,
                        InvitationStat = (int)EnumUserAccepted.ACCEPTED,
                        Id             = Guid.NewGuid()
                    };

                    await _UnitOfWork.InvitationRepository.Add(invitation2);

                    await _eventTrackingService.Create(new Shared.Functional.EventTrackingItem
                    {
                        Id          = Guid.NewGuid(),
                        CreatedDate = DateTime.UtcNow,
                        Category    = "contact",
                        Key         = "confirmContact",
                        UserId      = contact2.OwnerId
                    });
                }
            }

            DisplayName = user.DisplayName;

            return(Page());
        }
Пример #2
0
        public async Task <ActionResult <Contact> > AcceptInvitation(Guid contactId, Contact link)
        {
            if (contactId == Guid.Empty)
            {
                return(BadRequest());
            }

            if (contactId != link.Id)
            {
                return(BadRequest());
            }

            var contact = await _UnitOfWork.ContactRepository.GetContact(contactId);

            if (contact == null)
            {
                return(NotFound());
            }

            contact.DateAccepted = DateTime.Now;
            contact.UserAccepted = EnumUserAccepted.ACCEPTED;

            await _UnitOfWork.ContactRepository.Update(contact);

            var invitation = await _UnitOfWork.InvitationRepository.GetInvitation(contact.OwnerId, contact.UserId);

            await _eventTrackingService.Create(new Shared.Functional.EventTrackingItem
            {
                Id          = Guid.NewGuid(),
                CreatedDate = DateTime.UtcNow,
                Category    = "contact",
                Key         = "confirmContact",
                UserId      = contact.OwnerId
            });

            if (invitation != null)
            {
                invitation.InvitationStat = (int)EnumUserAccepted.ACCEPTED;
                await _UnitOfWork.InvitationRepository.Update(invitation);
            }

            var contact2 = await _UnitOfWork.ContactRepository.GetContact(contact.UserId, contact.OwnerId);

            if (contact2 == null)
            {
                contact2 = new Contact
                {
                    OwnerId      = contact.UserId,
                    UserId       = contact.OwnerId,
                    DateAccepted = DateTime.Now,
                    UserAccepted = EnumUserAccepted.ACCEPTED
                };

                await _UnitOfWork.ContactRepository.Add(contact2);

                var invitation2 = await _UnitOfWork.InvitationRepository.GetInvitation(contact.UserId, contact.OwnerId);

                if (invitation2 != null)
                {
                    invitation.InvitationStat = (int)EnumUserAccepted.ACCEPTED;
                    await _UnitOfWork.InvitationRepository.Update(invitation);
                }
                else
                {
                    invitation2 = new Shared.Functional.Invitation
                    {
                        OwnedId        = contact.UserId,
                        ContactId      = contact.OwnerId,
                        CreatedDate    = DateTime.UtcNow,
                        InvitationStat = (int)EnumUserAccepted.ACCEPTED,
                        Id             = Guid.NewGuid()
                    };

                    await _UnitOfWork.InvitationRepository.Add(invitation2);

                    await _eventTrackingService.Create(new Shared.Functional.EventTrackingItem
                    {
                        Id          = Guid.NewGuid(),
                        CreatedDate = DateTime.UtcNow,
                        Category    = "contact",
                        Key         = "confirmContact",
                        UserId      = contact2.OwnerId
                    });
                }
            }

            return(Ok(contact));
        }