Example #1
0
        public async Task <Contact> AddContact(Contact contact)
        {
            using (_unitOfWork)
            {
                var res = await _unitOfWork.contactRepository.GetContactByEmail(contact);

                contact.ContactAlreadyExists(res != null);

                if (contact.Invalid)
                {
                    return(contact);
                }

                await _unitOfWork.contactRepository.Add(contact);

                _unitOfWork.Commit();

                var activeContact = new ActivateContact(contact.id);
                await _unitOfWork.activateContactRepository.Add(activeContact);

                _unitOfWork.Commit();
            }

            return(contact);
        }
Example #2
0
        public async Task <IActionResult> ActivateContact([FromBody] ActivateContact activateContact)
        {
            if (activateContact == null)
            {
                return(BadRequest(new[] { new { property = "activatecontact", message = "SyntaxError: JSON.parse: Your json is wrong" } }));
            }

            if (activateContact.Invalid)
            {
                return(BadRequest(activateContact.Notifications.ToArray()));
            }

            activateContact = await _userService.ActivateContact(activateContact);

            if (activateContact == null)
            {
                return(BadRequest(new[] { new { property = "activatecontact", message = "Invalid code for activation" } }));
            }

            return(Ok(new { activateContact.hash }));
        }
Example #3
0
        public async Task <ActivateContact> ActivateContact(ActivateContact activateContact)
        {
            using (_unitOfWork)
            {
                var lst = await _unitOfWork.activateContactRepository.GetActivateContactByContact(activateContact);

                var res = lst.Where(x => x.activation_date == null).OrderByDescending(x => x.register_date).FirstOrDefault();

                if (res == null || !res.Activate(activateContact.activation_code))
                {
                    return(null);
                }

                //cria uma nova pessoa na base
                var person = new Person(res.hash);
                await _unitOfWork.personRepository.Add(person);

                _unitOfWork.Commit();

                //vincula a nova pessoa a ativação
                res.SetPerson(person.id);
                await _unitOfWork.activateContactRepository.Update(res);

                activateContact = res;
                _unitOfWork.Commit();

                //limpa as ativações anteriores
                var person_ids = lst.Where(x => x.person_id != activateContact.person_id).Select(x => x.person_id);
                await _unitOfWork.activateContactRepository.CleanActivateContact(activateContact.contact_id, person_ids);

                _unitOfWork.Commit();
                await _unitOfWork.personRepository.CleanPerson(person_ids);

                _unitOfWork.Commit();
            }

            return(activateContact);
        }