public static PartnerInvitationStatusType From(BL_PartnerInvitationStatusTypeEnum bl_PartnerInvitationStatusTypeEnum) { { switch (bl_PartnerInvitationStatusTypeEnum) { case BL_PartnerInvitationStatusTypeEnum.Accepted: return(PartnerInvitationStatusType.Accepted); case BL_PartnerInvitationStatusTypeEnum.Completed: return(PartnerInvitationStatusType.Completed); case BL_PartnerInvitationStatusTypeEnum.Declined: return(PartnerInvitationStatusType.Declined); case BL_PartnerInvitationStatusTypeEnum.NotApplicable: return(PartnerInvitationStatusType.Completed); case BL_PartnerInvitationStatusTypeEnum.Sent: return(PartnerInvitationStatusType.Sent); case BL_PartnerInvitationStatusTypeEnum.Submitted: return(PartnerInvitationStatusType.Submitted); case BL_PartnerInvitationStatusTypeEnum.Unknown: return(PartnerInvitationStatusType.Unknown); default: throw new BusinessLogicException(ValidationErrorCode.NotFound, "", $"Unable to map enum of type '{nameof(bl_PartnerInvitationStatusTypeEnum)}' with value '{bl_PartnerInvitationStatusTypeEnum}' to dto value"); } } }
public async Task SetPartnerInvitationStatus(string invitationId, BL_PartnerInvitationStatusTypeEnum newInvitationStatus) { var userProfile = await _repo.GetUserProfile_byInvitationId(invitationId); if (validator.CanSetPartnerInviteStatus(userProfile, newInvitationStatus, out var validationResult)) { switch (newInvitationStatus) { case BL_PartnerInvitationStatusTypeEnum.Accepted: userProfile.PartnerInvitation.InvitationStatus = PartnerInvitationStatusTypeEnum.Accepted; break; case BL_PartnerInvitationStatusTypeEnum.Declined: userProfile.PartnerInvitation.InvitationStatus = PartnerInvitationStatusTypeEnum.Declined; break; case BL_PartnerInvitationStatusTypeEnum.Completed: userProfile.PartnerInvitation.InvitationStatus = PartnerInvitationStatusTypeEnum.Completed; break; default: validationResult.Failures.Add(new ValidationFailure { Code = ValidationErrorCode.ValidationFailure_PartnerInvitationCannotSetStatus, DebugMessage = $"Invitation Status cannot be set. No mapping exists for Invitation Status from '{userProfile.PartnerInvitation.InvitationStatus}' to '{newInvitationStatus}'", EntityJsonRepresentation = Validator.GetJson(userProfile), EntityIdInError = userProfile.Id, }); break; } } if (validationResult.IsValid) { userProfile.DTLastUpdated = DateTimeOffset.UtcNow; await _repo.SetUserProfileAsync(userProfile); } else { throw new BusinessLogicException(validationResult); } }
public bool CanSetPartnerInviteStatus(UserProfile entity, BL_PartnerInvitationStatusTypeEnum newStatus, out ValidationResult results) { results = new ValidationResult(); if (entity == null) { results.Failures.Add(new ValidationFailure { Code = ValidationErrorCode.EntityIsNull, DebugMessage = $"Invitation Status cannot be set since the UserProfile is null", }); return(false); } if (entity.PartnerInvitation == null) { results.Failures.Add(new ValidationFailure { Code = ValidationErrorCode.ValidationFailure_PartnerInvitationCannotSetStatus, DebugMessage = $"Invitation Status cannot be set since the PartnerInvitation is null", EntityJsonRepresentation = GetJson(entity), EntityIdInError = entity.Id, }); return(false); } if (newStatus == BL_PartnerInvitationStatusTypeEnum.Accepted && ( entity.PartnerInvitation.InvitationStatus == PartnerInvitationStatusTypeEnum.Accepted || entity.PartnerInvitation.InvitationStatus == PartnerInvitationStatusTypeEnum.Declined || entity.PartnerInvitation.InvitationStatus == PartnerInvitationStatusTypeEnum.Sent || entity.PartnerInvitation.InvitationStatus == PartnerInvitationStatusTypeEnum.Submitted )) { return(true); } if (newStatus == BL_PartnerInvitationStatusTypeEnum.Declined && ( entity.PartnerInvitation.InvitationStatus == PartnerInvitationStatusTypeEnum.Accepted || entity.PartnerInvitation.InvitationStatus == PartnerInvitationStatusTypeEnum.Declined || entity.PartnerInvitation.InvitationStatus == PartnerInvitationStatusTypeEnum.Sent || entity.PartnerInvitation.InvitationStatus == PartnerInvitationStatusTypeEnum.Submitted )) { return(true); } if (newStatus == BL_PartnerInvitationStatusTypeEnum.Completed && ( entity.PartnerInvitation.InvitationStatus == PartnerInvitationStatusTypeEnum.Accepted )) { return(true); } results.Failures.Add(new ValidationFailure { Code = ValidationErrorCode.ValidationFailure_PartnerInvitationCannotSetStatus, DebugMessage = $"Invitation Status cannot be set. Status of invitation is not valid and cannot be set from {entity.PartnerInvitation.InvitationStatus} to {newStatus}", EntityJsonRepresentation = GetJson(entity), EntityIdInError = entity.Id, }); return(false); }