private void ValidateInvite(InviteToSignup sitterInvite, ServiceResult result) { if (string.IsNullOrWhiteSpace(sitterInvite.MobilePhone)) { result.Message = "Mobile phone is required"; } else if (!PhoneUtil.IsValidPhoneNumber(sitterInvite.MobilePhone)) { result.Message = "Mobile phone is not a valid phone"; } }
public void ProcessSignupInviteConversation(TxtMsgInbound msgInbound, TxtMsgAwaitingResponse awaiting, AppUser user) { string mobileToInvite = PhoneUtil.CleanAndEnsureCountryCode(msgInbound.Message); if (MessageUtility.IsCancelRequested(msgInbound)) { _omm.SendFeedbackToInboundMessageAndDeleteAwaiting(msgInbound, string.Format("Ok, invitation cancelled."), user.Id, awaiting); return; } if (!PhoneUtil.IsValidPhoneNumber(mobileToInvite)) { _omm.SendFeedbackToInboundMessage(msgInbound, string.Format("'{0}' is not a valid mobile number to invite to signup for mysitterhub.com. Please enter 10 digit number. Or say 'cancel'.", msgInbound.Message), user.Id); return; } int parentId = awaiting.WaitingForUserId; AppUser parentUser = new AppUserDal().GetById(parentId); if (parentUser.UserRole != UserRole.Parent) { //STEP - make sure user is a Parent, if not say only parents can invite sitters. _omm.SendFeedbackToInboundMessage(msgInbound, MessageTemplates.OnlyParentsCanSendSignupInvites(), user.Id); } else { //STEP - confirm sending invite _omm.SendFeedbackToInboundMessage(msgInbound, "Sending invite to " + mobileToInvite, user.Id); var sitterInvite = new InviteToSignup {MobilePhone = mobileToInvite}; ServiceResult result = new ParentRepository().AddSitterInviteByMobile(parentId, sitterInvite); if (!result.IsSuccess) { _omm.SendFeedbackToInboundMessage(msgInbound, "Error while sending invite to " + mobileToInvite + " please try again.", user.Id); } } _txtMsgAwaitingResponseDal.DeleteAwaiting(awaiting.Id); }
public ServiceResult AddSitterInviteByMobile(int parentId, InviteToSignup sitterInvite) { var result = new ServiceResult(); // STEP - Validate ValidateInvite(sitterInvite, result); if (result.Message != null) return result; // STEP - Populate rest of fields sitterInvite.MobilePhone = PhoneUtil.CleanAndEnsureCountryCode(sitterInvite.MobilePhone); sitterInvite.InviteDate = TimeUtil.GetCurrentUtcTime(); sitterInvite.InviteStatus = InvitationState.InvitePending; // STEP - Get Parent Parent p = _parentDal.GetById(parentId); if (p == null) throw new AppException("Parent not found with ID " + parentId); if (p.InviteToSignup == null) p.InviteToSignup = new List<InviteToSignup>(); if (p.Sitters == null) p.Sitters = new List<ParentMySitter>(); // STEP - Check if Invited mobile is already in Parent - MySitters. AppUser usr = _appUserDal.GetByMobile(sitterInvite.MobilePhone); if (usr != null) // Invited Mobile does not belong to an existing user. { if (usr.UserRole != UserRole.Sitter) { result.Message = "Invited User is parent which is not supported at this time."; return result; } // STEP - Check if sitter already in parent mysitters foreach (ParentMySitter sid in p.Sitters) { Sitter sf = _sitterDal.GetById(sid.SitterId); if (sf != null && sf.User.MobilePhone == sitterInvite.MobilePhone) { result.Message = "Parent already has sitter in network with mobile " + sitterInvite.MobilePhone; return result; } } } if (p.InviteToSignup.Any(m => m.MobilePhone == sitterInvite.MobilePhone)) { result.Message = string.Format("Mobile '{0}' has already been invited.", sitterInvite.MobilePhone); return result; } p.InviteToSignup.Add(sitterInvite); // STEP - Persist _parentDal.Update(p); // STEP - Mark as successfully added result.IsSuccess = true; return result; }