public async Task <bool> Validate(IDynamicsClient dynamicsClient, Ministry siteMinderMinistry, ProgramArea siteMinderProgramArea) { // validate nested data exists if (Candidate == null || Contact == null) { return(false); } // validate required properties var requiredProperties = new string[] { ClientMinistry, ProgramArea, ScreeningType, Reason, Candidate.FirstName, Candidate.LastName, Candidate.Email, Candidate.Position, Contact.FirstName, Contact.LastName, Contact.Email, }; if (requiredProperties.Any(string.IsNullOrWhiteSpace)) { return(false); } // validate range for candidate date of birth if (Candidate.DateOfBirth < DateTime.Today.AddYears(-100) || Candidate.DateOfBirth > DateTime.Today.AddYears(-10)) { return(false); } // validate ministry and program area match the values from siteminder if (ClientMinistry != siteMinderMinistry.Value || ProgramArea != siteMinderProgramArea.Value) { return(false); } // validate screening type matches one of the screening types for the program area if (!siteMinderProgramArea.ScreeningTypes.Any(t => t.Value == ScreeningType)) { return(false); } // validate screening reason matches one of the possible screening reasons var screeningReason = await DynamicsUtility.GetScreeningReasonAsync(dynamicsClient, Reason); if (screeningReason == null) { return(false); } return(true); }
public async Task <bool> Validate(IDynamicsClient dynamicsClient, Ministry dynamicsMinistry, ProgramArea dynamicsProgramArea, ScreeningType dynamicsScreeningType) { // validate nested data exists if (Candidate == null || Contact == null) { return(false); } // validate required properties var requiredProperties = new string[] { ClientMinistry, ProgramArea, ScreeningType, Reason, Candidate.FirstName, Candidate.LastName, Candidate.Email, Candidate.Position, Contact.FirstName, Contact.LastName, Contact.Email, }; if (requiredProperties.Any(string.IsNullOrWhiteSpace)) { return(false); } // validate range for candidate date of birth if (Candidate.DateOfBirth < DateTime.Today.AddYears(-100) || Candidate.DateOfBirth > DateTime.Today.AddYears(-10)) { return(false); } // validate submitted screening type matches an existing screening type in Dynamics which is valid for the user's org code if (dynamicsMinistry == null || dynamicsProgramArea == null || dynamicsScreeningType == null) { return(false); } // validate submitted ministry and program area match the associated entities in Dynamics for the submitted screening type if (ClientMinistry != dynamicsMinistry.Value || ProgramArea != dynamicsProgramArea.Value) { return(false); } // validate screening reason matches one of the possible screening reasons var screeningReason = await DynamicsUtility.GetScreeningReasonAsync(dynamicsClient, Reason); if (screeningReason == null) { return(false); } return(true); }