示例#1
0
        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");
                }
            }
        }
示例#2
0
        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);
            }
        }
示例#3
0
        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);
        }