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 ServiceResult CancelInviteSitter(int parentId, string sitterMobilePhone, bool isSitterDecline = false) { var result = new ServiceResult(); if (string.IsNullOrWhiteSpace(sitterMobilePhone)) { result.Message = "Mobile phone is required"; return result; } else if (!PhoneUtil.IsValidPhoneNumber(sitterMobilePhone)) { result.Message = "Mobile phone is not a valid phone"; return result; } sitterMobilePhone = PhoneUtil.CleanAndEnsureCountryCode(sitterMobilePhone); var p = _parentDal.GetById(parentId); if (p == null) { result.Message = "Parent not found"; return result; } var invite = p.InviteToSignup.FirstOrDefault(m => m.MobilePhone == sitterMobilePhone); if (invite == null) { result.Message = "Unable to cancel invite, mobile phone not found."; return result; } if (isSitterDecline) { invite.InviteStatus = InvitationState.Declined; } else { p.InviteToSignup.Remove(invite); } _parentDal.Update(p); result.IsSuccess = true; return result; }
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; }