private bool ValidateClaimMapping(string incomingClaimType, string incomingValue, Role role, string organization, ClaimMappingRepository repository)
        {
            bool valid = true;

            if (string.IsNullOrEmpty(incomingClaimType))
            {
                this.ViewData.ModelState.AddModelError("IncomingClaimType", @"The Incoming Claim Type field is required.");
                valid = false;
            }

            if (string.IsNullOrEmpty(incomingValue))
            {
                this.ViewData.ModelState.AddModelError("IncomingValue", @"The Incoming Value field is required.");
                this.ModelState.SetModelValue("IncomingValue",
                                              new ValueProviderResult(this.ValueProvider.GetValue("IncomingValue") != null ? this.ValueProvider.GetValue("IncomingValue").AttemptedValue : string.Empty, string.Empty, CultureInfo.CurrentCulture));
                valid = false;
            }

            if (role == null)
            {
                this.ViewData.ModelState.AddModelError("RoleRequired", @"The OutputRole field is required.");
                valid = false;
            }
            else
            {
                var existingMapping = repository.GetClaimMapping(incomingClaimType, incomingValue, role, organization);
                if (existingMapping != null)
                {
                    this.ViewData.ModelState.AddModelError("DuplicatedMapping", @"A Claim Mapping already exists for this parameters.");
                    valid = false;
                }
            }

            return(valid);
        }