/// <summary> /// Validates user input /// </summary> /// <param name="DTO"></param> /// <returns></returns> internal bool Validate(PxUpload_DTO DTO) { if (!ParsePxFile(DTO)) { LogValidatorErrors(ParseValidatorResult); ResponseError = Error.GetValidationFailure(ParseValidatorResult.Errors); return(true); } if (!PxSchemaIsValid()) { LogValidatorErrors(SchemaValidatorResult); ResponseError = Error.GetValidationFailure(SchemaValidatorResult.Errors); return(true); } MatrixData = GetMatrixData(PxDoc); if (!PxIntegrityIsValid(MatrixData)) { LogValidatorErrors(IntegrityValidatorResult); ResponseError = Error.GetValidationFailure(IntegrityValidatorResult.Errors); return(true); } if (!PxSettingsAreValid(MatrixData)) { LogValidatorErrors(SettingsValidatorResult); ResponseError = Error.GetValidationFailure(SettingsValidatorResult.Errors); return(true); } ResponseData = API.JSONRPC.success; return(true); }
/// <summary> /// Parses the px file /// </summary> /// <param name="dto"></param> /// <returns></returns> internal bool ParsePxFile(PxUpload_DTO dto) { ParseValidatorResult = new ValidationResult(); try { PxDoc = PxStatEngine.ParsePxInput(dto.MtrInput); } catch (Exception e) { ParseValidatorResult.Errors.Add(new ValidationFailure("MtrInput", Label.Get("px.parse"))); ParseValidatorResult.Errors.Add(new ValidationFailure("MtrInput", e.Message)); } return(PxDoc != null); }
/// <summary> /// Gets matrix data from a serialized matrix file /// </summary> /// <param name="doc"></param> /// <returns></returns> private Matrix GetMatrixData(PxDocument doc, PxUpload_DTO dto = null) { return(new Matrix(doc, dto)); }
/// <summary> /// Validates user input /// </summary> /// <param name="DTO"></param> /// <returns></returns> internal bool Validate(PxUpload_DTO DTO) { if (!ParsePxFile(DTO)) { LogValidatorErrors(ParseValidatorResult); ResponseError = Error.GetValidationFailure(ParseValidatorResult.Errors); return(false); } if (!PxSchemaIsValid()) { LogValidatorErrors(SchemaValidatorResult); ResponseError = Error.GetValidationFailure(SchemaValidatorResult.Errors); return(false); } MatrixData = GetMatrixData(PxDoc, DTO); if (MatrixData.MainSpec.requiresResponse) { return(false); } if (MatrixData.OtherLanguageSpec != null) { foreach (var spec in MatrixData.OtherLanguageSpec) { if (spec.requiresResponse) { return(false); } } } if (!PxIntegrityIsValid(MatrixData)) { LogValidatorErrors(IntegrityValidatorResult); ResponseError = Error.GetValidationFailure(IntegrityValidatorResult.Errors); return(false); } if (!PxSettingsAreValid(MatrixData)) { LogValidatorErrors(SettingsValidatorResult); ResponseError = Error.GetValidationFailure(SettingsValidatorResult.Errors); return(false); } MatrixData.ValidateMyMaps(true); if (MatrixData.MainSpec.ValidationErrors != null) { ResponseError = Error.GetValidationFailure(MatrixData.MainSpec.ValidationErrors); return(false); } if (MatrixData.OtherLanguageSpec != null) { foreach (var spec in MatrixData.OtherLanguageSpec) { if (spec.ValidationErrors != null) { ResponseError = Error.GetValidationFailure(MatrixData.MainSpec.ValidationErrors); return(false); } } } ResponseData = API.JSONRPC.success; return(true); }