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); }
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 })); }
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); }